Wie zeige ich versteckte Charaktere in vim an?

54

Wie kann ich vim so konfigurieren, dass NUR versteckte Zeichen wie Tabulatoren oder Leerzeichen angezeigt werden, während diese Zeichen eingegeben werden? Ich möchte nicht, dass Tabulatoren und / oder Leerzeichen beim Schreiben der Datei durch Sonderzeichen wie ">" oder "_" ersetzt werden.

dan0
quelle
1
Benötigen Sie auf jeden Fall Räume zum Zeigen? Die typische Lösung ist zu verwenden :set list. Das kann alles außer Leerzeichen bekommen.
Kris Harper

Antworten:

64

Sie können die Befehle verwenden

:set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<
:set list

um alle Zeichen anzuzeigen, die keine Leerzeichen sind. Leerzeichen sind also das einzige, was nicht angezeigt wird.

Wenn Sie unbedingt auch Leerzeichen benötigen, müssen Sie etwas weniger Schönes ausprobieren. So etwas wie

:%s/ /█/g

Ersetzt alle Leerzeichen mit einem Blockzeichen. Dann müssen Sie es vor dem Schreiben rückgängig machen. Sie könnten Ihren Schreibbefehl do neu zuordnen

cmap :w :%s/█/ /g<CR>:w

Nur ein Vorschlag. Das habe ich aber nicht ausprobiert.

Kris Harper
quelle
Danke für die Hilfe; Ihr Vorschlag funktioniert ganz gut. Mir ist jedoch aufgefallen, dass beim Öffnen bestimmter Dateien manchmal "> ---" angezeigt wird (Registerkarte "Anzeigen"). Gibt es eine Möglichkeit, dies so zu gestalten, dass die Tabulatorzeichen nur während der Eingabe angezeigt werden?
Dan0
@ dan0 Du meinst nur im Einfügemodus? Ich weiß es nicht. Ich bezweifle es irgendwie. Sie können einige Zuordnungsfunktionen ausführen, sodass beim Aufrufen des Einfügemodus zuerst der :set listcharsBefehl aufgerufen und auf "nichts" gesetzt wird. Beim Verlassen des Einfügemodus wird der Befehl dann erneut aufgerufen. Aber ich weiß nicht genug über Karten, um das zu tun.
Kris Harper
@JonathanKomar "Set Nolist"
Vladislavs Dovgalecs
1
Verwenden space:␣funktioniert gut für mich: :set listchars=eol:$,tab:>-,trail:~,space:␣
Loxaxs
15

Neuere Versionen von vim können auch Leerzeichen anzeigen. (Bestätigt am vim 7.4.1689).

:set list
:set listchars=tab:→\ ,space:·,nbsp:␣,trail:•,eol:¶,precedes:«,extends:»
weises Glück
quelle
4

In meinem Fall musste ich nbsp kämpfen ,

:set listchars=nbsp:☠,tab:▸␣
:set list

Sie können auch ␣ anstelle von ☠ verwenden

Hier ist ein Beispiel, in dem die obige VIM-Konfiguration die "unsichtbaren seltsamen" Leerzeichen hervorhebt und zusätzlich Tabs hervorhebt (rote Farbe, da ich das Trailing-Whitespace-VIM-Plugin verwende).

Hier

Andrey Arapov
quelle