Estou na posição um pouco incomum de usar dois layouts de teclado diferentes regularmente ( programadores-Dvorak e turco-F ). Esses layouts são bem diferentes um do outro e eu só posso ser proficiente no vim com um conjunto de memórias musculares. Sou bastante competente com os comandos vim no layout Dvorak, mas é quase impossível usá-lo se meu teclado estiver no layout turco-F. Infelizmente, edito regularmente arquivos em inglês e turco e até mesmo idiomas mistos. Minha proficiência é tal que eu posso digitar qualquer idioma em seu respectivo layout de teclado, mas meu cérebro se recusa a conectá-los e digitar algumas letras de uma palavra em turco no layout de Dvorak ou vice-versa.
Eu tenho ligações com duas teclas de saudação para alterar o layout no Xorg, mas mesmo isso me deixa com um fluxo de trabalho estranho no vim ao editar arquivos de idioma misto:
<vim commands…>i<switch to tr>…content…<escape><switch to en><vim commands…>
Gostaria de poder encurtar isso para algo como:
<vim commands…><leader>i…content…<escape><vim commands…>
... de modo que o uso <leader>i
define vários :imap
valores para emular o layout turco sem alterar o layout do teclado do sistema. Ao mesmo tempo, i
passaria para o modo de inserção, mas sem os :imap
valores extras . Os valores em si são fáceis, eu só preciso dos mapeamentos do alfabeto como estes:
:imap a u
:imap A U
:imap o i
:imap O İ
"etc.
A questão é, como de configuração dois modos de inserção, um modo de inserção normal e um modo de pseudo inserto que é idêntica, excepto por um grupo de mapeamentos, e como pode desencadear estes modos com <leader>i
, <leader>a
etc.?
:imap
é que ele funcionaria mesmo em uma sessão ssh remota ou quando $DISPLAY
não estiver definido.
InsertEnter
eInsertLeave
, que podem ser usados para alternar os layouts automaticamente. Especificamente,InsertLeave
você pode verificar se é turco, se for, alterne para Dvorak, defina um sinalizador e, quando inserir novamente, volte para turco, se esse foi o caso da última vez que saiu do modo de inserção.