Je suis dans la position légèrement inhabituelle d'utiliser régulièrement deux dispositions de clavier différentes ( Programmers-Dvorak et Turkish-F ). Ces dispositions sont assez différentes les unes des autres et je ne suis capable de maîtriser le vim qu'avec un seul ensemble de souvenirs musculaires. Je suis assez compétent avec les commandes vim dans la disposition Dvorak, mais il est presque impossible à utiliser si mon clavier est dans la disposition Turkish-F. Malheureusement, j'édite régulièrement des fichiers en anglais et en turc et même en plusieurs langues. Ma compétence est telle que je peux assez bien taper l'une ou l'autre langue dans sa disposition de clavier respective, mais mon cerveau refuse de les croiser et de taper même quelques lettres d'un mot en turc à partir de la disposition Dvorak ou vice versa.
J'ai des liaisons de salut à deux touches pour changer la disposition dans Xorg, mais même cela me laisse un flux de travail maladroit dans vim lors de l'édition de fichiers en langues mixtes:
<vim commands…>i<switch to tr>…content…<escape><switch to en><vim commands…>
J'aimerais pouvoir raccourcir ceci en quelque chose comme:
<vim commands…><leader>i…content…<escape><vim commands…>
... telle que l'utilisation <leader>i
définit un ensemble de :imap
valeurs pour émuler la disposition turque sans modifier la disposition du clavier système. Dans le même temps, i
passerait en mode insertion mais sans les :imap
valeurs supplémentaires . Les valeurs elles-mêmes sont faciles, j'ai juste besoin des mappages alphabétiques quelque chose comme ça:
:imap a u
:imap A U
:imap o i
:imap O İ
"etc.
La question est, comment configurer deux modes d'insertion, un mode d'insertion normal et un pseudo insert mode qui est identique , sauf pour un groupe d'applications, et comment puis - je déclencher ces modes avec <leader>i
, <leader>a
etc.?
:imap
est que cela fonctionnerait même dans une session ssh à distance ou quand il $DISPLAY
n'est pas défini autrement.
InsertEnter
etInsertLeave
autocmds, que vous pouvez utiliser pour changer automatiquement de disposition. Plus précisément, sur le,InsertLeave
vous pouvez vérifier s'il est turc, si c'est le cas, basculez vers Dvorak, définissez un indicateur et lorsque vous entrez à nouveau dans l'insertion, revenez au turc si tel était le cas la dernière fois que vous avez quitté le mode d'insertion.