2010-05-31 5 views
24

J'utilise beaucoup la macro suivante Vim (il met la ligne actuelle à l'intérieur des balises XML):Comment enregistrer une macro Vim contenant des touches "Echap"?

I<e>^[A</e> 

Je sauvé dans mon .vimrc

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

Mais il ne fonctionne pas.
La partie ^[ signifie « échapper », mais on ne comprend pas en tant que telle dans .vimrc

Comment puis-je enregistrer cette macro, ou toute macro qui contient « Escape »?

Répondre

31

Essayez d'entrer l'échappement avec <Ctrl-v><Esc> en mode insertion. Voir :help i_CTRL-V dans vim.

+2

Non, il ne devrait pas. Avec le^[est un seul charater (code échappé pour ESC), pas les caractères '^' et '['. Juste testé à nouveau dans vim et gvim 7.2, il encapsule correctement une ligne dans les balises. – catchmeifyoutry

+2

test simple, lorsque vous déplacez le curseur le long de la partie ^, vous ne devriez pas pouvoir le placer entre les touches^et [, car il représente un seul code clé. – catchmeifyoutry

+0

L'astuce était en effet ce seul caractère de code clé, je n'ai pas vu de différence au début. Merci beaucoup! –

17

<ESC> est votre ami. Littéralement de type <ESC>, ainsi:

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

Voir :help key-notation dans vim pour plus d'informations.

Mise à jour:

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

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

^[ est juste un caractère formé en appuyant sur CTRL + VESC. Notez l'échappement à droite au début de la macro.

+0

ne fonctionne pas.D'ailleurs, je pense que des citations sont nécessaires. –

+1

Maintenant, je pense que je comprends ce que vous voulez dire par "ne fonctionne pas". Réponse mise à jour – Johnsyweb

+1

Ca marche, merci beaucoup: -D L'astuce était d'utiliser ce seul caractère au lieu de^[Maintenant je me rends compte que catchmeifyoutry avait la solution! –

4

Si vous utilisez le comportement Windows pour vim où Ctrl + V est la commande Coller, la séquence équivalente est Ctrl + Q

Questions connexes