当我在命令行输入时,我怎么能让Vim使用绝对行号呢?

时间:2014-01-28 20:21:40

标签: vim

我想要一个简单的augroup,当我进入命令窗口时,将所有缓冲区切换为绝对行号(对于Ex命令)

我目前的代码是:

augroup cmdWin
  autocmd!
  autocmd CmdwinEnter  *  setglobal  nornu   
  autocmd CmdwinLeave *  setglobal  rnu 
augroup END

但这似乎不起作用。

2 个答案:

答案 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 + nornunonu + rnu之间切换;如果您想保持nu并且只需切换rnu,就可以调整逻辑。

答案 1 :(得分:2)