我最近学习了一些VIM hackery,我学到了很多有用的命令,并且在使用VIM编辑文本时非常有效。我正在使用芬兰qwerty键盘布局(见下图),这对于编程来说非常糟糕。所有常用的编码特殊字符()[]{}/\
通过按shift或alt gr和数字键发生,但我已经习惯了。我不想改变我的键盘布局,因为我用我的母语写了很多写作和IRC聊天,因为我需要ä
和ö
字符(å
对我来说没用,只有瑞典人使用它)。
我的问题是默认情况下某些VIM命令有一个相当困难的键映射,例如go-to-tag-under-cursor是^],它转换为芬兰语键盘上的Ctrl-AltGr-9。这需要我用左手按左控制键,用右手拇指按alt,用右手食指伸到9号键。这就像使用emacs和/或演奏古典吉他一样。不完全符合人体工程学。
这是键盘布局的样子:
注意:通过按AltGr(右Alt)和相应的键来写入标记为蓝色的键。红色的是双键组合字符或死键,它们不会自己给出一个字符。 F.ex.键入ü
字符,首先按¨^〜键然后按u。重音键也是如此。这些死键在VIM中是不可映射的。
所以基本上我有3个额外的字母键(äöå)可用,但它们不能被映射多次,修饰键不能用于它们(在VIM中)。我可以映射到ä
,但不是Ä
或<C-ä>
。
现在我正在寻找我的VIM设置的想法,从芬兰语/瑞典语或其他非美国键盘布局用户。请分享您的密钥映射,.vimrc提示以及其他可能有用的内容。
我只是在编码时保持键盘采用US布局,并且在编写需要重音字母或其他语言特定字符的文本时才切换到本地布局(意大利语)。毕竟它只是一个按键来切换,没有什么比美国的编程布局更好。我试了一下,但发现指定大量的映射来解决这个问题要比完全需要的布局开关麻烦得多。
我的解决方案是使用美国和FIN / SWE布局的自定义组合。工作得很好(或至少比可怕的鳍布局更好)。
那个图像可能没有我做过的所有角色,但大多数都没有。
您可以使用langmap和keymap设置whim VIM。我用它来做colemak。您可以指定自己的布局。
h keymap
h langmap
作为一个实际的权宜之计,你能不能简单地在布局之间切换?
例如,在Ubuntu中,您可以设置热键,通过转到Preferences → Keyboard → Layouts → Options → Key(s) to change layout
轻松切换布局。我使用两个Shift键在布局之间快速移动,甚至还有一个选项,以便每个窗口都有自己的布局设置,如果您在编写文档/电子邮件/等时使用美国英语布局在Vim中编程,则该选项很有效。在其他窗口中的不同布局。即使我必须切换布局(用于代码注释等),只需轻轻按下Shift按钮并继续操作即可。
在其他桌面环境/操作系统中应该有类似的方法来配置它。
我的解决方案是我制作了一个自定义键盘布局,它将美国布局的最佳方面与芬兰布局相结合。关于它的好处是它将变化保持在最低限度,以便学习曲线几乎不存在。
其背后的理念是尽量减少使用AltGr
的需要,并尽可能保持接近标准的Fin布局。即使在AltGr
下有一些按键,你也不必用右手按住它们,同时用拇指按住修改器。
我用来制作布局的程序是用于macOS的Ukelele和用于Windows的Microsoft Keyboard Layout Creator。我叫它Finner.keylayout
/ Finner.klc
。
这是基本布局(它在修饰符下有很多键),突出显示更改的键:
我只是将那些ctrl-combos映射到其他键绑定。
例如,ctrl-]映射到meta-down。