899 Stimmen

Vim dazu bringen, ALLE Leerzeichen als Zeichen anzuzeigen

Ich kann keinen Weg finden, um Vim dazu zu bringen, alle Leerzeichen als Zeichen anzuzeigen. Alles, was ich gefunden habe, betraf Tabulatoren, nachgestellte Leerzeichen usw.

17 Stimmen

Ich versuche auch, genau dieses Problem zu lösen. Wenn Sie darauf stoßen, sehen Sie bitte davon ab, noch eine weitere Antwort zu geben, die :set list . Das ist keine Antwort auf unsere Frage. (An andere Kommende: mrucci Die nachstehende Antwort ist hilfreich, wenn auch nicht wirklich eine echte Lösung .)

2 Stimmen

Für alle, die sagen, dass Räume sichtbar sind mit list y listchars berücksichtigen, dass ein Leerzeichen direkt auf einen Tabulator folgt. In dieser Situation wäre es fast unsichtbar. Ich stimme zu, dass man die meisten Situationen abfangen kann, aber es wäre schön, wenn man alle Leerzeichen richtig hervorheben könnte.

12 Stimmen

Für neue Besucher: Dies ist in neueren Versionen von vim gelöst! Siehe brettanomyces 's Antwort unten .

777voto

Rook Punkte 57113

Wie andere bereits gesagt haben, könnten Sie Folgendes verwenden

:set list

die in Kombination mit

:set listchars=...

unsichtbare Zeichen anzeigen.
Nun gibt es keine explizite Option, die Sie verwenden können, um anzeigen Whitespace, aber in Listchars könnte man ein Zeichen für alles ABER Whitespace festlegen. Bei mir sieht das zum Beispiel so aus

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

Also, nachdem Sie

:set list

alles, was nicht explizit als etwas anderes dargestellt wird, ist dann in Wirklichkeit ein einfaches Leerzeichen.

Wie üblich, um zu verstehen, wie listchars funktioniert, nutzen Sie die Hilfe. Sie enthält wertvolle Informationen darüber, welche Zeichen angezeigt werden können (z. B. Leerzeichen am Ende) und wie dies zu tun ist:

:help listchars

Es könnte hilfreich sein, einen Toggle hinzuzufügen, damit Sie die Änderungen in der Mitte der Bearbeitung leicht sehen können (Quelle: VIM :set list! als Umschalter in .vimrc ):

noremap <F5> :set list!<CR>
inoremap <F5> <C-o>:set list!<CR>
cnoremap <F5> <C-c>:set list!<CR>

4 Stimmen

"alles, was nicht ausdrücklich als etwas anderes dargestellt wird"? Probieren Sie Unicode-Leerzeichen aus dem Bereich U+2000..U+200A aus. Wenn die Schriftart mit fester Breite sie unterstützt, werden sie wie normale 0x20-Leerzeichen angezeigt.

3 Stimmen

@ZyX - Ich habe nicht den gesamten Unicode gemeint, sondern den recht häufig verwendeten Satz von Zeichen. Wenn Sie mit der Antwort unzufrieden sind, können Sie gerne Verbesserungen vorschlagen.

0 Stimmen

Toller Tipp! Ich empfehle, die Listchars setzen Zeile zum .vimrc Datei, so dass diese hübsche Art der Anzeige von unsichtbaren Zeichen leicht aktiviert werden kann mit :set list zu jeder Zeit (ohne diese Seite erneut zu googeln).

386voto

Brett Y Punkte 6481

Ab dem Patch 7.4.710 Sie können jetzt ein Zeichen festlegen, das anstelle eines Leerzeichens angezeigt wird, indem Sie listchars verwenden!

:set listchars+=space:

Also, um zu zeigen ALLE Leerzeichen als Zeichen zu verwenden, können Sie wie folgt vorgehen:

:set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:
:set list

Wenn Sie fertig sind, können Sie die nicht sichtbaren Zeichen ausblenden:

:set nolist

Diskussion auf der Mailingliste: https://groups.google.com/forum/?fromgroups#!topic/vim_dev/pjmW6wOZW_Q

2 Stimmen

Das ist ziemlich cool, aber ich frage mich, warum die eol-Figur im Gegensatz zu den anderen nicht anders eingefärbt wird.

4 Stimmen

Ich habe dies versucht und erhielt zunächst eine Fehlermeldung. Es stellte sich heraus, dass "space" keine gültige Option in der etwas älteren Version von gvim war, die ich benutzte. Ein Upgrade meines gvim löste mein Problem. Für andere, die eine Fehlermeldung erhalten, geben Sie :help listchars um zu prüfen, ob "Leerzeichen" eine gültige Option für "listchars" ist. Wenn dies nicht der Fall ist, aktualisieren Sie Ihren Vim mit dem von @brettanomyces angegebenen Patch. Oder lassen Sie "space" einfach aus dem set-Befehl weg, wenn Sie keine Leerzeichen sehen wollen.

1 Stimmen

Funktioniert großartig. Ich wünschte nur, man könnte die Farbe etwas heller einstellen, damit die Leerzeichen weniger ablenken.

278voto

Marcin Punkte 11919

:set list zu aktivieren.

:set nolist zu deaktivieren.

14 Stimmen

Danke, dass Sie uns gezeigt haben, wie man zwischen den Modi umschalten kann. Man sollte meinen, dass andere fortgeschrittene Antworten das lehren würden.

2 Stimmen

Ja, das ist hilfreich. Ich wünschte, es wäre die erste Antwort, denn ich habe diese Antwort selbst gefunden, nur um festzustellen, dass sie bereits auf der Website stand, nur nicht mehr sichtbar war.

13 Stimmen

: set list! ist besser :)

220voto

Eliot Punkte 5051

Ich denke, andere Antworten hier sind umfassender, aber ich dachte, ich teile einen Trick mit, den ich normalerweise verwende, um Tabulatoren und Leerzeichen visuell zu unterscheiden:

:syntax on
:set syntax=whitespace

Dies sind Regeln zur Syntaxhervorhebung für die Whitespace Programmiersprache - Tabulatoren sind grün und Leerzeichen rot :)

Kann kombiniert werden mit :set list wie in vielen anderen Antworten erwähnt, obwohl die Tabulatoren dann als ^I ohne grünes Higlight angezeigt werden, aber die Leerzeichen in rot.

8 Stimmen

Mir gefällt diese Antwort, sie ist ziemlich clever und wirkt irgendwie besser als die meisten anderen Antworten. Allerdings ist sie nicht wirklich eine Lösung, die immer anwendbar ist.

5 Stimmen

Ich bevorzuge konventionellere Methoden, aber ich vergebe eine Eins für den Einfallsreichtum.

37 Stimmen

Ich wusste, dass diese Sprache nützlich sein würde für etwas .

105voto

Ether Punkte 51044

:set list zeigt alle Leerzeichen als Zeichen an. Alles sondern ein Raum sieht anders aus als im Normalzustand, d. h. wenn Sie immer noch einen einfachen alten Raum sehen, ist es wirklich ein einfacher alter Raum :)

42 Stimmen

Schalten Sie dies wieder aus mit :set nolist

7 Stimmen

Was ist, wenn Sie das Leerzeichen sehen wollen, wie in Sublime Text 2 mit "show whitespace" auf? Ich fand das sehr hilfreich.

0 Stimmen

Nicht das, wofür ich hergekommen bin, aber sehr hilfreich. Danke.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X