2

<C-W><C-O><C-W>o调用 vim 单窗口命令,该命令最大化当前的 vim 拆分,并且烦人的(如果你不小心输入它)关闭所有其他命令。

我想将它重新映射到<C-W><C-_>不关闭其他窗口的位置。

在 .vimrc 我有

map <c-w><c-o> <c-w><c-_>
map <c-w>o <c-w><c-_>

如果我键入C-W然后oC-O快速连续,这将起作用。但是,如果我键入C-W,则稍等片刻,然后键入oC-O绕过我设置的映射,并调用单窗口命令。

我应该使用其他地图变体吗?

4

3 回答 3

3

您可以做的另一件事是修改'timeout''timeoutlen'设置:

例如:set timeoutlen=3000,将映射超时设置为 3 秒而不是 1(默认)。

参考:help 'timeout':help 'timeoutlen'

于 2013-07-23T09:30:08.943 回答
2

映射和内置双键映射的区别在于<C-w>o前者超时,而后者无限期地等待第二次按键。要使用映射完全覆盖该行为,您必须为 定义一个(表达式-)映射,并使用(也无限期地等待)<C-w>处理映射内的第二个键。getchar()

但是请仔细考虑是否真的需要这样的努力:如果你容易用粗手指或按错键,你对 Vim 的使用将受到严重阻碍。最好通过快速反馈来了解您按错了什么,并努力提高您的肌肉记忆力!

于 2013-07-23T09:26:44.847 回答
1

放入您的.vimrc怎么样set hidden,所以在关闭所有拆分后它们不会关闭,只放入后台?之后,您可以通过:ls命令列出所有打开的缓冲区。

但是关于您的映射,也许您可​​以先尝试取消映射(或者甚至更好的 nunmap - 它仅在正常模式下取消映射命令)o,然后再映射它。

于 2013-07-23T07:37:17.700 回答