我处于定期使用两种不同的键盘布局(Programmers-Dvorak和Turkish-F)的情况中,与众不同。这些布局彼此之间有很大的不同,我只能精通一组肌肉记忆的vim。我非常精通Dvorak布局中的vim命令,但是如果我的键盘是Turkish-F布局,则几乎无法使用。不幸的是,我经常用英语和土耳其语甚至混合语言来编辑文件。我的熟练程度是,我可以在各自的键盘布局中很好地键入任何一种语言,但是我的大脑拒绝交叉连接它们,甚至从Dvorak布局中用土耳其语键入几个单词,反之亦然。
我有两个按键致敬的绑定来更改Xorg中的布局,但是即使这样,在编辑混合语言文件时,vim中的工作流程也很笨拙:
<vim commands…>i<switch to tr>…content…<escape><switch to en><vim commands…>
我希望能够将其简化为:
<vim commands…><leader>i…content…<escape><vim commands…>
...这样就可以使用<leader>i
一组:imap
值来模拟土耳其语布局,而无需更改系统键盘布局。同时,i
将切换到插入模式,但没有多余的:imap
值。值本身很容易,我只需要像这样的字母映射即可:
:imap a u
:imap A U
:imap o i
:imap O İ
"etc.
问题是,如何设置两个插入模式,一种正常插入模式和一个伪插入模式是除了一堆映射的相同的,以及如何可以触发这些模式与<leader>i
,<leader>a
等?
:imap
是,即使在远程ssh会话中或未$DISPLAY
设置时它也可以工作。
InsertEnter
andInsertLeave
autocmds,可用于自动切换布局。具体来说,InsertLeave
您可以在上检查是否为土耳其语,如果是土耳其语,请切换至Dvorak,设置一个标志,然后在再次输入插入时再次切换至土耳其语(如果是上次退出插入模式的情况)。