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>i
imposta un insieme di :imap
valori per emulare il layout turco senza modificare il layout della tastiera di sistema. Allo stesso tempo, i
passerebbe alla modalità di inserimento, ma senza i :imap
valori 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>a
ecc?
:imap
che avrebbe funzionato anche in una sessione ssh remota o quando $DISPLAY
altrimenti non è impostato.
InsertEnter
eInsertLeave
autocmds, che puoi usare per cambiare layout automaticamente. In particolare,InsertLeave
puoi 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.