在vim </c-w>中禁用或重新映射<c-w> o单窗口命令

时间:2013-07-23 04:38:36

标签: vim

<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我已设置的映射被绕过,并调用单窗口命令。

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

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

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

但是请仔细考虑是否真的需要这样的努力:如果你容易使用指法或按错键,你对Vim的使用将受到严重阻碍。通过快速反馈,你可以更好地学习你的错误,并尝试改善你的肌肉记忆!

答案 2 :(得分:1)

如何将set hidden放入.vimrc,所以在关闭所有拆分后,他们不会被关闭,只能放到后台?之后,您可以通过:ls命令列出所有打开的缓冲区。

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