Wie kann ich sicherstellen, dass die Zeichenspalte immer angezeigt wird, auch wenn keine Zeichen hinzugefügt wurden?

32

Ich habe gerade das Git Gutter-Plugin für Vim hinzugefügt, das die Zeilen anzeigt, die gemäß hinzugefügt / geändert / gelöscht wurden git diff. Es verwendet die Sign ColumnZeichen zu zeigen , neben jeder Zeile.

Im Moment erscheint die Spalte beim Speichern, was ziemlich irritierend ist. Ich würde es vorziehen, wenn die Spalte immer angezeigt wird, auch wenn sie leer ist.

Wie kann ich die Zeichenspalte immer sichtbar machen?

jordelver
quelle

Antworten:

40

Ab Vim 7.4.2201 können Sie Folgendes tun:

:set signcolumn=yes

Cp. :help 'signcolumn'. Für ältere Vim-Versionen müssen Sie ein Dummy-Zeichen definieren und es in den aktuellen Puffer einfügen:

:sign define dummy
:execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')
Ingo Karkat
quelle
14
Damit es in jedem neuen Puffer funktioniert, den Sie öffnen, legen Sie sowohl autocmd BufEnter * sign define dummyals auch autocmd BufEnter * execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')in Ihren vimrc.
Akent
Scheint veraltet zu sein, genauso set signcolumn=yeswie der Trick ohne Spielereien.
cprn
1
@cprn: Du hast recht; Ich habe das zu meiner Antwort hinzugefügt. Vielen Dank!
Ingo Karkat
Vielen Dank auch, dann entferne ich meine Antwort von unten. Prost!
cprn
22

Speziell für vim-gitgutter können Sie auch die folgende Variable in Ihrem festlegen ~/.vimrc:

let g:gitgutter_sign_column_always = 1

AKTUALISIEREN

Das Plugin wird nun eine Warnung ausgeben, um die obige Zeile zu entfernen und stattdessen Folgendes zu verwenden:

set signcolumn="yes"
wjv
quelle
Danke, diese Option muss hinzugefügt werden, nachdem diese Frage gestellt wurde. Gut zu wissen.
Jordelver
1
Es scheint tatsächlich, dass die Zusage, die sie hinzugefügt hat, am 14. März 2013 gemacht wurde - genau zwei Wochen nach Ihrer Frage!
WJV
Während ich an etwas anderem arbeitete, stöberte ich kürzlich in der GitGutter-Quelle herum und bemerkte, dass das Setzen dieser Variablen die Anzeige der Zeichenspalte genauso erzwingt wie die akzeptierte Antwort auf diese Frage - durch Setzen eines Dummy-Zeichens.
WJV
5
Übrigens, für mich war es set signcolumn=yes ohne die Anführungszeichen
tam5
6

Während der kleine Tanz, der ein Zeichen definiert und platziert, gut funktioniert, ist eine elegantere Alternative, die für mich gut funktioniert:

autocmd BufRead,BufNewFile * setlocal signcolumn=yes

Und wenn es bestimmte Dateitypen gibt, die die Spalte nicht haben sollen:

autocmd FileType tagbar,nerdtree setlocal signcolumn=no
innaM
quelle
Fehler beim Verarbeiten von BufReadPost Auto-Befehlen für "*": E518: Unbekannte Option: signcolumn = yes
brandones 18.06.17
Sie benötigen eine neuere Version von vim, @brandonjones. Ich bin nicht sicher, wann signcolumnhinzugefügt wurde, aber es ist nicht in 7.2 und es ist dort in 8.0. Ich erinnere mich nicht, es in 7.4 gesehen zu haben, aber es könnte da sein. Es ist in aktuellen Versionen von Vim und Neovim vorhanden.
Jim Stewart