基于打开的窗口数量的键映射

时间:2015-02-15 08:44:35

标签: vim window

我将此映射设置为yp:

noremap  <C-W>  :wq<CR>

并且只有当屏幕上有一个窗口时才能使它工作(即使之前还有其他一些窗口,我有 关)。我该怎么办?

1 个答案:

答案 0 :(得分:1)

您可以使用:help :map-expr定义条件映射;单个窗口的条件是winnr('$') == 1:Ergo:

noremap <expr> <C-W>  winnr('$') == 1 ? ":wq<CR>" : ""

如果有多个窗口,我已将映射设为无操作。您也可以返回"<C-w>",以避免失去非常有用的CTRL-W子模式(正如@romainl已经注释过的那样)。我也不明白你的动机; :wq仅适用于当前缓冲区;如果其他人开放,无论如何,Vim都不会退出。