<C-p>
y <C-n>
permite completar palabras encontradas en el documento actual.
Estoy tomando algunas notas y escribiendo say {0,1}^n
y (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-completion
comando relacionado )?
autocompletion
Gonçalo Ribeiro
fuente
fuente
:abbreviate
lugar. Por ejemplo, emita el:ab 01n {0,1}^n
comando. Luego, cada vez que escriba01n
como una palabra independiente en el modo Insertar, se expandirá a{0,1}^n
.ins-completion
.Respuestas:
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
Luego lo configuré para eso más los caracteres adicionales anteriores
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: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}^n
mucho, y no hay otras variaciones de él. Escribir es un estiramiento de los dedos, por lo que tal vez solo desee escribir01n
omyvalue
y expandirlo{0,1}^n
, pero solo cuando01n
omyvalue
es 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}^n
para restringir la expansión al modo de inserción solamente.Luego, si tiene algo de texto (donde
|
representa el cursor)Y luego le golpeó Esco Spaceo Tabo no mover los cursores, el texto es reemplazado, y tiene (ejemplo para el uso de espacio)
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.
fuente
:set iskeyword+={,},,,(,),^
funciona como se esperaba.abbreviate
podría ser más adecuado para este trabajo?