我想要一个简单的augroup,当我进入命令窗口时,将所有缓冲区切换为绝对行号(对于Ex命令)
我目前的代码是:
augroup cmdWin
autocmd!
autocmd CmdwinEnter * setglobal nornu
autocmd CmdwinLeave * setglobal rnu
augroup END
但这似乎不起作用。
答案 0 :(得分:4)
:setglobal
无效,因为它只是设置了将来的默认值,但不会更新现有窗口中的值。您需要将此应用于所有当前窗口,通常使用:windo
,但在涉及特殊命令行窗口时更改窗口是个坏主意。因此,我们通过setwinvar()
和循环“
augroup cmdWin
autocmd!
autocmd CmdwinEnter * for i in range(1,winnr('$')) | call setwinvar(i, '&number', 1) | call setwinvar(i, '&relativenumber', 0) | endfor
autocmd CmdwinLeave * for i in range(1,winnr('$')) | call setwinvar(i, '&number', 0) | call setwinvar(i, '&relativenumber', 1) | endfor
augroup END
这会在nu + nornu
和nonu + rnu
之间切换;如果您想保持nu
并且只需切换rnu
,就可以调整逻辑。
答案 1 :(得分:2)