Powiedz, że jesteś w folderze / very / cool / and / deeply / nested /. I chcesz otworzyć nową kartę terminala w tym samym folderze.
Jak byś to zrobił?
Używam Mac OS i Zsh.
Użyj Oh-My-Zsh i dodaj wtyczkę „osx” w swoim ~ / .zshrc, np .:
plugins=(osx)
Jeśli używasz aplikacji terminalowej OSX, musisz również dodać terminalapp
wtyczkę: kredyt
plugins=(osx terminalapp)
Jeśli korzystasz z iTerm, musisz ustawić opcję konfiguracji ( pamiętaj, że nie potrzebujesz wtyczek zsh, aby to działało ): kredyt
Preferencje> Profile> Domyślne> Ogólne> Katalog roboczy> Użyj ponownie opcji katalogu poprzedniej sesji
To wszystko, co musisz zrobić!
rails
uruchomiony, i próbuję otworzyć nowe okno za pomocą polecenia n, kończę z powrotem w moim katalogu domowym.Inną opcją dostępną teraz w systemie Mac OS X Lion jest korzystanie z wbudowanej funkcji. Wykorzystuje „sekwencje specjalne”, aby znaleźć bieżący katalog. Dla mnie to działa, jeśli użyję tych poleceń w moim .zshrc:
możliwe jest również użycie
PS1
(dla Bash, z tej wiki ):gdzie
\e]2;
jest sekwencja ucieczki do drukowania rzeczy na pasku tytułowym. To wydaje się , że jest coraz Terminal.app swoje informacje stamtąd.Więcej informacji:
źródło
/etc/bashrc
zobaczysz, że obsługuje on także nowy kod ucieczki do informowania terminalu o katalogu roboczym za pomocąfile:
adresu URL, który może obsłużyć wszystkie prawidłowe nazwy ścieżek za pomocą kodowania procentowego (tytuły okna / karty mogą zawierać tylko podzbiór znaków ASCII ).\e]7;file://hostname/percent-encoded-pathname\a
chpwd () {print -Pn "\e]2; %~/ \a"}
?Jest to bardzo prosta wersja, której użyłem w bash, a także działa w zsh. Zapisuje bieżący folder w pliku po każdym poleceniu (nie szkodzi zbytnio IMO) i otwiera nowy terminal w zapisanym bieżącym folderze.
dodaj następujące .zshrc
źródło
gdirs wydaje się sposobem na prawie to zrobić: nowa karta, a następnie gdirs, aby wybrać głęboki katalog i voila. Moim pierwszym pomysłem było udostępnienie stosu katalogów wszystkim kartom i zrobienie cd ~ 1 po nowej karcie, ale nie mogę znaleźć, jak to zrobić, ponieważ wydaje się, że każda instancja zsh zachowuje swoją własną. Udostępnianie historii odbywa się za pomocą wspólnego pliku, więc może i tutaj można to zrobić ...
źródło
Tak to robisz w bashu.
Ten skrypt powłoki powie (cicho, dosłownie przy użyciu Applescript) Terminal.app, aby otworzyć nową kartę, a następnie przejść do bieżącego katalogu:
… Umieść powyższy skrypt powłoki w katalogu
$PATH
(np. / Usr / local / bin) i upewnij się, że jest wykonywalny:( źródło )
źródło
Jeśli chcesz teraz otworzyć tę nową kartę, bez zmiany plików konfiguracyjnych lub instalowania nowych wtyczek, uruchom to:
Następnie ręcznie otwórz nową kartę Terminal (za pomocą ⌘T), a na nowej karcie:
Ostrzeżenie : spowoduje to zastąpienie zawartości schowka systemowego.
Alternatywna, dłuższa metoda, która nie zastępuje schowka:
Otwórz nową kartę.
źródło
Zgodnie z powyższym komentarzem Pietera, po
plugins=(git osx)
zainstalowaniu wtyczek wystarczy wpisaćtab
i otworzy się nowa karta w bieżącym katalogu.źródło
Jeśli chcesz, aby katalog zmieniał się automatycznie po otwarciu nowej karty, użyj wtyczki dirpersist .
Wtyczka osx zapisuje tylko ostatni katalog, ale musisz uruchomić polecenie,
tab
aby otworzyć nową kartę, co nie zawsze jest możliwe (jeśli, powiedzmy, uruchamiasz coś na bieżącej karcie).źródło
Dodanie terminalapp do .zshrc nie działało dla mnie, więc szukałem wtyczki
~/.oh-my-zsh/plugins/terminalapp
i mówi mi:źródło
Nowe karty są już otwarte w tym samym folderze (Cmd + T). W przypadku nowych okien (Cmd + N) rozwiązanie firmy Pieter ma rację:
źródło