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
a
entre no modo de inserção<C-x><C-k> - perform dictionary completion on the character before cursor - in this case the letter
a`<C-p>
selecione o último item na lista de conclusão que aparece, no meu sistema é a palavraarezzo
. (NBlongest
incluí 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çãoj
desça para a próxima linha, pronto para fazer a mesma operação na próxima linhaq
pare 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 j
sã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,preview
a longest
opção que causa <C-p>
a inserção imediata. Se eu remover longest
da completeopt
string, 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>j
como 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