【问题标题】:diagnosing key binding problems in Vim诊断 Vim 中的键绑定问题
【发布时间】:2016-09-22 18:39:57
【问题描述】:

我正在处理 vim 中的映射并遇到了问题。我可以映射到<Up><Down><Left><Right>,我可以映射到<S-Left><S-Right>,但我不能映射到<S-Up><S-Down>。换句话说

:nmap <S-Right> l 

有效,所以也有效

:nmap <Up> l

但是

:nmap <S-Up> l 

没有。

也许 SO 会知道这个问题的答案,在这种情况下,我会将问题标题更改为更具体。但如果做不到这一点,我想要一些可以用来诊断哪里出了问题的命令。

(如果我用上面的命令分解了你的密钥,输入:unmap &lt;Up&gt;

【问题讨论】:

  • 映射k 将适用于shift-k,反之亦然。换句话说,使用键映射 shift 的工作方式与仅映射键的方式相同。因此,升档与升档相同。尝试映射k。并使用 shift-k 来查看映射是否适用于 shift-k,即使您映射为 k
  • 您可以尝试 alt 或 Ctrl 与其他键。

标签: vim customization key-bindings


【解决方案1】:

问题可能出在您的终端 [设置]。

解决问题的方法是尝试逐字插入 Vim 收到的密钥。在插入模式下,键入&lt;C-V&gt;,然后按(移位的)光标键。对我来说(带有TERM=gnome-256color 的gnome-terminal),我得到了这些不同的值(所以移动的光标键都对我有用,耶):

" Up, S-Up, Down, S-Down
^[OA ^[[1;2A ^[OB ^[[1;2B

" Left, S-Left, Right, S-Right
^[OD ^[[1;2D ^[OC ^[[1;2C

如果你看到 shift 键和 unshift 键的值相同,你的终端不会区分它们,所以 Vim 也不能。下一步是检查您的终端设置/使用不同的终端。

【讨论】:

  • 同样,如果您的窗口管理器或终端先捕获它们,您可能根本看不到它们。
  • 好的,谢谢。问题出在我的终端设置中:我的终端有规则告诉 S-Left 和 Left,而不是 S-Up 从 Up,并且 C-V 的结果中的差异很明显。我知道 C-V,但不知道它应该能够区分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
相关资源
最近更新 更多