J'essaie de définir une macro qui génère rapidement une liste de mots aléatoires.
Je veux que la macro transforme cela en une liste comme
a
b
c
d
e
dans ce
arezzo
bywords
czars
détente
eyrie
Ce que j'ai jusqu'à présent:
- mettre le curseur sur la lettre
a
- démarrer l'enregistrement macro
qq
a
entrer en mode insertion<C-x><C-k> - perform dictionary completion on the character before cursor - in this case the letter
a`<C-p>
sélectionnez le dernier élément de la liste d'achèvement qui apparaît, sur mon système, c'est le motarezzo
. (NB j'ailongest
inclus dans mon'completeopt'
cadre, ce qui est nécessaire pour<C-p>
travailler de cette façon lors de l'achèvement:)'set completeopt=longest,menuone,preview'
.<C-y>
accepter l'achèvement^[^[
quitter le mode d'insertionj
passer à la ligne suivante, prêt à faire la même opération sur la ligne suivanteq
arrête d'enregistrer
lorsque je crée la macro et que j'exécute les étapes manuellement, tout fonctionne bien, mais lorsque j'exécute la macro, je vois un message clignotant dans la ligne de commande quelque chose comme:
analyse du fichier du dictionnaire
et rien ne se passe, des commandes de la macro uniquement j
sont exécutées, c'est-à-dire que le curseur se déplace le long de la ligne, mais aucune des commandes de fin n'est exécutée.
Est-il possible d'utiliser des compléments de mode d'insertion dans une macro, et si oui, comment faire?
set completeopt=longest,menuone,preview
son longest
option qui provoque <C-p>
l'insertion immédiate. Si je retire longest
de la completeopt
chaîne, j'obtiens le même comportement que vous. De plus, oui, les touches fléchées ont fonctionné! merci (j'ai oublié que vous pouvez les utiliser pour naviguer dans la liste d'achèvement)
:set completeopt=
et a<c-x><c-k><esc>j
comme macro.
<C-p>
étape ... quand je fais ça dans mon vim, ça donne juste le messageback at original
- ne sélectionne pas le dernier élément .. J'ai utilisé la touche fléchée vers le haut deux fois pour sélectionner le dernier mot (mon casazures
), j'ai appuyé sur enter et alorsEsc+j+q
.. cela fonctionne très bien sur l'exécution de la macro