我想创建一个vimrc映射,让我可以更快地调整垂直分割的大小。我想过这样做:
noremap <c-[> :vertical resize +5<cr>
noremap <c-]> :vertical resize -5<cr>
它运作良好。唯一的问题是,因为我正在映射(控制和左方括号),当我在正常模式下击中Escape时,它也会导致分割的大小调整。我认为这是因为你通常可以选择逃脱。
所以问题是,我可以映射该键序列但不能映射Escape吗?我在这里丢失了一些蠢事吗?
答案 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。)