Wie kann ich relative Zeilennummern anzeigen?

53

Viele vim-Befehle können eine Zahl annehmen, die sich auf die Anzahl der Zeilen bezieht, auf die der Befehl angewendet wird.

Ist es möglich, die Zeilennummern relativ zur aktuellen Zeile anzuzeigen? So etwas wie das folgende:

3: some text here
2: more text
1: This is the line above where the cursor is
0: The cursor is on this line
1: This is the line after the cursor
2: More text here
Nick J Adams
quelle

Antworten:

65

Ich habe hier nur eine ähnliche Frage beantwortet: Wie kann ich Vim Zeilennummern hinzufügen?

Ab Version 7.3 können Sie Folgendes verwenden:

set relativenumber

Ich verwende tatsächlich beide relativenumberund numberin meinem vimrc, der relative Zahlen für alle Zeilen außer der aktuellen Zeile verwendet.

set number                     " Show current line number
set relativenumber             " Show relative line numbers
Collin Peters
quelle
Ich bin mir nicht sicher, aber das erste Changelog, das in diesem Artikel erwähnt wird, ist 7.3. ftp.vim.org/pub/vim/patches/7.3/README
Collin Peters
7

Sie können die relative Nummerierung wie folgt ein- und ausschalten:

:set rnu    " toggle relative numbering on
:set rnu!   " toggle relative numbering off
Matthew Rankin
quelle
5
function! NumberToggle()
  if(&relativenumber == 1)
    set norelativenumber
  else
    set relativenumber
  endif
endfunc

nnoremap <leader>nt :call NumberToggle()<cr>
shawndumas
quelle
2
Schaltet die norelative Nummer nur die Nummerierung ganz aus oder wechselt sie zur konventionellen Nummerierung?
Nick J Adams
set numberist die Einstellung, die die Anwesenheit von Zahlen steuert, sodass nur zwischen rel und non-rel
gewechselt wird
2
Das numbers.vimPlugin fügt auch einige erweiterte Funktionen für relative Nummern hinzu, z. B. die Zeile, in der der Cursor die nicht relative Nummer druckt, und das Umschalten auf nicht relative Nummerierung in der gesamten Datei, wenn das vim-Fenster den Fokus verliert.
Bronzehedwick
1
@shawndumas Gibt es also eine Rangfolge der angezeigten Zahlen? Wenn ich zum Beispiel eine Nummer in meinem VIMRC gesetzt und eine Relativnummer / Norelativnummer aufgerufen hätte, könnte es dann zwischen relativer und Standardnummerierung umschalten?
Nick J Adams
1
das ist am korrektesten
shawndumas
4

Wenn Sie einen Hotkey zum Umschalten der relativen Zeilennummer verwenden möchten, finden Sie hier einen Ausschnitt in meinem vimrc:

" Toggle relative line number
nmap <C-L><C-L> :set invrelativenumber<CR>

In diesem Fall verwende ich Strg-L zweimal, um es umzuschalten.

Sean Lee
quelle