Sto cercando di definire una macro che genera rapidamente un elenco di parole a caso.
Voglio che la macro lo trasformi in un elenco come
a
b
c
d
e
in questo
arezzo
bywords
czars
détente
eyrie
Quello che ho finora:
- posiziona il cursore sulla lettera
a - inizia a registrare macro
qq aentra in modalità inserimento<C-x><C-k> - perform dictionary completion on the character before cursor - in this case the lettera`<C-p>seleziona l'ultimo elemento nell'elenco di completamento che appare, sul mio sistema è la parolaarezzo. (NB Holongestincluso nella mia'completeopt'impostazione, che è necessario per<C-p>funzionare in questo modo durante il completamento:)'set completeopt=longest,menuone,preview'.<C-y>accetta il completamento^[^[uscire dalla modalità di inserimentojpassa alla riga successiva, pronto per eseguire la stessa operazione sulla riga successivaqinterrompere la registrazione
quando creo la macro e eseguo i passaggi manualmente, tutto funziona bene, tuttavia quando eseguo la macro, vedo un messaggio lampeggiante nella riga di comando qualcosa del tipo:
scansione del file del dizionario
e non accade nulla, solo i comandi nella macro jvengono eseguiti, ovvero il cursore si sposta lungo la linea, ma nessuno dei comandi di completamento viene eseguito.
È possibile utilizzare i completamenti della modalità di inserimento in una macro e, in tal caso, come posso farlo?
set completeopt=longest,menuone,previewsua longestopzione che causa <C-p>l'inserimento immediato. Se rimuovo longestdalla completeoptstringa, ottengo lo stesso comportamento di te. Inoltre, sì, i tasti freccia hanno funzionato! grazie (ho dimenticato che puoi usarli per navigare nell'elenco di completamento)
:set completeopt=e a<c-x><c-k><esc>jcome macro.
<C-p>passaggio ... quando lo faccio a mio modo di vedere, mi dà solo il messaggioback at original- non seleziona l'ultimo elemento .. Ho usato due volte il tasto freccia per selezionare l'ultima parola (il mio casoazures), ho premuto Invio e alloraEsc+j+q.. allora funziona abbastanza bene sull'esecuzione di macro