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" ?
6 réponses
essayez d'entrer dans l'évasion avec <Ctrl-v><Esc>
en mode insert.
Voir :help i_CTRL-V
dans vim.
<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>'
Où ^[
est juste un char formé par appuyant sur la touche CTRL+ V ESC. Notez l'évasion juste au début de la macro.
si vous utilisez Windows behavior pour vim où Ctrl+ V est la commande Paste, la séquence équivalente est Ctrl+ Q
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.
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.
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>