Stellen Sie die Zeilennummern nur im normalen Modus ein

8

Ich habe im Einfügemodus nicht viel Verwendung für Zeilennummern, daher möchte ich sie ausschalten. Sie eignen sich jedoch hervorragend für den normalen Modus.

Ständiges Verwenden set nu!ist lästig. Gibt es eine Möglichkeit, den set nu!normalen Modus zu verlassen und in diesen zu wechseln?

Irgendwelche Lösungen mit der oben genannten oder einer anderen Methode?

Jason Basanese
quelle
Warum sollten Sie in Bezug auf Ihren Kommentar zur Antwort von @ Carpetsmoker den Rand, aber nicht die Zeilennummern beibehalten? Was war Ihre ursprüngliche Absicht, die Zahlen loszuwerden?
Rolf
Es dient zur Unterscheidung zwischen Einfügemodus und Normalmodus. Das Entfernen der Zeilennummern dient auch dazu, irrelevante Informationen aus dem Einfügemodus zu entfernen. Wenn Sie bei jedem Aufrufen des Einfügemodus den Rand entfernen, treten wahrscheinlich Kopfschmerzen auf, wenn der gesamte Text jedes Mal um drei Leerzeichen verschoben wird. Einige mögen dies bevorzugen, aber es ist nicht meine Präferenz.
Jason Basanese

Antworten:

13

Sie können dies mit automatischen Befehlen tun.

au InsertEnter * set nonumber
au InsertLeave * set number

Es ist nicht viel Erklärung erforderlich. Dies macht genau das, wonach Sie gefragt haben. Es verbindet das Ein- und Verlassen des Einfügemodus mit dem Ein- und Ausschalten der Zeilennummern.

James
quelle
1
Beachten Sie jedoch, dass InsertLeave nicht ausgelöst wird, wenn Sie mit Strg-C den Einfügemodus verlassen
Christian Brabandt
5

Hier ist eine alternative Lösung, bei der nur die Zahlen ausgeblendet werden, der linke Rand jedoch nicht geändert wird, sodass der Text beim Aufrufen / Verlassen des Einfügemodus nicht so stark herumspringt:

set number

augroup number
    autocmd!
    autocmd InsertEnter * highlight LineNr ctermfg=white guifg=white
    autocmd InsertLeave * highlight LineNr ctermfg=130 guifg=Brown
augroup end

Wenn Sie in den Einfügemodus wechseln, wird die Textfarbe auf die Hintergrundfarbe eingestellt. In meinem Fall ist dies weiß, aber in Ihrem Fall kann dies anders sein. Wenn wir den Einfügemodus verlassen, wird der Standard für mein Farbschema zurückgesetzt.

Sie können die Standardeinstellung für Ihr Farbschema ermitteln mit:

:highlight LineNr
LineNr         xxx term=underline ctermfg=130 guifg=Brown
Martin Tournoij
quelle
3
Noch besser:au InsertEnter * hi LineNr ctermbg=NONE ctermfg=bg guifg=bg
Christian Brabandt
Dies ist wahrscheinlich das, was ich verwenden werde, aber die andere Antwort ist prägnanter und beantwortet die Frage direkt.
Jason Basanese