Finalización de Vim: siempre suprima la nueva línea después de seleccionar una sugerencia con la tecla Intro


11

A veces, después de seleccionar una sugerencia (de la ventana emergente de finalización que aparece al presionar Ctrl-N) usando la tecla Intro, Vim insertará una nueva línea y el cursor se moverá a la siguiente línea. Esto no siempre sucede: parece que Vim intenta ser inteligente al respecto y solo me moverá a la siguiente línea si cree que esto es lo que me gustaría.

Sin embargo, quiero deshabilitar este comportamiento (porque no siempre es inteligente) para que siempre tenga que moverme a la siguiente línea presionando manualmente la tecla Intro. es posible?

Respuestas:


14

Lo que hace Vim en respuesta a que escribe la tecla <Intro> mientras usa la inserción completa depende del estado del menú de finalización. El comportamiento del menú se describe aquí:

:help ins-completion-menu

y el comportamiento de varias teclas cuando se utiliza la inserción completa se describe en la siguiente sección,

:help popupmenu-keys

donde explica que el comportamiento de la tecla <Intro> depende del estado del menú. Según tengo entendido, al escribir <Enter> se inserta una nueva línea, excepto en el caso de que haya seleccionado una coincidencia del menú con las teclas del cursor.

La mejor manera de evitar insertar una nueva línea cuando no desea una es terminar o hacer una selección con alguna otra tecla, como Ctrl-Y o Ctrl-E.

Ver también

:help complete_CTRL-Y

y para la descripción completa si se completa el modo de inserción,

:help ins-completion

4

Puede agregar esta asignación a su archivo .vimrc:

inoremap <expr> <CR> pumvisible() ? "\<C-Y>" : "\<CR>"

Asignará la tecla de retorno en modo de inserción para ingresar CTRL-Y cuando el menú emergente esté visible. CTRL-Y selecciona el elemento actualmente seleccionado en el menú sin ingresar una nueva línea. De lo contrario, hará que la tecla de retorno actúe como normal.


1
¿Puede explicar qué hace este código y cómo aborda el problema dado por el OP? El código inexplicable puede parecer no confiable y peligroso para los usuarios.
bwDraco

0

Agregué esto a .vimrc y ahora se comporta como quiero:

noremap pumvisible ()? "\": ""

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.