Vim:x 终端键映射

Vim:x 终端键映射

我通常在 Windows 上使用 Vim,并且键映射没有任何问题,但现在我使用运行 Ubuntu 的虚拟机,通过 MobaXterm 访问,事情不太正常。这包括基本的东西,比如<c-s>保存和<F5>运行,没有它们我就活不下去。我已经完成了研究并阅读了似乎可以解决这个问题的材料(这里这里),但它们超出了我的理解范围。坦率地说,必须<c-v>在功能键之前按下是非常奇怪的。当我尝试时它甚至不起作用。有人可以解释一下吗?作为测试用例,如果我想映射<F2>:pwd,我必须做什么?

令我高兴的是,我发现我的键映射在 Ubuntu 的 gVim 上按预期工作,所以我将使用它。不过,我仍然想要答案,因为我实际上更喜欢终端上普通旧 vim 的快速和轻松的感觉。

答案1

您将不得不忍受没有它的情况,ctrlS因为这是停止输出的终端命令(ctrlQ撤消该操作)。

其他功能键应该是可映射的,没有任何问题,只需输入:map,然后点击您想要映射的功能键,其中应该显示例如<F5>F5,然后是空格,然后是您想要该键映射到的位置。

您可以将该行(不带前导冒号)放入文件中,~/.vimrc以便为每个 vim 会话启用映射。

如果您已经尝试过,请编辑您的问题以显示您到底尝试了什么以及结果是什么(以及与您的期望有何不同)。

编辑:如果您想映射终端定义中未定义的序列,则可以手动映射序列。

首先,您需要找出当您按 例如 时它发送了哪些字节/字符ctrlshiftF2。我总是用od -c这个;启动命令,按按键序列,点击ctrld将文件结尾发送到命令,然后打印解码的版本:

$ od -c
^[[24^
0000000 033   [   2   4   ^  \n
0000006

所以这是转义符,[, 2, 4, ^(换行符是我在序列之后输入的内容,应该被忽略;你也可以点击ctrld两次,但输出是在输入之后开始的,看起来很混乱)。

现在我们知道了序列,并且可以将映射添加到.vimrc.添加如下行:

map <C-[>[24^ :whateveryouwant

<C-[>序列是转义的 vim 表示,与 相同ctrl[。之后,这些字符就不再特殊,因此可以按原样输入。

现在ctrlshiftF2将映射到您启动 vim 时输入的右侧。

相关内容