Jawaban:
Gunakan Oh-My-Zsh dan tambahkan plugin 'osx' di ~ / .zshrc Anda seperti:
plugins=(osx)
Jika Anda menggunakan Aplikasi Terminal OSX, Anda juga perlu menambahkan terminalapp
plugin juga: kredit
plugins=(osx terminalapp)
Jika Anda menggunakan iTerm, Anda perlu mengatur opsi konfigurasi ( Perhatikan bahwa Anda mungkin tidak memerlukan plugin zsh agar ini berfungsi ): kredit
Preferensi> Profil> Default> Umum> Direktori Kerja> Gunakan kembali opsi direktori sesi sebelumnya
Itu semua yang perlu Anda lakukan!
rails
running, dan saya mencoba membuka jendela baru melalui command-n, saya kembali ke direktori home saya.
Opsi lain yang sekarang tersedia di Mac OS X Lion adalah menggunakan fitur bawaan. Ini menggunakan 'escape sequence' untuk mencari tahu direktori saat ini. Bagi saya ini berfungsi jika saya menggunakan perintah ini di .zshrc saya:
precmd () {print -Pn "\e]2; %~/ \a"}
preexec () {print -Pn "\e]2; %~/ \a"}
dimungkinkan juga untuk menggunakan PS1
(untuk Bash, dari wiki ini ):
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "
di mana \e]2;
urutan pelarian untuk mencetak hal-hal di batang judul. Ini tampaknya yang Terminal.app semakin informasinya dari sana.
Informasi lebih lanjut:
/etc/bashrc
Anda akan melihat bahwa itu juga mendukung kode pelarian baru untuk menginformasikan Terminal direktori kerja menggunakan file:
URL, yang dapat menangani semua nama path yang valid melalui persen-encoding (judul jendela / tab hanya dapat berisi subset karakter ASCII ).
\e]7;file://hostname/percent-encoded-pathname\a
chpwd () {print -Pn "\e]2; %~/ \a"}
?
Ini adalah versi yang sangat sederhana yang saya gunakan di bash dan juga berfungsi di zsh. Ini menyimpan folder saat ini dalam file, setelah setiap perintah (Tidak menyakiti IMO terlalu banyak) dan membuka terminal baru di folder saat ini disimpan.
tambahkan berikut ini ke .zshrc
# emulate bash PROMPT_COMMAND (only for zsh)
precmd() { eval "$PROMPT_COMMAND" }
# open new terminal in same dir
PROMPT_COMMAND='pwd > "${HOME}/.cwd"'
[[ -f "${HOME}/.cwd" ]] && cd "$(< ${HOME}/.cwd)"
gdir sepertinya merupakan cara untuk melakukannya: tab baru, lalu gdir untuk memilih direktori yang dalam dan voila. Ide pertama saya adalah membuat tumpukan direktori dibagi di antara semua tab dan melakukan cd ~ 1 setelah tab baru, tetapi saya tidak dapat menemukan cara melakukannya, karena tampaknya setiap instance zsh menyimpannya sendiri. Berbagi riwayat berjalan melalui file umum, jadi mungkin itu bisa dilakukan di sini juga ...
Ini adalah bagaimana kamu melakukannya di bash.
Script shell ini akan memberitahu (diam secara harfiah, menggunakan Applescript) Terminal.app untuk membuka tab baru kemudian beralih ke direktori saat ini:
#!/bin/bash
osascript -e 'tell application "Terminal"' \
-e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' \
-e "do script with command \"cd `pwd`;clear\" in selected tab of the front window" \
-e 'end tell' &> /dev/null
... letakkan skrip shell di atas dalam direktori di $PATH
(yaitu / usr / local / bin) dan pastikan itu dapat dieksekusi:
$ chmod +x /usr/local/bin/nt
( sumber )
Jika Anda perlu membuka tab baru ini sekarang, tanpa mengubah file konfigurasi Anda atau menginstal plugin baru, jalankan ini:
pwd | pbcopy
Kemudian buka tab Terminal baru secara manual (dengan ⌘T), dan di tab baru:
cd "`pbpaste`"
Peringatan : ini akan menimpa isi clipboard sistem.
Metode alternatif yang lebih panjang yang tidak menimpa clipboard:
pwd > $TMPDIR/wd
Buka tab baru Anda.
cd "$(cat $TMPDIR/wd)"
rm -f $TMPDIR/wd
Jika Anda ingin direktori berubah secara otomatis ketika tab baru dibuka gunakan plugin dirpersist .
Plugin osx hanya menyimpan direktori terakhir tetapi Anda harus menjalankan perintah tab
untuk membuka tab baru, yang tidak selalu mungkin (jika, katakanlah, Anda menjalankan sesuatu di tab Anda saat ini).
Menambahkan terminalapp ke .zshrc tidak berfungsi untuk saya, jadi saya mencari plugin ~/.oh-my-zsh/plugins/terminalapp
dan memberitahu saya:
# This file is intentionally empty.
#
# The terminalapp plugin is deprecated and may be removed in a future release.
# Its functionality has been folded in to the core lib/termsupport.zsh, which
# is loaded for all users. You can remove terminalapp from your $plugins list
# once all your systems are updated to the current version of Oh My Zsh.