键盘映射背后的基本概念

键盘映射背后的基本概念

我对按键映射问题感到沮丧。

在我的 Linux 机器上,如果我在 Vim 中输入Home/ End,那么光标实际上会移动到行首/行末。在我的 Mac 上,当我使用 TextEdit 时,如果我输入Fn + LeftFn + Right,它会将我带到行首/行末。

但是如果我在 Mac 终端上使用 Vim,则相同的组合键不起作用。为什么?我在网上看到了所有不同的神秘设置,我必须将它们粘贴到 .vimrc 中才能使其工作,但我找不到这些神秘的 map、imap 设置的任何解释。

这里的根本问题是什么?我该如何解决它?

谢谢!

答案1

(这本来应该是一条评论,但是空间不够了)

我猜测 Linux 的做事方式和 OS X 的做事方式之间的一个显著区别在于,传统的 *nix 盒子和大多数常规键盘都没有可预测的 fn 键,因此设计一个假设如此的键盘映射是没有意义的。

Vim 有它自己的、可以修改的老式 unix 键绑定,因此使用了 linux 和大多数经典 unix 使用的老式、可靠的方式。

Apple 控制着 Mac 硬件的各个方面,因此他们可以可靠地假设 fn 在那里。TextEdit 仅适用于 OS X,并且主页以及转到顶部选项是操作系统。fn 左/右键用于开始/结束可能是一种解决方法。您可以随时进行更改,~/Library/KeyBindings/DefaultKeyBinding.dict以使 textedit 和其他苹果风格的应用程序与其他 unix 风格的应用程序一致地工作。

有趣的是,OS X 人机界面文章,因此很难猜测苹果这样做时在想什么。

答案2

Vim 响应与 关联的键码<End>。由于您的 Macbook 键盘上没有<End>键,因此必须以某种方式模拟该键码:通过 fn+right。该组合在 Macvim 中有效,因此,如果您在终端中使用 Vim,则很可能在 Vim 有机会接收该组合之前就将其中断。

如果您使用真正的键盘,您就不会有任何理由抱怨:Vim无需执行任何操作即可完美<End>运行。<Home>

答案3

我不确定我是否回答:

vim 中已经有了这个键映射:

在正常模式下,按 ^ 转到开头,按 $ 转到结尾(考虑正则表达式)

如果要在行首进入插入模式,请输入 I(插入)

如果要在行尾进入插入模式,请输入 A (附加)

相关内容