Estou tentando definir uma macro que gera rapidamente uma lista de palavras aleatórias.
Eu quero que a macro transforme isso em uma lista como
a
b
c
d
e
nisso
arezzo
bywords
czars
détente
eyrie
O que tenho até agora:
- colocar o cursor na letra
a - começar a gravar macro
qq aentre no modo de inserção<C-x><C-k> - perform dictionary completion on the character before cursor - in this case the lettera`<C-p>selecione o último item na lista de conclusão que aparece, no meu sistema é a palavraarezzo. (NBlongestincluí na minha'completeopt'configuração, necessária para<C-p>trabalhar dessa maneira durante a conclusão:)'set completeopt=longest,menuone,preview'.<C-y>aceite a conclusão^[^[sair do modo de inserçãojdesça para a próxima linha, pronto para fazer a mesma operação na próxima linhaqpare de gravar
quando crio a macro e passo as etapas manualmente, tudo funciona bem; no entanto, quando executo a macro, vejo uma mensagem piscando na linha de comando, algo como:
digitalizando arquivo de dicionário
e nada acontece, apenas os comandos da macro jsão executados, ou seja, o cursor se move para baixo da linha, mas nenhum dos comandos de conclusão é executado.
É possível usar as conclusões do modo de inserção em uma macro e, em caso afirmativo, como posso fazer isso?
set completeopt=longest,menuone,previewa longestopção que causa <C-p>a inserção imediata. Se eu remover longestda completeoptstring, recebo o mesmo comportamento que você. Além disso, sim, as teclas de seta funcionaram! obrigado (esqueci que você pode usá-los para navegar na lista de conclusão) #
:set completeopt=e a<c-x><c-k><esc>jcomo sua macro.
<C-p>passo ... quando eu faço isso no meu vim, ele apenas dá a mensagemback at original- não seleciona o último item. Usei a tecla de seta duas vezes para selecionar a última palavra (meu casoazures), pressione enter e entãoEsc+j+q.. então funciona muito bem na execução de macro