Truc vicieux pour Vim

Sans doute vous est-il arrivé, après avoir défini un raccourci du genre Shift F4 dans votre vimrc favori, de constater que ce raccourci ne faisait pas l'opération attendue. Ou, plus exactement, que les touches de ce raccourci étaient mal comprises.

Anecdote personnelle : dans un de mes fichiers de configuration de Vim, j'ai affecté au raccourci Shift F4 la commande pdflatex qui permet de produire un fichier PDF avec LaTeX. Le fichier perso-vim.vimrc en question contient le code :

" PDFLaTeX
map <S-F4> <ESC>:w<CR>:!pdflatex %<.tex<CR>
imap <S-F4> <ESC>:w<CR>:!pdflatex %<.tex<CR>a

Ainsi, ce raccourci, au lieu de lancer la commande souhaitée, effaçait deux lignes et passait en mode insertion (commande Vim : 2S) ; on comprendra pourquoi en regardant le code bizarroïde un peu plus bas dans cette page.

La parade fut d'affecter à Shift F4 le code réellement renvoyé par Shift F4 grâce à l'indispensable Ctrl V de Vim. Ctrl V est le raccourci qui permet d'écrire dans toutes les situations le code renvoyé par telle(s) ou telle(s) touche(s), au lieu d'effectuer l'action correspondante.

L'affectation voulue se fait en rajoutant dans vimrc la ligne :

set <S-F4>=

avant la déclaration du raccourci prévu.

Explication : <S-F4>, c'est Shift F4 dans le langage de Vim et le code bizarroïde est obtenu en pressant Ctrl V puis, tout de suite, Shift F4.

Pas mal, non ? Pour plus de détails, consultez le manuel de Vim sur les raccourcis : :help map à partir du mode normal.

Par contre, il se peut dans certains cas, qu'il faille déclarer le raccourci avec son code «brut» :

map  :!thunar $PWD &
imap  :!thunar $PWD &