La asignación de Ctrl + s no funciona


9

Estoy tratando de asignar Ctrl+ spara guardar mi archivo, sin embargo, no funciona.

Mis mapeos:

map <C-s> :w <CR> :echo "Saved" <CR>
imap <C-s> <Esc> :w <CR> :echo "Saved" <CR> i

Cuando estoy en modo de inserción, veo /:echo "Saved"en la esquina inferior en lugar de savedy cuando estoy en modo normal, veo lo mismo. ¿Qué estoy haciendo mal?

Esto está en la parte superior de mi vimrc, por lo que mi otro código no debería estar causando un problema. Estoy ejecutando Vim dentro de la Terminal OSX.


¿Estás usando Vim desde una terminal? Control + S también es una combinación de teclas especial recogida por el terminal que significa "detener la salida" ... Cuando intento las 2 combinaciones de teclas anteriores de gVim, parece funcionar.
Martin Tournoij

' I am also running vim inside the Mac terminal.' Sí, estoy ejecutando vim a través de la terminal. ¿Sería mejor usar Alt en lugar de Ctrl o Cmd?
iProgram

Esta pregunta se ha hecho muchas veces , por cierto ;-) No tengo tiempo para escribir una respuesta, pero ese enlace debería ayudarte ...
Martin Tournoij

Para vincular guardar en Cmd-S en OSX, puede intentar mapear, <D-s>aunque no estoy seguro de si eso funciona en el terminal Vim, ¡y de todos modos ya es un valor predeterminado en MacVim!
joeytwiddle

Respuestas:


7

Para garantizar que esta solución alternativa se ejecute incluso cuando Vim se inicia con una herramienta separada (como git), tengo esto en mi ~/.vimrc:

" Allow us to use Ctrl-s and Ctrl-q as keybinds
silent !stty -ixon

" Restore default behaviour when leaving Vim.
autocmd VimLeave * silent !stty ixon

Esto me ha funcionado en Linux, GVim, Mac OS X y MacVim.

Advertencias:

  • En Windows, o en cualquier otro sistema operativo que no tenga el sttycomando, lo anterior probablemente arrojará errores cada vez que se inicie Vim. ( silent!podría silenciar eso)

  • Si su shell ya tenía esta configuración TTY deshabilitada, ¡por supuesto, el VimLeavecomando automático lo volverá a encender! Detectar y restaurar la configuración actual es una ventaja con el enfoque de @ aPyDeveloper.


¡Una combinación de esto y la solución de @ aPyDeveloper, que maneja las preocupaciones de compatibilidad bajo OS X y Windows, sería genial para publicar aquí y / o en el Wiki!

Para evitar elegir entre stty -gy stty --save, puede probar la siguiente prueba solo para la ixopción.

call system("stty -a | grep '\( \|^\)ixon\>' >/dev/null")
let g:ix_at_startup = (v:shell_error == 0)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.