Ins-finalización de WORDs


13

<C-p>y <C-n>permite completar palabras encontradas en el documento actual.

Estoy tomando algunas notas y escribiendo say {0,1}^ny (E,D)muchas veces. Estas son PALABRAS constituidas por varias palabras.

¿Hay alguna manera de completar las PALABRAS con <C-p>y <C-n>(u otro ins-completioncomando relacionado )?


1
Puede que sea mejor usarlo en su :abbreviatelugar. Por ejemplo, emita el :ab 01n {0,1}^ncomando. Luego, cada vez que escriba 01ncomo una palabra independiente en el modo Insertar, se expandirá a {0,1}^n.
200_success

@ 200_success, gracias. Había pensado en abreviaturas, pero aún quería saber si era posible ins-completion.
Gonçalo Ribeiro

Respuestas:


5

Insertar modo completado con Ctrl-n

No sé si podría completar la PALABRA fuera de escribir su propia función (como omnifunc). Sin embargo, si no le importa expandir lo que es una palabra para que coincida con sus caracteres, puede agregar esos caracteres a 'iskeyword'

Por ejemplo, mi 'palabra clave' por defecto

iskeyword=@,48-57,_,192-255

Luego lo configuré para eso más los caracteres adicionales anteriores

:set iskeyword=@,48-57,_,192-255,{,},,,(,),^

Esto añade {, }, ,, (, ), y ^de los caracteres que componen una palabra (además de lo que ya lo hicieron)

Después de eso, la escritura se {Ctrl-ncompleta en {0,1}^n(en un archivo que contiene solo esos dos ejemplos que dio)

Nota: Sería mejor hacer un :set iskeyword+=solo con las cosas adicionales, de la siguiente manera:

:set iskeyword+={,},,,(,),^

De esta manera, deja cualquier otra cosa que ya constituya una palabra clave agregando los nuevos caracteres a la configuración existente.

Expansión con abreviaturas

Aunque no es parte de la pregunta original, otra funcionalidad similar (ish) es usar la funcionalidad de abreviatura de nvi o Vim. A diferencia de la finalización de palabras clave, las abreviaturas no tienen que parecerse al texto final. Además, a diferencia de la finalización de palabras clave, las abreviaturas se expanden automáticamente, en lugar de solo cuando las solicita. Dependiendo de su objetivo y uso, esto puede ahorrar mucho tipeo y le permite escribir mucho texto sin la interrupción de pedir una finalización.

Las abreviaturas son buenas para un pequeño conjunto de palabras clave y cuando puede definirlas con anticipación (no se descubren en su texto como sí lo es completar palabras).

La idea básica detrás de las abreviaturas es que asocie una PALABRA con algún otro texto, y cada vez que el editor detecte que escribió esa PALABRA (es decir, el texto que escribió está rodeado por un espacio en blanco, donde la acción de finalización agrega el espacio en blanco después la palabra clave o salir del modo de inserción), se reemplaza con ese otro texto.

Digamos que su archivo contiene {0,1}^nmucho, y no hay otras variaciones de él. Escribir es un estiramiento de los dedos, por lo que tal vez solo desee escribir 01no myvaluey expandirlo {0,1}^n, pero solo cuando 01no myvaluees una palabra por sí sola (es decir, si aparece dentro de otra palabra, no cambialo).

En nvi, puedes hacer :abbrev 01n {0,1}^n. Puede hacer lo mismo en Vim, pero le recomiendo usar :iabbrev 01n {0,1}^npara restringir la expansión al modo de inserción solamente.

Luego, si tiene algo de texto (donde |representa el cursor)

We find that the value 01n|

Y luego le golpeó Esco Spaceo Tabo no mover los cursores, el texto es reemplazado, y tiene (ejemplo para el uso de espacio)

We find that the value {0,1}^n |

y puedes seguir escribiendo sin interrupción.

Esto generalmente se usa para corregir automáticamente errores tipográficos comunes (por ejemplo, cambiar 'teh' a 'the'), pero puede ser igualmente útil para su caso de uso, suponiendo nuevamente que no le importa configurar las asignaciones con anticipación.


A mí me parece que :set iskeyword+={,},,,(,),^funciona como se esperaba.
Karl Yngve Lervåg

1
De hecho lo hace. Cuando lo intenté la última vez, Vim me decía que era un error de sintaxis. Debe haber estado en otro lugar. Actualizando mi respuesta.
John O'M.

@ JohnO'M. ¿podría agregar una referencia sobre cómo abbreviatepodría ser más adecuado para este trabajo?
Gonçalo Ribeiro

@ GonçaloRibeiro hecho. Espero que ayude.
John O'M.
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.