Keyboard 程序员';芬兰/瑞典或其他非美国键盘布局的s VIM设置

Keyboard 程序员';芬兰/瑞典或其他非美国键盘布局的s VIM设置,keyboard,keyboard-shortcuts,vim,keymapping,Keyboard,Keyboard Shortcuts,Vim,Keymapping,我最近学习了一些VIM hackery,我学习了很多有用的命令,并且在使用VIM编辑文本方面非常高效。我使用的是芬兰qwerty键盘布局(见下图),这对于编程来说非常糟糕。所有常用的编码特殊字符()[]{}/\都是通过按下shift或alt gr和数字键来实现的,但我已经非常习惯了。我不想改变我的键盘布局,因为我用我的母语写了很多东西和IRC聊天,为此我需要ä和ö字符(å对我来说没用,只有瑞典人用它) 我的问题是,一些VIM命令在默认情况下具有相当困难的键映射,例如,在芬兰键盘上,光标下的go-

我最近学习了一些VIM hackery,我学习了很多有用的命令,并且在使用VIM编辑文本方面非常高效。我使用的是芬兰qwerty键盘布局(见下图),这对于编程来说非常糟糕。所有常用的编码特殊字符
()[]{}/\
都是通过按下shift或alt gr和数字键来实现的,但我已经非常习惯了。我不想改变我的键盘布局,因为我用我的母语写了很多东西和IRC聊天,为此我需要
ä
ö
字符(
å
对我来说没用,只有瑞典人用它)

我的问题是,一些VIM命令在默认情况下具有相当困难的键映射,例如,在芬兰键盘上,光标下的go-to标记是^],它转换为Ctrl-AltGr-9。这需要我用左手按下左控制键,用右手拇指按下alt gr键,并将右手食指伸向数字9键。这感觉就像使用emacs和/或弹奏古典吉他。不完全符合人体工程学

以下是键盘布局的外观:

注意:按AltGr(右alt)和相应的键可写入标记为蓝色的键。红色的是两个关键组成字符或死键,它们本身不会发出一个字符。F.ex。要键入
u
字符,请先按^键,然后按u。重音键也是如此。这些死键在VIM中不可复制

所以基本上我有3个额外的字母键(äöå)可用,但它们不能被映射多次,修改键不能与它们一起工作(在VIM中)。我可以将某些东西映射到
ä
,但不能映射到
Ä


现在,我正在寻找芬兰/瑞典或其他非美国键盘布局用户对我的VIM设置的想法。请分享您的按键映射、.vimrc提示和其他可能有用的信息。

我在编码时只保留键盘布局,在编写需要重音字母或其他特定语言字符的文本时,只切换到本地布局(意大利语)。毕竟,它只是一个按键切换,没有什么能比得上我们的编程布局。我试过一点,但发现指定大量映射来解决这个问题比根据需要切换完整布局要麻烦得多。

作为一个实际的权宜之计,您能不能不在布局之间切换

例如,在Ubuntu中,您可以通过进入
首选项设置热键,轻松地在布局之间切换→ 键盘→ 布局→ 选择权→ 更改布局的键
。我使用两个Shift键在布局之间快速移动,甚至还有一个选项,这样每个窗口都有自己的布局设置,如果您在美国英语布局的Vim中编程,同时在其他不同布局的窗口中编写文档/电子邮件等,这一点很好。即使我必须切换布局(对于代码注释等),点击两个Shift按钮并继续只需很少的努力


在其他桌面环境/操作系统中应该有类似的配置方法。

我的解决方案是使用US和FIN/SWE布局的自定义组合。很好地工作(或者至少比可怕的鳍布局更好)


该图像可能没有我所使用的所有字符,但绝大多数字符都是这样。

我只是将这些ctrl-Combo映射到其他键绑定


例如,ctrl-]被映射到meta-down

您可以在VIM中使用langmap和keymap设置。我用它来做科尔马克。您可以指定自己的布局

h keymap
h langmap

我的解决方案是,我制作了一个自定义键盘布局,它将美国布局的最佳方面与芬兰布局相结合。它的好处是将变化保持在最小,这样学习曲线实际上就不存在了

其背后的理念是尽量减少使用
AltGr
,并尽可能保持其接近标准翅片布局。即使在
AltGr
下有一些键,它们都在左手边的数字下,所以你永远不必在用拇指握住修改器的同时用右手笨拙地按下它们

我用来制作布局的程序是针对macOS和Windows的。我叫它
Finner.keylayout
/
Finner.klc
。以下是其GitHub回购协议:

以下是基本布局(在“修改器”下有更多的关键点),已更改的关键点高亮显示:


+1这样你就可以发布图像了:p你实际上可以将动作映射到
Ö
Ä
,但是关于
映射你是对的。你实际上只需按
CTRL
^~
键就可以在Vim中获得
CTRL-]
动作。这是因为Vim正在侦听键代码,而不是
CTRL
序列中的实际字符。@ruohola你说得对,但这需要我记住
]
在美国键盘上的位置。我已经记得预期的键绑定(
CTRL-]
),我不知道为什么。因此,最后我选择了一个键绑定,它在我脑海中某种程度上对跳转到光标下的标记有意义,因为我还有
来导航跳转位置。完全可以理解,只是想指出不需要重新映射。我自己通过使用自定义键盘布局解决了这个问题,你可以从我的答案中看到。哈哈,我以为我是唯一一个有这个解决方案的人@rickythefox:D也可以随意分享你的。最大的缺点是,在美国版式中,许多常见的移动键,如*和<位于完全不同的位置。你可以通过一些努力在它们之间进行调整,但跟踪你所处的位置现在是另一个分心的事情。(不过,如果你喜欢vim,也许你已经习惯于记住了