2010-06-16 4 views
5

J'ai une macro que j'utilise pour remplacer les caractères spéciaux pour ses entités html. Je voudrais l'enregistrer dans mon .vimrc.Comment puis-je enregistrer une macro composée de plusieurs rechercher et remplacer dans mon .vimrc

Selon this, je devrais utiliser let @ r = 'macro_text_goes_here'. Le problème est que ma macro est une série de recherche et de remplacement, quelque chose comme ceci:

:%s:á:\á:Ige 
:%s:é:\é:Ige 
:%s:í:\í:Ige 

Alors, je l'ai essayé avec^V entrer, <entrer>, <CR> en utilisant des sauts de ligne réelle, mais ça ne marche jamais. De l'autre côté, si je mets le texte sur un registre puis exécute la macro, cela fonctionne comme prévu.

Répondre

10

ajouter ceci à Vimrc fonctionne pour moi

let @a=':%s/á/\&aacute;/g^M:%s/é/\&eacute;/g^M:%s/í/\&iacute;/g^M' 

Notez que^M est un caractère spécial saisi à l'aide Ctrl +V, Ctrl +M.

+0

Vous avez raison, j'avais des espaces entre le^M, et c'est pourquoi il a échoué pour moi. – Doppelganger

+0

Vous pouvez utiliser des guillemets et '\ ' à l'intérieur si vous ne voulez pas avoir de données binaires dans votre vimrc. – ZyX

+0

@smi +1 Merci beaucoup pour Ctrl + V. Ca m'a aidé une tonne ^^ – whitesiroi

1

Ok j'ai trouvé la solution, je l'avais essayé avec ^M avant, mais ayant des espaces de fin, il ne fonctionne pas, la syntaxe appropriée pour l'exemple sur la question est la suivante:

let @r=':%s:á:\&aacute;:Ige^M:%s:é:\&eacute;:Ige^M:%s:í:\&iacute;:Ige^M' 

Don N'oublions pas le dernier^M, et qu'un redémarrage vim est nécessaire pour recharger le .vimrc.

Questions connexes