如何打开或关闭(所有)行号

时间:2020-05-22 03:05:33

标签: vim

假设我有以下几种组合:

" one if not both is usually on
set number         " could be on or off
set relativenumber " could be on or off

有没有一种方法可以在不丢失信息的情况下切换这些开/关(不知道设置了什么,即我想做一个简单的键盘快捷键来切换当前行号选择的可见性)?例如,如果我只设置了rnu而我做到了:

:set number!

这真的对我没有帮助,因为我仍然设置了rnu,并且左侧仍然有line-number column。如果是这样,怎么办?

2 个答案:

答案 0 :(得分:1)

尝试一下:

  • 当前,我正在将其映射到<F7>,您可以根据需要更改映射
  • 我正在使用全局变量,如果需要,可以更改范围

此功能将禁用所有行号显示并恢复到旧的行号设置。

function! MagicNumberToggle() abort
    if &nu + &rnu == 0
        let &nu = g:old_nu
        let &rnu = g:old_rnu
    else
        let g:old_nu = &nu
        let g:old_rnu = &rnu
        let &nu = 0
        let &rnu =0
    endif
endfunction
nnoremap <F7> :call MagicNumberToggle()<cr>

答案 1 :(得分:0)

一种衬板解决方案

:nnoremap <silent> <C-n> :let [&nu, &rnu] = [!&rnu, &nu+&rnu==1]<cr>

要了解会发生什么,请尝试:

:echo [&nu, !&rnu]

&nu ............. gets the value of number
!&rnu ........... the oposite value of relative number

更多:h nu