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
a
ingrese al modo de inserción<C-x><C-k> - perform dictionary completion on the character before cursor - in this case the letter
a`<C-p>
seleccione el último elemento en la lista de finalización que aparece, en mi sistema es la palabraarezzo
. (Nota: helongest
incluido 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ónj
pasar a la siguiente línea, listo para hacer la misma operación en la siguiente líneaq
para 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 j
se 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,preview
su longest
opción que hace <C-p>
que se inserte de inmediato. Si elimino longest
de la completeopt
cadena, 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>j
como 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