vim - 当我在命令行中输入时如何让 Vim 使用绝对行号,否则如何使用相对行号?

标签 vim

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

我目前的代码是:

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

但这似乎不起作用。

最佳答案

:setglobal不会工作,因为它只是设置 future 的默认值,但不会更新现有窗口中的值。您需要将其应用于所有当前窗口,通常使用 :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 .

关于vim - 当我在命令行中输入时如何让 Vim 使用绝对行号,否则如何使用相对行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21415962/

相关文章:

vim - 是否可以在 vim 中直接读入新缓冲区?

plugins - Vundle for VIM 无法在 Ubuntu 上运行

vim - 在 Vim 中有不止一种方法可以退出插入模式?

vim - 当我在 Chrome 中保存对 html 文件的更改时自动重新加载浏览器?

linux - 如何在 Vim 或 Linux 中将空格转换为制表符?

vim 计算不包含模式的行数

vim - 拆分窗口时如何防止 Vim 滚动?

vim - 如何在 Vim 上更改折叠部分的颜色

vim - 如何在 vi 或 vim 中多次缩进一行?

macos - 如何在mac终端切换到vi编辑模式