我有以下vimscript功能:
function! WindowCommand(cmd)
execute a:cmd
if !g:golden_ratio_enabled
normal <C-w>=
endif
endfunction
我这样使用它:
map <space>w/ :call WindowCommand(':vs')<cr>
它应该平衡窗口,但只有当g:golden_ratio_enabled
为0时,否则它应该什么都不做。
map <space>w/ :vs<cr><C-w>=
我在这里做错了什么?
答案 0 :(得分:2)
有几个修复。值得庆幸的是,修复非常简单
无论出于何种原因,normal <C-w>foo
都不起作用;您必须改为使用wincmd
。来自:h wincmd
*:winc* *:wincmd*
These commands can also be executed with ":wincmd":
:[count]winc[md] {arg}
Like executing CTRL-W [count] {arg}. Example: >
:wincmd j
Moves to the window below the current one.
This command is useful when a Normal mode cannot be used (for
the |CursorHold| autocommand event). Or when a Normal mode
command is inconvenient.
The count can also be a window number. Example: >
:exe nr . "wincmd w"
This goes to window "nr".
所以在这种情况下,你应该做
wincmd =
或者,您可以输入<C-w>
来输入文字<C-v><C-w>
字符。在您的vim会话中,此字符将显示为^W
。
答案 1 :(得分:1)
要使用<notation>
执行操作,请改为使用:
:exe "normal \<notation>"
我经常使用它来调试映射。
但在这种情况下,确实更喜欢wincmd
。