Risposte:
Usa Oh-My-Zsh e aggiungi il plugin 'osx' nel tuo ~ / .zshrc come:
plugins=(osx)
Se usi l'app terminale OSX, devi anche aggiungere il terminalapp
plug-in: credito
plugins=(osx terminalapp)
Se usi iTerm devi impostare un'opzione di configurazione (tieni presente che potresti non aver bisogno dei plugin zsh perché funzioni ): credit
Preferenze> Profili> Predefinito> Generale> Directory di lavoro> Riutilizza l'opzione di directory della sessione precedente
Questo è tutto ciò che devi fare!
rails
esecuzione, e provo ad aprire una nuova finestra tramite command-n, finisco di nuovo nella mia home directory.
Un'altra opzione ora disponibile in Mac OS X Lion è l'utilizzo della funzione integrata. Utilizza "sequenze di escape" per scoprire la directory corrente. Per me funziona se uso questi comandi nel mio .zshrc:
precmd () {print -Pn "\e]2; %~/ \a"}
preexec () {print -Pn "\e]2; %~/ \a"}
è anche possibile usare PS1
(per Bash, da questo wiki ):
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "
dov'è \e]2;
la sequenza di escape per stampare cose nella barra del titolo. E sembra che Terminal.app sta ottenendo le sue informazioni da lì.
Maggiori informazioni:
/etc/bashrc
vedrai che supporta anche un nuovo codice di escape per informare Terminal della directory di lavoro utilizzando un file:
URL, che può gestire tutti i nomi di percorso validi tramite codifica percentuale (i titoli di finestre / schede possono contenere solo un sottoinsieme di caratteri ASCII ).
\e]7;file://hostname/percent-encoded-pathname\a
chpwd () {print -Pn "\e]2; %~/ \a"}
?
Questa è una versione molto semplice che ho usato in bash e funziona anche in zsh. Salva la cartella corrente in un file, dopo ogni comando (non danneggia troppo l'IMO) e apre un nuovo terminale nella cartella corrente salvata.
aggiungi quanto segue a .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)"
gdirs sembra quasi un modo per farlo: nuova scheda, quindi gdirs per selezionare la directory profonda e voilà. La mia prima idea è stata quella di rendere lo stack di directory condiviso tra tutte le schede e fare cd ~ 1 dopo la nuova scheda, ma non riesco a trovare come farlo, poiché sembra che ogni istanza di zsh mantenga la propria. La condivisione della cronologia passa attraverso un file comune, quindi forse potrebbe essere fatto anche qui ...
Ecco come lo fai in bash.
Questo script di shell dirà (letteralmente tranquillo, usando Applescript) Terminal.app per aprire una nuova scheda e passare alla directory corrente:
#!/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
... metti lo script della shell sopra in una directory nel tuo $PATH
(es. / Usr / local / bin) e assicurati che sia eseguibile:
$ chmod +x /usr/local/bin/nt
( fonte )
Se devi aprire subito questa nuova scheda, senza modificare i file di configurazione o installare nuovi plugin, esegui questo:
pwd | pbcopy
Quindi aprire manualmente una nuova scheda Terminale (con ⌘T) e nella nuova scheda:
cd "`pbpaste`"
Attenzione : questo sovrascriverà il contenuto degli appunti di sistema.
Un metodo più lungo e alternativo che non sovrascrive gli Appunti:
pwd > $TMPDIR/wd
Apri la tua nuova scheda.
cd "$(cat $TMPDIR/wd)"
rm -f $TMPDIR/wd
Se vuoi che la directory cambi automaticamente quando viene aperta una nuova scheda, usa il plugin dirpersist .
Il plugin osx salva solo l'ultima directory ma devi eseguire il comando tab
per aprire una nuova scheda, il che non è sempre possibile (se, diciamo, stai eseguendo qualcosa nella tua scheda corrente).
L'aggiunta di terminalapp a .zshrc non ha funzionato per me, quindi ho cercato il plugin ~/.oh-my-zsh/plugins/terminalapp
e mi dice:
# 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.