と
setl nu!
相対番号と同様に、番号(オン/オフ)を切り替えることができます
setl rnu!
{off、number、relativenumber}を切り替えるにはどうすればよいですか?
if &nu == 1
set rnu
elseif &rnu == 1
set nornu
else
set nu
endif
私はロジックパズルが大好きで、vimコマンドが簡潔な繰り返しのために1行に収まるときは本当に大好きです(@: 個人的なお気に入りです):
:exec &nu==&rnu? "se nu!" : "se rnu!"
これにより、同じサイクルが維持されます。主な理由はlet &nu=1
は暗黙的にnorelativenumberを設定します-おそらくドキュメントにある理由のために:)
Vimの時点で 7.3.1115 これはもう少し複雑になっています。
その理由は、「行番号なし」と「絶対行番号」の他に、相対行番号の設定が2つになっているためです。通常の「相対行番号」と「相対行」です。カーソル行に絶対数がある数字」。
より技術的に言えば、'number'
と'relativenumber'
の4つの組み合わせすべてが可能になりました。
切り替える方法は次のとおりです。
4つの設定すべてを切り替えます、数字なし→absolute→relative→カーソル行の絶対値との相対値:
:exe 'set nu!' &nu ? 'rnu!' : ''
数字なし→absolute→relative:
:let [&nu, &rnu] = [&nu+&rnu==0, &nu]
数字なし→absolute→カーソル行の絶対値との相対値:
:let [&nu, &rnu] = [!&rnu, &nu+&rnu==1]
もっと読みやすい解決策が欲しい人のために、以下は私の.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>
これについてのクールなことはあなたが打つことができるということです ctrl + n 相対数モードと絶対数モードを切り替えます!
Eric Anderson上記のような別の選択肢:
"Relative with start point or with line number or absolute number lines
function! NumberToggle()
if(&number == 1)
set number!
set relativenumber!
elseif(&relativenumber==1)
set relativenumber
set number
else
set norelativenumber
set number
endif
endfunction
nnoremap <C-n> :call NumberToggle()<CR>
" put this in your .vimrc or source it from your .vimrc
function! ToggleRelativeNumber()
if &relativenumber
set norelativenumber
else
set relativenumber
endif
endfunction
nmap ;r :call ToggleRelativeNumber()<CR>