Tengo deseos similares a los tuyos. Lo resolví usando una revinculación de teclas modificadoras a nivel de sistema.
(Por supuesto, esto es un lío; pero me parece que vale la pena para mantener mi híbrido entrenado en MacVim de los controles de todo el sistema operativo (guardar, nuevo, copiar, pegar) dentro de la línea de comandos vim
s.)
Así es como lo hice:
-
Instalar Mosquetón que es un muy Un programa muy potente (y una parte esencial de la instalación de OS X de cualquier usuario o programador, en mi opinión)
-
Activar "Comando_L a Control_L (sólo en Terminal)" :
-
Mapa ⌃ -controles prefijados que coinciden con los comandos de MacVim a los que está más acostumbrado en la línea de comandos vim
. Por ejemplo, para apoyar ⌘S ,
noremap <silent> <C-S> :update<CR>
vnoremap <silent> <C-S> <C-C>:update<CR>
inoremap <silent> <C-S> <C-O>:update<CR>
-
Restauración prevista ⌘ -para la propia Terminal.app, mediante la inclusión de un código especial en las Preferencias del Sistema. Por ejemplo, si quiere ⌘N para seguir controlando las pestañas de la Terminal, en lugar de asignarlas a vim
archivos, inténtalo:
Ahora, cualquier cosa que no añadir en esta lista, se pasarán literalmente a la línea de comandos vim
(y, por supuesto, cualquier otro programa de línea de comandos que utilice).
Advertencias
Este enfoque tiene varios más sutiles desventajas, que quiero resaltar para cualquiera que esté considerando tomarla (como yo):
- ⌘␣ ya no se asignará al Spotlight de todo el sistema. (Tengo un asunto pendiente en Karabiner, y volveré aquí cuando tenga una solución provisional).
- Por razones que no puedo determinar, incluso con la ⌃W Si se configuran exclusiones en las Preferencias del Sistema, el comportamiento de cierre de pestañas de Terminal.app cambia con esta configuración: ⌘W cerrará las pestañas individuales de una ventana; pero si la pestaña actual es la último ficha, se no cerrar la ventana. En cambio, no tiene ningún efecto. He tenido que volver a entrenarme para usar ⇧⌘W para cerrar la ventana si sólo queda una pestaña.
- Si te has entrenado para usar ⌃V en MacVim para hacer la selección por bloques, entonces tendrá que volver a entrenarse para usar la alternativa , ⌃Q (o, ahora, ⌘Q ). Además, tendrás que añadir
stty -ixon
en el inicio de su shell-script, como ⌃Q se consume por defecto para realizar una función arcaica de control del shell (sin uso moderno).
Alternativa ⌘W comportamiento
Además de lo anterior, decidí anular aún más ⌘W como una tecla universal de "cerrar esto", aplicable a múltiples aplicaciones.
En lugar de asignar ⌘W a "Cerrar Pestaña", como en el caso anterior; yo personalmente lo asigno a ⇧⌘W (para mantener la semántica de "cerrar inmediatamente esta pestaña".) Entonces, en cualquier programa, asigno ⌃W a algún tipo de funcionalidad de cerrar-guardar-salir.
Por ejemplo, en mi .vimrc
:
noremap <C-W> :confirm quit<CR>
vnoremap <C-W> <C-C>:confirm quit<CR>
inoremap <C-W> <C-O>:confirm quit<CR>
o mi .zshrc
:
function close_tab { exit }
zle -N close_tab_widget close_tab
bindkey '' close_tab_widget
bindkey -M vicmd '' close_tab_widget
Con esos dos fragmentos en su lugar, y su Terminal configurado para 'Cerrar si el shell sale limpiamente', una serie de ⌘W s saldrá primero de vim, y luego cerrará el shell por completo.
Además, ahora se puede conservar la funcionalidad adicional de los programas al salir: por ejemplo, vim
preguntará antes de salir si los archivos no están guardados (al igual que MacVim); y zsh
preguntará antes de renunciar si hay trabajos de fondo.
Posdata: No directamente relacionado con tu pregunta; pero también deberías echar un vistazo a 'Ubiquitous Vim Mode' en Karabiner. Es "un poco demasiado" para mí para usar todos los días, pero es una idea muy cool, y sorprendentemente bien implementado.