Enregistrer les macros Vim

166

Est-ce que quelqu'un sait comment sauvegarder / réutiliser correctement les macros enregistrées dans un éditeur vim?

jnadro52
la source

Réponses:

217

Utilisez qsuivi d'une lettre pour enregistrer une macro. Cela va simplement dans l'un des registres copier / coller afin que vous puissiez le coller normalement avec les commandes "xpou "xPen mode normal.

Pour le sauvegarder, ouvrez .vimrc et collez le contenu, puis le registre se trouvera au prochain démarrage de vim.
Le format est quelque chose comme:

let @q = 'macro contents'

Attention cependant aux citations. Il faudrait leur échapper correctement.

Donc, pour enregistrer une macro, vous pouvez faire:

  • Depuis le mode normal: qq
  • entrez les commandes
  • Depuis le mode normal: q
  • ouvrir .vimrc
  • "qppour insérer la macro dans votre let @q = '...'ligne
Dan Olson
la source
3
De plus, si vous devez insérer des caractères spéciaux (comme échapper, dans mon cas), utilisez le CTRL-V <ESC>mode insertion pour insérer le caractère correct. Un littéral <ESC>ne fonctionne pas
adam_0
5
"Notez cependant que la méthode ci-dessus utilisant: let ne fonctionnera pas comme prévu pour les macros que vous faites se terminant par un caractère <CR> ou <NL> (retour chariot ou nouvelle ligne).". vim.wikia.com/wiki/Macros#Saving_a_macro
Paolo
2
Les guillemets (autour du contenu de la macro) sont-ils obligatoires?
user2472071
15
Ctrl+r Ctrl+r registerNameles entrées enregistrent le contenu sans les interpréter - mieux que "qp. +1 pour la méthode in-vim néanmoins.
LAFK dit Réintégrer Monica
@ adam_0 Pourriez-vous nous en dire plus? Peut-être, incluez un exemple? Je ne peux pas comprendre comment incorporer des caractères spéciaux, à savoir esc. J'ai essayé toutes les combinaisons de saisie d'une évasion en vain. Le "code clé" finit par ruiner la macro et la séquence entière est imprimée.
GH05T
21

Pour une solution plus robuste, vous pouvez consulter Marvim .

Cela vous permet d'enregistrer une macro dans un espace de noms spécifique (ou d'utiliser le type de fichier comme espace de noms par défaut) et vous pouvez plus tard rechercher vos macros enregistrées et les charger dans un registre prêt à être utilisé.

Si vous réutilisez beaucoup de macros, c'est très utile.

Aléatoire
la source
6
Je veux juste ajouter ceci et dire à quel point il est facile de configurer marvim - copiez un seul fichier dans votre répertoire / plugin, puis utilisez F3 pour enregistrer une macro et F2 pour l'exécuter.
Raine Revere
18

Écrivez vos macros dans votre ~ / .vimrc, pour définir une macro lancée par CTRL + O par exemple, ajoutez la ligne suivante à votre ~ / .vimrc:

map <C-O> MACROTEXT

lorsque vous enregistrez une macro en tapant, qavous pouvez récupérer le texte de votre macro en tapant"ap

Raoul Supercoptère
la source
L'utilisation de "ap ou équivalent n'a pas fonctionné, mais vous pouvez accéder aux mêmes informations en: reg
DShook
"ap ferait référence à une macro enregistrée sur le aregistre
Tyler Fowle
11

La commande :mkexrc(ou :mkvimrc) peut être utilisée pour enregistrer tous les paramètres actuels :mapet :setdans un fichier. Voir :help mkexrcpour plus de détails.

Matthew Slattery
la source
4

Vous pouvez faire comme ça sur votre ~/.vimrc

:let @a="iHello World!\<CR>bye\<Esc>"

REMARQUE: vous devez utiliser des guillemets doubles pour pouvoir utiliser des touches spéciales comme dans \<this silly example>.

SergioAraujo
la source