和
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 - 原因可能在文档中找到 :)
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'
现在是可能的。
切换方法如下:
切换所有四个设置,没有数字?绝对的?亲戚?相对于光标行上的绝对值:
:exe 'set nu!' &nu ? 'rnu!' : ''
Run Code Online (Sandbox Code Playgroud)在没有数字之间切换?绝对的?亲戚:
:let [&nu, &rnu] = [&nu+&rnu==0, &nu]
Run Code Online (Sandbox Code Playgroud)在没有数字之间切换?绝对的?相对于光标行上的绝对值:
:let [&nu, &rnu] = [!&rnu, &nu+&rnu==1]
Run Code Online (Sandbox Code Playgroud)小智 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在相对和绝对数字模式之间切换!