Estoy tratando de definir una macro que genere rápidamente una lista de palabras aleatorias.
Quiero que la macro convierta esto en una lista como
a
b
c
d
e
dentro de esto
arezzo
bywords
czars
détente
eyrie
Lo que tengo hasta ahora:
- poner el cursor en la letra
a - comenzar a grabar macro
qq aingrese al modo de inserción<C-x><C-k> - perform dictionary completion on the character before cursor - in this case the lettera`<C-p>seleccione el último elemento en la lista de finalización que aparece, en mi sistema es la palabraarezzo. (Nota: helongestincluido en mi'completeopt'entorno, que es necesario para<C-p>trabajar de esta manera durante la finalización:)'set completeopt=longest,menuone,preview'.<C-y>aceptar la finalización^[^[salir del modo de inserciónjpasar a la siguiente línea, listo para hacer la misma operación en la siguiente líneaqpara de grabar
cuando creo la macro y sigo los pasos manualmente, todo funciona bien, sin embargo, cuando ejecuto la macro, veo un mensaje parpadeando en la línea de comando como:
escanear archivo de diccionario
y no sucede nada, solo jse ejecutan los comandos en la macro , es decir, el cursor se mueve hacia abajo de la línea, pero ninguno de los comandos de finalización se ejecuta.
¿Es posible usar las finalizaciones del modo de inserción en una macro, y si es así, cómo puedo hacerlo?
set completeopt=longest,menuone,previewsu longestopción que hace <C-p>que se inserte de inmediato. Si elimino longestde la completeoptcadena, obtengo el mismo comportamiento que usted. Además, sí, ¡las teclas de flecha funcionaron! gracias (olvidé que puedes usarlos para navegar por la lista de finalización)
:set completeopt=y a<c-x><c-k><esc>jcomo su macro.
<C-p>paso ... cuando hago eso en mi vim, solo da el mensajeback at original, no selecciona el último elemento ... Usé la tecla de flecha hacia arriba dos veces para seleccionar la última palabra (mi casoazures), presioné enter y entoncesEsc+j+q... luego funciona bastante bien en la ejecución de macro