【问题标题】:Programmer's VIM setup for Finnish/Swedish or other non-US keyboard layout芬兰语/瑞典语或其他非美国键盘布局的程序员 VIM 设置
【发布时间】:2011-05-22 12:26:43
【问题描述】:

我最近一直在学习一些 VIM 技巧,我学到了很多有用的命令,并且在使用 VIM 编辑文本方面变得非常高效。我正在使用芬兰的 qwerty 键盘布局(见下图),这对于编程来说非常糟糕。通过按 shiftalt grnumber 键,您所有常用的编码特殊字符 ()[]{}/\ 都会发生,但我已经很习惯了到那个。我不想改变我的键盘布局,因为我用我的母语进行了大量的写作和 IRC 聊天,为此我需要 äö 字符(å 对我来说没用,只有瑞典人使用它)。

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

键盘布局如下所示:

注意:标记为蓝色的键是通过按 AltGr(右 alt)和相应的键写入的。红色的是双键组合字符或死键,它们本身不发出字符。前任要键入ü 字符,首先按¨^~ 键,然后按u。重音键也是如此。这些死键在 VIM 中是不可映射的。

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

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

【问题讨论】:

  • +1 这样你就可以发布图片了:P
  • 您实际上可以将操作映射到 ÖÄ,但您对 <C-ä> 映射是正确的。

标签: keyboard keyboard-shortcuts vim keymapping


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我对此的解决方案是我制作了一个自定义键盘布局,它将美国布局的最佳方面结合到芬兰键盘布局中。它的好处是它将更改保持在最低限度,因此几乎不存在学习曲线。

    其背后的理念是最大限度地减少使用AltGr 的需求,并使其尽可能接近标准鳍布局。虽然AltGr下面有一些键,但它们都在左侧数字下面,所以你永远不必在用拇指按住修饰符的同时用右手笨拙地按下它们。

    我用来制作布局的程序是Ukelele for macOS 和Microsoft Keyboard Layout Creator for Windows。我叫它Finner.keylayout / Finner.klc

    这是它的 GitHub 存储库:https://github.com/ruohola/finner

    这是基本布局(在修饰符下有更多键),更改后的键突出显示:

    【讨论】:

    • 大声笑,我以为我是唯一有这个解决方案的人!
    • @rickythefox :D 也可以随意分享。
    • 我采用了类似的解决方案:基于美国的键盘,但经过编辑后可以通过 AltGr 轻松访问我需要的非美国字符。我发现 kbdedit.com 非常适合这个,而且值得几美元。
    【解决方案3】:

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

    那张图片可能没有我所做的所有角色,但无论如何,大部分都是。

    【讨论】:

      【解决方案4】:

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

      h keymap
      h langmap
      

      【讨论】:

        【解决方案5】:

        作为一个实用的权宜之计,你能不能简单地在布局之间切换?

        例如,在 Ubuntu 中,您可以通过转到Preferences → Keyboard → Layouts → Options → Key(s) to change layout 来设置热键以在布局之间轻松切换。我使用两个 Shift 键在布局之间快速移动,甚至还有一个选项,以便每个窗口都有自己的布局设置,如果您在编写文档/电子邮件/等时在美国英语布局中使用 Vim 进行编程,则效果很好。在不同布局的其他窗口中。即使我必须切换布局(对于代码 cmets 等),也只需轻按两个 Shift 按钮即可继续操作。

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

        【讨论】:

        • 最大的缺点是许多常见的移位键,如 * 和 vim,也许你已经习惯于记住你是否处于插入模式;这里是脾气暴躁的 Emacs 用户。)
        【解决方案6】:

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

        例如 ctrl-] 映射到 meta- down

        【讨论】:

        • 您实际上只需按CTRL¨^~ 键即可在Vim 中获取CTRL-] 操作。之所以有效,是因为 Vim 正在侦听关键代码,而不是 CTRL 序列中的实际字符。
        • @ruohola 你是对的,但这需要我记住] 在美式键盘上的位置。我已经记得预期的键绑定 (CTRL-]),但我不知道为什么。因此,最后我选择了一个键绑定,在我的脑海中以某种方式跳转到光标下的标签,因为我还有<m-left><m-right> 来导航跳转位置。
        • 完全可以理解,只是想指出不需要重新映射。从我的回答中可以看出,我自己已经通过使用自定义键盘布局解决了这个问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-20
        • 1970-01-01
        • 2016-04-20
        • 2016-05-08
        • 1970-01-01
        • 2015-05-15
        • 2012-02-04
        相关资源
        最近更新 更多