Comment sauvegarder une macro Vim qui contient des touches" Escape"?

j'utilise la suite Vim macro beaucoup (il met la ligne en cours à l'intérieur de balises XML):

I<e>^[A</e>

alors je l'ai gardé dans le mien .vimrc

let @e='I<e>^[A</e>'

Mais ça ne fonctionne pas.

^[ part signifie "Escape" mais elle n'est pas comprise comme telle dans .vimrc

Comment puis-je sauvegarder cette macro, ou toute macro qui contient "Escape" ?

24
demandé sur Nicolas Raoul 2010-05-31 16:38:22

6 réponses

essayez d'entrer dans l'évasion avec <Ctrl-v><Esc> en mode insert. Voir :help i_CTRL-V dans vim.

31
répondu catchmeifyoutry 2010-05-31 12:39:53

<ESC> est votre ami ici. Tapez littéralement < E S C> donc :

let @e=I<e><ESC>A</e>

Voir :help key-notation dans Vim pour plus d'info.

mise à Jour:

Ah... <ESC> fonctionne dans des mappages clés (tels que :map <Leader>e <ESC>I<e><ESC>A</e> [testé]), mais pas dans les macros, qui sont développés littéralement. J'ai juste essayé et testé ceci:

:let @e='^[I<e>^[A</e>'

^[ est juste un char formé par appuyant sur la touche CTRL+ V ESC. Notez l'évasion juste au début de la macro.

17
répondu Johnsyweb 2010-05-31 13:18:58

si vous utilisez Windows behavior pour vim où Ctrl+ V est la commande Paste, la séquence équivalente est Ctrl+ Q

4
répondu Nick Canzoneri 2010-06-04 16:06:56

Aujourd'hui j'ai découvert un plug-in vim appelé MARVIM (http://www.vim.org/scripts/script.php?script_id=2154).

il est capable de stocker des macros et de les exécuter plus tard en utilisant des raccourcis.

1
répondu Oz. 2010-06-10 16:47:42

sauvegarde des macros dans un fichier simple sans plugins.

ayant par exemple macro m . En mode insert, à E. g début de la nouvelle ligne, puis tapez 3 touches

ctrl-r ctrl-r m

la macro avec échappe sera mis en ligne. (modifiable au besoin) Dans un autre nom de ligne/commentaire. Ajouter d'autres macros si vous le souhaitez-puis enregistrer ce fichier comme par exemple : w my_vim_macros

quand vous voulez réutiliser enregistré macro(s): placez le curseur sur le début de la chaîne macro, puis 4keys

" xy$

et la macro (cette ligne sera tiré pour vous inscrire x.

0
répondu Lea Bednarczyk 2018-04-06 05:28:33

je réponds à ce que je fais pour ajouter Escape en macro.

à l'Aide dans l'éditeur vim

:let @a='iabcjj'

ici je map <ESC>jj par

.fichiers vimrc

imap jj <esc> 
0
répondu vusan 2018-09-24 09:00:53