映射到<c - [>但不覆盖<esc> </esc> </c - [>

时间:2014-02-22 00:18:17

标签: vim

我想创建一个vimrc映射,让我可以更快地调整垂直分割的大小。我想过这样做:

noremap <c-[> :vertical resize +5<cr>
noremap <c-]> :vertical resize -5<cr>

它运作良好。唯一的问题是,因为我正在映射(控制和左方括号),当我在正常模式下击中Escape时,它也会导致分割的大小调整。我认为这是因为你通常可以选择逃脱。

所以问题是,我可以映射该键序列但不能映射Escape吗?我在这里丢失了一些蠢事吗?

1 个答案:

答案 0 :(得分:5)

你要做的是一件棘手的事。

有一个相对现代的想法,用户键入的是一个键码,带有修饰符的“和弦”;因此 Ctrl + [ [的键码,同时按住 Ctrl 键。如果您正在编写本机Windows应用程序或本机GNOME应用程序或其他任何内容,那么您可以访问此级别的信息。

然而,旧的“哑终端”只发送纯ASCII,我很确定库函数vim使用ASCII字符处理。当用户输入字符时,vim会看到一串字符,无法检查密钥代码或修饰符。

你可以用vim的GUI风格做你想做的事,但我的猜测是基于角色的那些不会这样做。

但我认为最好还是做别的事情。首先, Ctrl + ] 在vim中已经有了一个有用的功能。

以下是我的建议:绑定以 [] 开头的序列。在vi和vim中, [[]] 是有效的导航键序列,您可以绑定相似的序列而不阻止它们的使用。

例如,您可以为两者绑定 [v ] v ,因为“vertical resize”以 v 开头。< / p>

在经典的vi中,我确信 [v ] v 默认情况下不会绑定任何内容。在vim中,我很确定他们也没有任何约束力。 (vim有很多功能我犹豫不决!但我手册中没有找到任何内容,当我尝试输入时,vim只是发出哔哔声。)

作为另一种选择,您可以绑定功能键。我的功能键在vim中都没有使用。

请注意,即使键盘没有功能键,vi也可以使用功能键。您可以键入#2并调用绑定到功能键 F2 的宏。 (我以前使用没有功能键的哑终端,ADM-3A。)