Vim 如何打开或关闭(所有)行号
假设我有以下几种组合:Vim 如何打开或关闭(所有)行号,vim,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! 这真的对我一点帮助都没有,因为我仍然会设置rn
" 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
,并且在左侧仍然会有一个行号列
。如果是这样的话,怎么做呢?试试看:
- 目前,我正在将其映射到
如果您愿意,可以更改映射 - 我正在使用全局变量,如果需要,可以更改范围
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>
函数!MagicNumberToggle()中止
如果&nu+&rnu==0
让&nu=g:old\u nu
let&rnu=g:旧的
其他的
设g:old_nu=&nu
设g:old_rnu=&rnu
设&nu=0
设&rnu=0
恩迪夫
端功能
nnoremap:调用MagicNumberToggle()
一行解决方案
:nnoremap <silent> <C-n> :let [&nu, &rnu] = [!&rnu, &nu+&rnu==1]<cr>
欲了解更多信息,请访问:hNu真棒。这就像是黑魔法的vimscript,但很酷。非常感谢。顺便说一句,我在这里发布了一些后续问题,关于如何从此功能进入/退出“模式”,或者如果可能的话。@David542我没有看到后续问题。什么意思?谢谢你。它在某些情况下有效,但在其他情况下无效(例如,如果只有绝对数)。它似乎在三种状态之间切换。但是,您只能将逻辑调整为两个值。
:echo [&nu, !&rnu]
&nu ............. gets the value of number
!&rnu ........... the oposite value of relative number