Możliwe jest otwarcie new-window
z ustawionym katalogiem roboczym na ten, w którym aktualnie jestem. Używam zsh , jeśli to ma znaczenie.
źródło
Możliwe jest otwarcie new-window
z ustawionym katalogiem roboczym na ten, w którym aktualnie jestem. Używam zsh , jeśli to ma znaczenie.
Począwszy od tmux 1.9 default-path
opcja została usunięta, więc trzeba użyć -c
opcji z new-window
i split-window
(na przykład przez ponowna konsolidacja c
, "
oraz %
powiązania obejmuje
-c '#{pane_current_path}'
). Szczegółowe informacje można znaleźć w niektórych innych odpowiedziach na to pytanie.
Odpowiednia funkcja pojawiła się w pnia SVN tmux na początku lutego 2012 r. W kompilacjach tmux zawierających ten kod wywoływane powiązania klawiszy tmuxnew-window
utworzą nowe okno z tym samym bieżącym katalogiem roboczym, co aktywne procesy bieżącego panelu (tak długo, jak default-path
sesja opcja jest pusta; jest domyślnie). To samo dotyczy panelu utworzonego przez split-window
polecenie, gdy jest wywoływane przez powiązanie.
Korzysta ze specjalnego kodu specyficznego dla platformy, dlatego obecnie obsługiwane są tylko niektóre systemy operacyjne: Darwin (OS X), FreeBSD, Linux, OpenBSD i Solaris.
Powinno to być dostępne w następnej wersji tmux (1.7?).
Z tmux 1.4 zwykle po prostu używam
tmux neww
w powłoce, która ma już żądany bieżący katalog roboczy.
Jeśli jednak przewiduję potrzebę utworzenia wielu okien z tym samym bieżącym katalogiem roboczym (lub chcę móc je uruchomić za pomocą zwykłego c
powiązania klawiszy <prefix> ), wówczas ustawiam default-path
opcję sesji za pomocą
tmux set-option default-path "$PWD"
w powłoce, która ma już żądany bieżący katalog roboczy (chociaż można to oczywiście zrobić z dowolnego katalogu i po prostu podać wartość).
Jeśli default-path
jest ustawiona na niepustą wartość, jej wartość zostanie użyta zamiast „dziedziczenia” bieżącego katalogu roboczego z wywołań wiersza poleceń z tmux neww
.
Tmux FAQ posiada wpis zatytułowany „Jak mogę otworzyć nowe okno w tym samym katalogu co bieżącym oknie?”, Który opisuje kolejne podejście; jest to jednak trochę skomplikowane.
<prefix>c
aby odczytać katalog roboczy bazowej instancji powłoki (jeśli istnieje) i ustawićdefault-path
przed uruchomieniemnew-window
. A może to zbyt wiele, by prosić o tmux :)/proc/PID/cwd
Linux)). Jest możliwe rozwiązanie częściowe w wpisu na tmux FAQ (ma rekord powłoki jego cwd kiedy drukuje wiersz, a następnie wiąże klucz, który rozpoczyna nową powłokę w nagranej katalogu).default-path
opcji sesji (jeśli jest ustawiona). Tmux FAQ posiada wpis opisujący sposób powiązać przycisk, który uruchamia nowe okno z CWD z uruchomionym Shell w bieżącym oknie ( „Jak mogę otworzyć nowe okno w tym samym katalogu co bieżącym oknie?”) , ale metoda jest dość skomplikowana. To samo prawdopodobnie można zrobić dlasplit-window
inew-session
(zamiastneww
).Bieżąca strona podręcznika Tmux (1.9a) zawiera opcjonalny
-c start-directory
parametr dla niektórych poleceń, w tymnew-window
isplit-window
. Zawiera także zmienną formatupane_current_path
, która odnosi się doCurrent path if available
.Łącząc je, możemy otworzyć nowe okno z bieżącym katalogiem roboczym, używając
new-window -c "#{pane_current_path}"
cytatu, jeśli bieżąca ścieżka zawiera spacje.
Jeśli chcesz podzielić bieżący panel pionowo, użyj
split-window -c "#{pane_current_path}"
lub, aby podzielić poziomo
split-window -h -c "#{pane_current_path}"
Aby domyślne powiązania otwierały nowe podziały i okna z bieżącym katalogiem roboczym, dodaj następujące elementy do swojego
.tmux.conf
."
Z okolic cytatów jest powiedzieć tmux nie powinien rozpocząć ciąg lecz wiążą "klucz.źródło
prefix
-:
, a następnie wpiszsource ~/.tmux.conf
tmux source-file .tmux.conf
.Tak, użyj
new-window -c "#{pane_current_path}"
. Możesz dodać następujące elementy, aby były~/.tmux.conf
trwałe (przyjmując domyślne skróty klawiszowe):default-path
Ustawienie ścieżka została usunięta z kodu przed i tmux autora zalecanych w tej wiadomości popełnienia pomocą jednej-c "#{pane_current_path}"
lub-c "$PWD
wnew-window
isplit-window
polecenia.Odpowiedziałem również w tym zduplikowanym pytaniu .
źródło
W najnowszych wersjach tmux (v1.8, ale może także w v1.7):
źródło
tmux split-window -v -c "$PWD"
$PWD
nie wydaje się działać dla mnie w tmux 1.9a. Musiałem użyćpane_current_path
zgodnie z sugestią powyżej.Inne odpowiedzi nie działają dla mnie, gdy próbuję umieścić je jako powiązania (konkretnie
tmux split-window -c
). Ale stworzyłem własne rozwiązanie, którego używam od ponad roku, które działa zarówno dla nowego okna, jak i dla podziałów:~/.bashrc
:~/.tmux.conf
:Działa przynajmniej z $ (tmux -V) 1.8. Zobacz nieskomentowane wiersze tutaj dla wersji działającej dla starszych tmux, które nie mają polecenia show-environment.
źródło
tmux zrobił to w wersji 1.8, ale w wersji 1.9 ta funkcja została usunięta na korzyść użycia
-c
flagi.Można to rozwiązać, ale ponownie powiązać,
new-window
ale w przypadku, gdy chcesz uruchomić coś innego, staje się to zbyt trudne: zamiast pisaćneww man tmux
będziesz musiał pisać,neww -c "#{pane_current_path}" man tmux
czego najprawdopodobniej nie chcesz.Istnieje mod tmux (jestem autorem), aby dodać odpowiedni język skryptowy do tmux, aby umożliwić używanie aliasów, wiązanie wielu poleceń w „trybie”, zmiennych, pętli itp. A także przywraca to zachowanie : nowe okna i panele są otwierane w bieżącym katalogu.
Można go zbudować ze źródeł tutaj: http://ershov.github.io/tmux/
źródło