Recientemente comencé a usar iTerm2 en lugar de la aplicación Terminal de macOS y estoy muy contento con ella. Estoy muy acostumbrado a usar exit
comandos para cerrar la instancia que actualmente tiene el foco. Con instancia me refiero a uno de los siguientes: pestaña, ventana o panel dividido.
¿Cómo puedo escribir una salida de función que cierre la instancia que se está ejecutando actualmente? La siguiente solución funciona para las ventanas, pero no para las pestañas ni para los paneles divididos:
function exit {
osascript -e 'tell application "iTerm2" to close first window'
}
La solución debería funcionar con zsh
o bash
.
La sección Scripting de la documentación de iTerm2 me ayudó a solucionar mi problema.
En .zshrc
definí la siguiente función:
function exit {
osascript ~/.zsh/.function_exit.as
}
con ~/.zsh/.function_exit.as
como
tell application "iTerm2"
tell current window to close current session
end tell
Además, configuré la siguiente opción en la configuración de iTerm2:
Usando todas las cosas anteriores juntas, logro el siguiente comportamiento:
Dado que esto no depende del Shell utilizado, todo debería funcionar perfectamente bash
(y el archivo de puntos correspondiente).
exit
es un comando integrado y la creación de una función con un nombre reservado podría causar resultados adversos.en tu .profile podrías agregar
alias killiTerm2='killall iTerm2'
desde la terminal, simplemente llamaría a killiTerm2, y mataría todas las instancias en ejecución de iTerm2
fd0
exit
es un shell incorporado (comando). Tener una función con el mismo nombre no es una buena idea.Alano
dile
exit
. Si esta primera pestaña está cerrada,exit
cierra toda la ventana (esta es la parte que ya está funcionando).Alano
dile
Alano
dile
Alano
exit
, cierra la sesión pero deja abierta la ventana/pestaña/panel. ¿Correcto?