web-dev-qa-db-ja.com

vim:相対番号で番号を切り替えます

setl nu!

相対番号と同様に、番号(オン/オフ)を切り替えることができます

setl rnu!

{off、number、relativenumber}を切り替えるにはどうすればよいですか?

15
juanpablo
if &nu == 1
   set rnu
elseif &rnu == 1
   set nornu
else
   set nu
endif
9
Benoit

私はロジックパズルが大好きで、vimコマンドが簡潔な繰り返しのために1行に収まるときは本当に大好きです(@: 個人的なお気に入りです):

:exec &nu==&rnu? "se nu!" : "se rnu!"

これにより、同じサイクルが維持されます。主な理由はlet &nu=1は暗黙的にnorelativenumberを設定します-おそらくドキュメントにある理由のために:)

17
sehe

Vimの時点で 7.3.1115 これはもう少し複雑になっています。

その理由は、「行番号なし」と「絶対行番号」の他に、相対行番号の設定が2つになっているためです。通常の「相対行番号」と「相対行」です。カーソル行に絶対数がある数字」。

より技術的に言えば、'number''relativenumber'の4つの組み合わせすべてが可能になりました。

切り替える方法は次のとおりです。

  • 4つの設定すべてを切り替えます、数字なしabsoluterelativeカーソル行の絶対値との相対値

    :exe 'set nu!' &nu ? 'rnu!' : ''
    
  • 数字なしabsoluterelative

    :let [&nu, &rnu] = [&nu+&rnu==0, &nu]
    
  • 数字なしabsoluteカーソル行の絶対値との相対値

    :let [&nu, &rnu] = [!&rnu, &nu+&rnu==1]
    
8
glts

もっと読みやすい解決策が欲しい人のために、以下は私の.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>

これについてのクールなことはあなたが打つことができるということです ctrln 相対数モードと絶対数モードを切り替えます!

7
Eric Anderson

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>
0
clasan
" 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>
0
heronsrise