Sono nella posizione leggermente insolita di utilizzare due diversi layout di tastiera su base regolare ( Programmers-Dvorak e Turkish-F ). Questi layout sono abbastanza diversi l'uno dall'altro e sono in grado di essere esperto solo con un set di memorie muscolari. Sono abbastanza abile con i comandi vim nel layout Dvorak, ma è quasi impossibile da usare se la mia tastiera è nel layout turco-F. Sfortunatamente modifico regolarmente i file in inglese e turco e anche in lingue miste. La mia competenza è tale che posso digitare abbastanza bene entrambe le lingue nel rispettivo layout di tastiera, ma il mio cervello si rifiuta di collegarle e digitare anche alcune lettere di una parola in turco dal layout Dvorak o viceversa.
Ho i vincoli di due tasti di saluto per cambiare il layout in Xorg, ma anche questo mi lascia con un flusso di lavoro scomodo in vim quando modifico file in lingua mista:
<vim commands…>i<switch to tr>…content…<escape><switch to en><vim commands…>
Vorrei essere in grado di abbreviare questo a qualcosa del tipo:
<vim commands…><leader>i…content…<escape><vim commands…>
... tale che l'utilizzo <leader>iimposta un insieme di :imapvalori per emulare il layout turco senza modificare il layout della tastiera di sistema. Allo stesso tempo, ipasserebbe alla modalità di inserimento, ma senza i :imapvalori aggiuntivi . I valori stessi sono facili, ho solo bisogno dei mapping dell'alfabeto qualcosa del genere:
:imap a u
:imap A U
:imap o i
:imap O İ
"etc.
La domanda è, come impostare due modalità di inserimento, una normale modalità di inserimento e uno pseudo modalità di inserimento che è identico tranne per un gruppo di mapping, e come posso innescare queste modalità con <leader>i, <leader>aecc?
:imapche avrebbe funzionato anche in una sessione ssh remota o quando $DISPLAYaltrimenti non è impostato.
InsertEntereInsertLeaveautocmds, che puoi usare per cambiare layout automaticamente. In particolare,InsertLeavepuoi verificare se è turco, se lo è, passare a Dvorak, impostare un flag e, quando si inserisce di nuovo l'inserimento, tornare a turco se è stato il caso l'ultima volta che hai lasciato la modalità di inserimento.