C'est une demande assez curieuse car il n'y a pas de "mode" pour enregistrer une macro. Après avoir fouillé dans certains documents, j'ai trouvé ce qui suit dansusr_10
Vous commencez par passer au premier caractère de la première ligne. Ensuite, vous exécutez les commandes suivantes:
qa Commencez à enregistrer une macro dans le registre a .
^ Passez au début de la ligne.
i # inclure "Insérer la chaîne #include" au début de la ligne.
$ Aller à la fin de la ligne.
a "Ajoutez le guillemet double (") à la fin de la ligne.
j Passez à la ligne suivante.
q Arrêtez l'enregistrement de la macro.
La chose la plus remarquable pour moi était la ligne sur "Commencer à enregistrer une macro dans un registre"
Étant donné que chaque macro va être enregistrée dans un registre par défaut, j'espérais que nous pourrions la voir dans la :reg
liste. Il s'avère que cela fonctionne comme un charme!
Exemple:
En mode normal: qaisomething<Esc>
et à l'intérieur de :reg
nous voyons l'entrée!
"a isomething^[
Avec cette connaissance, vous devriez pouvoir "espionner" les registres pour confirmer qu'une macro est en cours d'enregistrement (utilisez un registre nommé sur chaque enregistrement [carte q
pour toujours utiliser le même registre (ou quelque chose comme ça)])
Si vous rencontrez des problèmes, faites le moi savoir et je vais essayer de vous aider (car cette fonctionnalité est nouvelle pour moi aussi: D)
modifier
Pour résoudre le problème d'un registre utilisé pendant le coup sec, je recommanderais de rechercher un type spécial de registre que vous pouvez utiliser uniquement pour l' vimL
écriture (aucun coup sec ne serait jamais engagé sur le registre ( "ay
))
Voici quelques informations :help registers
sur les registres disponibles
Il existe dix types de registres: registres E354
Le registre sans nom ""
10 registres numérotés "0 à" 9
Le petit registre d'effacement "-
26 registres nommés "a à" z ou "A à" Z
trois registres en lecture seule ":,"., "%
registre tampon alternatif "#
le registre d'expression "=
Les registres de sélection et de dépôt "*," + et "~
Le registre du trou noir "_
Dernier registre de modèle de recherche "/
En supposant que vous disposez d'un registre que vous allez utiliser maintenant, le problème devient "comment savoir quand l'enregistrement est arrêté?". Pour prendre soin de ce que je prendrais un coup d' oeil à la autocmd-event
pour CursorHold
; la note dans les documents d'aide semble assez prometteuse (j'essaierais de comprendre comment je pourrais différencier le curseur normal par rapport à l'événement inactif / inexistant qui se produit lorsque votre registre est écrit dans le but de la macro)
CursorHold
Lorsque l'utilisateur n'appuie pas sur une touche pendant la durée spécifiée avec «updatetime». Non relancé tant que l'utilisateur n'a pas appuyé sur une touche (c'est-à-dire qu'il ne déclenche pas tous les ms de «mise à jour» si vous quittez Vim pour faire du café. :) Voir | CursorHold-example | pour prévisualiser les balises. Cet événement n'est déclenché qu'en mode Normal. Il n'est pas déclenché lors de l'attente de la saisie d'un argument de commande ou d'un mouvement après un opérateur. Pendant l'enregistrement, l'événement CursorHold n'est pas déclenché. | q |