vim:用相对数字切换数字

jua*_*blo 16 vim vimrc

setl nu!
Run Code Online (Sandbox Code Playgroud)

我可以切换数字(开/关),类似于relativenumber

setl rnu!
Run Code Online (Sandbox Code Playgroud)

我如何切换 {off,number,relativenumber} ?

seh*_*ehe 18

因为我喜欢逻辑谜题,并且非常喜欢将 vim 命令放在一行以进行简洁重复(@:个人最喜欢的):

:exec &nu==&rnu? "se nu!" : "se rnu!"
Run Code Online (Sandbox Code Playgroud)

这将保持相同的循环。我认为这主要是因为let &nu=1会隐式设置 norelativenumber - 原因可能在文档中找到 :)

  • +1 因为我可以将它作为一行 `nmap <F3> 放在我的 .vimrc 文件中:exec &nu==&rnu? “瑟努!” : "se rnu!"<CR>` 使用 F3 在三个选项之间切换。 (4认同)
  • 你可以让 `nnoremap <silent> <F3>`... 减少视觉干扰和干扰其他映射。 (4认同)

Ben*_*oit 10

if &nu == 1
   set rnu
elseif &rnu == 1
   set nornu
else
   set nu
endif
Run Code Online (Sandbox Code Playgroud)


小智 7

从 Vim 7.3.1115 开始,这变得有点复杂了。

原因是除了“无行号”和“绝对行号”,现在相对行号还有两种设置:普通的“相对行号”和“光标所在行上有绝对号的相对行号”。

更从技术上来讲,所有四种组合'number''relativenumber'现在是可能的。

切换方法如下:


小智 7

对于那些想要更易读的解决方案的人,以下是我在 .vimrc 中的内容

" Relative or absolute number lines
function! NumberToggle()
    if(&nu == 1)
        set nu!
        set rnu
    else
        set nornu
        set nu
    endif
endfunction

nnoremap <C-n> :call NumberToggle()<CR>
Run Code Online (Sandbox Code Playgroud)

很酷的一点是你可以点击ctrl+n在相对和绝对数字模式之间切换!