【问题标题】:Remapping a key to Escape in Vim (German keyboard)在 Vim 中将键重新映射到 Escape(德语键盘)
【发布时间】:2012-08-19 05:30:07
【问题描述】:

好的,所以我一直在试用 Vim(标准控制台版本;我的操作系统是 Linux Mint 13),我想摆脱使用 Escape 键来更改模式的麻烦。最好,我想交换 Capslock 和 Escape 键,但据我所知,这在 Vim 本身内是不可能的。我发现的大多数“解决方案”都涉及在全局级别更改密钥(使用xmodmap 或其他),但我真的不想要那样。如果有仅在 Vim 中可以轻松交换 Capslock 和 Escape 的方法,请告诉我。

我听说的另一个常见的事情是使用“Ctrl-[”作为 Escape 的等效项。但是,因为我使用的是具有不同布局的德语键盘,所以这不是一个选择。所以,我想我会在 Vim 中使用noremap <C-ü> <Esc>(德语键盘上的“ü”键与美国键盘上的“[”键在同一个位置),但这也不起作用。我假设那是因为“ü”不是 ASCII 字符。有没有办法让这些选项中的任何一个起作用?

更新:嗯,这很奇怪。在进行了更多实验之后,似乎“Ctrl-ü”确实有效。我不确定发生了什么——也许我在尝试不同的事情时弄乱了一些与编码相关的设置?如果重新映射大写锁定没有好的解决方案,我想我会坚持使用“Ctrl-ü”。

【问题讨论】:

  • 不是您正在寻找的“简单”解决方案,但您可以查看源代码,更改绑定并重新编译 vim。
  • 嗯,我可以,但老实说,这是我最不想做的事情——如果不每次都更改源,我什至无法更新 Vim!全球重新映射 Capslock 似乎并没有那么糟糕 ;-)

标签: linux vim keyboard console


【解决方案1】:

很多人使用jk:

inoremap jk <Esc>

你也可以简单地做&lt;C-c&gt;

【讨论】:

  • 我真的不喜欢将普通字符序列重新映射到 Escape 的想法(如果我想输入“jk”怎么办?),所以这对我不起作用。 &lt;C-c&gt; 与 Escape 相同,所以也没有运气......
  • 非常非常接近。比较:help i_&lt;esc&gt;:help i_ctrl-c
  • 我看到 jj 比 jk 更常见,但是你不经常输入的任何东西都可以,如果它映射到 esc,输入 jj 或 jk,只需输入第一个字符,等待大约半个第二个,再打第二个,就不会调用映射了,就是慢,但是如果不经常打jj或者jk的话,问题不大。
  • 是的,我也设置了 inoremap jj,我不知道任何连续有 2 个 j 的单词,并且在不太可能的情况下,您无论如何都想使用该序列,只需稍等一下在两个 j 按键之间可以正常工作
【解决方案2】:

所以,是的,最终我决定使用&lt;C-ü&gt;,因为它不会与其他任何东西冲突,而且它与美国键盘上的&lt;C-[&gt; 相同。

但是,因为我已经厌倦了使用德语键盘布局进行编程(例如,要获得“{”,您需要键入“Alt Gr-7”),我将我的键盘切换到美国国际,就 Vim 而言,它本质上具有类似的效果。如果您想养成触摸打字的习惯,这也会有所帮助;您实际上无法查看键盘,因为键未标记为“正确”;-)

【讨论】:

    【解决方案3】:

    这是另一个可能对您有用的替代方法!它涉及更改与 VIM 相关的键盘文件。我找到了这个建议on this youtube video

    $ cd /usr/share/X11/xkb/symbols/
    sudo vim pc
    

    要编辑大写锁定键以进行转义,请将大写锁定行更改为如下所示:

    key <CAPS> { [ Escape ] }; 
    

    :wq#写入并关闭文件

    注销并重新登录机器,它应该会更新!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 2012-07-11
      • 2015-07-11
      • 2019-05-05
      • 2020-10-03
      相关资源
      最近更新 更多