Respuestas:
Use Oh-My-Zsh y agregue el complemento 'osx' en su ~ / .zshrc como:
plugins=(osx)
Si usa la aplicación Terminal de OSX, también necesita agregar el terminalapp
complemento: crédito
plugins=(osx terminalapp)
Si usa iTerm, debe establecer una opción de configuración ( tenga en cuenta que es posible que no necesite los complementos zsh para que esto funcione ): crédito
Preferencias> Perfiles> Predeterminado> General> Directorio de trabajo> Reutilizar la opción de directorio de la sesión anterior
¡Eso es todo lo que necesitas hacer!
rails
ejecución, y trato de abrir una nueva ventana mediante el comando-n, termino de nuevo en mi directorio de inicio.
Otra opción ahora disponible en Mac OS X Lion es usar la función incorporada. Utiliza 'secuencias de escape' para encontrar el directorio actual. Para mí funciona si uso estos comandos en mi .zshrc:
precmd () {print -Pn "\e]2; %~/ \a"}
preexec () {print -Pn "\e]2; %~/ \a"}
También es posible usar PS1
(para Bash, de esta wiki ):
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "
donde \e]2;
está la secuencia de escape para imprimir cosas en la barra de título. Se parece que Terminal.app está recibiendo su información a partir de ahí.
Más información:
/etc/bashrc
verá que también admite un nuevo código de escape para informar a Terminal del directorio de trabajo utilizando una file:
URL, que puede manejar todos los nombres de ruta válidos mediante codificación porcentual (los títulos de ventana / pestaña solo pueden contener un subconjunto de caracteres ASCII )
\e]7;file://hostname/percent-encoded-pathname\a
chpwd () {print -Pn "\e]2; %~/ \a"}
?
Esta es una versión muy simple que utilicé en bash y también funciona en zsh. Guarda la carpeta actual en un archivo, después de cada comando (no daña demasiado la OMI) y abre un nuevo terminal en la carpeta actual guardada.
agregue lo siguiente 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 parece una forma de casi hacerlo: nueva pestaña, luego gdirs para seleccionar el directorio profundo y listo. Mi primera idea fue hacer que la pila de directorios se compartiera entre todas las pestañas y hacer cd ~ 1 después de la nueva pestaña, pero no puedo encontrar cómo hacerlo, ya que parece que cada instancia de zsh mantiene la suya. El intercambio de historial se realiza a través de un archivo común, por lo que quizás eso también se pueda hacer aquí ...
Así es como lo haces en bash.
Este script de shell le dirá (silenciosamente, literalmente, usando Applescript) Terminal.app para abrir una nueva pestaña y luego cambiar al directorio actual:
#!/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
... coloque el script de shell anterior en un directorio en su $PATH
(es decir, / usr / local / bin) y asegúrese de que sea ejecutable:
$ chmod +x /usr/local/bin/nt
( fuente )
Si necesita abrir esta nueva pestaña ahora mismo, sin cambiar sus archivos de configuración o instalar nuevos complementos, ejecute esto:
pwd | pbcopy
Luego abra una nueva pestaña Terminal manualmente (con ⌘T), y en la nueva pestaña:
cd "`pbpaste`"
Advertencia : esto sobrescribirá el contenido del portapapeles del sistema.
Un método alternativo más largo que no sobrescribe el portapapeles:
pwd > $TMPDIR/wd
Abre tu nueva pestaña.
cd "$(cat $TMPDIR/wd)"
rm -f $TMPDIR/wd
Si desea que el directorio cambie automáticamente cuando se abre una nueva pestaña, use el complemento dirpersist .
El complemento osx solo guarda el último directorio, pero debe ejecutar el comando tab
para abrir una nueva pestaña, lo que no siempre es posible (si, por ejemplo, está ejecutando algo en su pestaña actual).
Agregar terminlapp a .zshrc no funcionó para mí, así que busqué el complemento ~/.oh-my-zsh/plugins/terminalapp
y me 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.