Ich kann keinen Weg finden, Vim dazu zu bringen, alle Leerzeichen als Charakter anzuzeigen. Ich fand nur Tabulatoren, Leerzeichen usw.
772
Ich kann keinen Weg finden, Vim dazu zu bringen, alle Leerzeichen als Charakter anzuzeigen. Ich fand nur Tabulatoren, Leerzeichen usw.
:set list
. Das beantwortet unsere Frage nicht. (Für andere Ankömmlinge: Die Antwort von mrucci unten ist hilfreich, aber keine echte Lösung .)list
undlistchars
berücksichtigen, dass ein Leerzeichen direkt einer Registerkarte folgt. In dieser Situation wäre es fast unsichtbar. Ich bin damit einverstanden, dass Sie die meisten Situationen erfassen können, aber wenn es schön wäre, alle Räume richtig hervorzuheben.Antworten:
Wie andere gesagt haben, könnten Sie verwenden
was wird, in Kombination mit
unsichtbare Zeichen anzeigen.
Jetzt gibt es keine explizite Option , die Sie verwenden können , um zu zeigen , Leerzeichen, aber in listchars, könnten Sie einen Zeichensatz für alles ABER Leerzeichen zu zeigen. Zum Beispiel sieht meine so aus
Also, jetzt, nachdem Sie verwendet haben
Alles, was nicht explizit als etwas anderes angezeigt wird, ist dann wirklich ein einfaches altes Leerzeichen.
listchars
Verwenden Sie wie gewohnt die Hilfe , um zu verstehen, wie dies funktioniert. Es bietet großartige Informationen darüber, welche Zeichen angezeigt werden können (z. B. nachfolgendes Leerzeichen) und wie dies zu tun ist:Es kann hilfreich sein, einen Umschalter hinzuzufügen, damit Sie die Änderungen während der Bearbeitung leicht sehen können (Quelle: VIM: Set List! Als Umschalter in .vimrc ):
quelle
.vimrc
Datei einzufügen , damit diese hübsche Art der Anzeige unsichtbarer Zeichen jederzeit problemlos aktiviert werden:set list
kann (ohne diese Seite erneut zu googeln).Ab Patch 7.4.710 können Sie jetzt mithilfe von Listchars ein Zeichen festlegen, das anstelle des Leerzeichens angezeigt wird!
Um ALLE Leerzeichen als Zeichen anzuzeigen, haben Sie folgende Möglichkeiten:
Diskussion zur Mailingliste: https://groups.google.com/forum/?fromgroups#!topic/vim_dev/pjmW6wOZW_Q
quelle
:help listchars
Geben Sie für andere, die einen Fehler erhalten, Folgendes ein, um zu überprüfen, ob "Leerzeichen" eine gültige Option für "Listchars" ist. Wenn dies nicht der Fall ist, aktualisieren Sie Ihr vim auf den angegebenen Patch @brettanomyces. Oder lassen Sie "Leerzeichen" einfach aus dem Befehl set heraus, wenn Sie keine Leerzeichen sehen möchten.space:·
), da es wie MS Word, Notepad ++ usw. aussieht<C-K>.M
vim für ein·
. Siehe:h digraph
für Details.:set list
ermöglichen.:set nolist
Etwas deaktivieren.quelle
: set list!
ist besser :)Shift
und!
sind beide schwerer zu geben alsno
. Wenn Sie es in Ihre .vimrc-Datei einfügen, stimme ich zu, dass das Ausrufungsformular leichter zu lesen ist.:set list!
tun Sie dies, ohne dass Sie jemals eintreten müssennolist
. Das macht!
einfach das Gegenteil von dem, was gerade eingestellt ist. Ich benutze dies die ganze Zeit, besonders wenn mit:set paste!
. Ich hasse es, die Pfeiltaste zu drücken, um zu finden:set paste
oder:set nopaste
lolIch denke, andere Antworten hier sind umfassender, aber ich dachte, ich würde einen Trick teilen, den ich normalerweise verwende, um Tabulatoren und Leerzeichen visuell zu unterscheiden:
Hierbei handelt es sich um Syntaxhervorhebungsregeln für die Programmiersprache Whitespace. Registerkarten werden in Grün und Leerzeichen in Rot angezeigt . :) :)
Kann
:set list
wie von vielen anderen Antworten erwähnt kombiniert werden , obwohl die Registerkarten dann als ^ I ohne grünes Higlight angezeigt werden, die Leerzeichen jedoch rot angezeigt werden.quelle
:set list
zeigt alle Leerzeichen als Zeichen an. Alles außer einem Raum sieht anders aus als sein normaler Zustand, was bedeutet, dass wenn Sie immer noch einen einfachen alten Raum sehen, es wirklich ein einfacher alter Raum ist. :) :)quelle
:set nolist
!
am Endeset list!
:se hls | /\_s
. Ruft alles ab, währendset list
Leerzeichen ignoriert werden. Wieder aus mit:se nohls
. Details dazu in diesem Beitrag: albertech.blogspot.com/2015/02/…Wenn Sie einstellen:
Wenn Sie dann nach einem Leerzeichen suchen, wird jedes Leerzeichen als Unterstreichungszeichen angezeigt.
Sie können diesen Befehl in einer praktischen Funktion verwenden, mit der das "Unterstreichen" von Leerzeichen umgeschaltet wird.
Ordnen Sie die Funktion einer Tastenkombination zu:
NB: Definieren Sie die Funktion in vimrc, nachdem das Farbschema festgelegt wurde.
quelle
Abhängig von Ihren Syntaxregeln für den aktuellen Puffer könnte Folgendes funktionieren:
Dies erfordert eine Version 7.3 mit + Verdeckungsfunktion
Update 24.10.2014 Um das ein wenig zu erweitern. Es ist natürlich möglich, einige Hervorhebungen für die verborgenen Zeichen zu definieren.
Sie können konfigurieren, wie die verborgenen Zeichen aussehen. Zum Hervorheben müssten Sie mindestens einmal die Hervorhebungsgruppe "Verbergen" konfigurieren (siehe Hilfe unter
:h hl-Conceal
Dies kann in Ihrem Farbschema erfolgen, und Sie müssen es dann nicht erneut konfigurieren. Dies betrifft jedoch alle verborgenen Zeichen (z. B. wenn Ihre Das Syntax-Skript verbirgt einige weitere Elemente. Sie werden als Leerzeichen angezeigt. Das könnte folgendermaßen aussehen::hi Conceal ctermfg=7 ctermbg=NONE guifg=LightGrey guibg=NONE
Es scheint eine Besonderheit zu geben, dass Vim keine Leerzeichen hervorhebt, wenn das Syntaxskript das
skipwhite
Schlüsselwort verwendet. Es wird keinen Weg vorbei geben (vielleicht wird dies behoben, ich habe einen Patch gepostet )list
Modus aussehen . Der letzte zum Zeitpunkt des Schreibens scheint dieser zu sein . (Dies bedeutet, dass Sie Ihr eigenes Vim erstellen müssen, um dies zu verwenden).conceallevel
undconcealcursor
sind fensterlokale Optionen. Das bedeutet, dass sie in verschiedenen Fenstern unterschiedlich sein können (und möglicherweise auch durch Dateityp-Plugins oder andere Plugin-Skripte festgelegt werden).BufWinEnter
oder möglicherweise auch einemSyntax
oder sogar einemFileType
Autobefehl erfolgen. (Ich habe nicht getestet, welches tatsächlich funktioniert).Die letzten beiden Elemente bedeuten, dass Sie einige automatische Befehle einrichten müssen, die die Syntaxregeln und die entsprechenden Optionen zurücksetzen. Für den ersten Fall möchten Sie möglicherweise die Hervorhebung mithilfe eines
ColorScheme
automatischen Befehls einrichten (damit die verborgenen Zeichen immer gleich aussehen, unabhängig davon, was ein Farbschema tatsächlich einrichtet). Eine vollständige Lösung finden Sie in der Antwort von romainl, die Ihnen einen Anfang geben sollte. Wenn Sie eine Funktion einrichten, können Sie einfach einen Umschaltbefehl einrichten, um die Anzeige der speziellen Hervorhebung ein- oder auszuschalten.Update 26.10.2014 Ich habe aus dieser Frage ein Plugin gemacht .
Update 22.04.2015 In Vim wurde ein Patch aufgenommen, der dies mithilfe der
list
Option ermöglicht. Einfach einstellenset list listchars+=space:␣
Dies funktioniert ab Vim 7.4.711quelle
.vimrc
?Æ
ist eine seltsame Charakterwahl dafür, warum nicht·
?ich benutze das
um Leerzeichen hervorzuheben. Es sucht nach allen Leerzeichen und aktiviert dann die Hervorhebung, damit sie herausspringen. Es wird jedoch kein Sonderzeichen gedruckt.
quelle
nnoremap <leader><space> :noh<cr>
)Wenn Sie mit Leerzeichen das Zeichen '' meinen, wäre mein Vorschlag nur ein Suchen / Ersetzen. Wie die anderen angedeutet haben,
set list
werden nicht druckbare Zeichen in sichtbare Zeichen geändert , die in konfiguriert sindlistchars
.Um Leerzeichen explizit als ein anderes Zeichen anzuzeigen, sollte etwas Ähnliches wie das Folgende den Trick tun:
:%s/ /█/g
Machen Sie dann einfach die Änderung rückgängig, um wieder zurückzukehren.
(um die █ ich genau diese Tastenfolge gedrückt: :%s/ /CTRL-KFB/g)
quelle
:set list
für mich umgekehrt aus und ändert das sichtbare Zeichen ('Leerzeichen') in ein nicht pritierendes (??). Ich frage mich, ob man dieses Insider-Match verwenden kann, zB:match MyBlackBlockChar "appropriate_regex
das sollte den Trick machen, nicht wahr?:%s/\s/█/g
für alle Leerzeichen. Auch:set hlsearch
Plus:&s/\s//gn
könnte nützlich sein.Um Leerzeichen hervorzuheben, suchen Sie einfach danach:
/ <Leerzeichen>
Anmerkungen:
So markieren Sie Leerzeichen und Tabulatoren:
/ [<Leerzeichen> <Tab>]
Eine schnelle Möglichkeit, die Markierungen zu entfernen, besteht darin, nach etwas anderem zu suchen: / asdf
(Geben Sie einfach eine kurze Liste zufälliger Zeichen ein)
quelle
/<space>
vs/\s
. Ich denke, es ist nicht offensichtlich und schneller, den Vorschlag hier zu verwenden.Der folgende Code basiert auf der Antwort von Christian Brabandt und scheint zu tun, was das OP will:
Fügen Sie diese Zeilen an Ihre hinzu
~/.vimrc
und starten Sie eine neue Vim-Sitzung, um zu sehen, wie die immer noch unvollkommene Magie geschieht.Fühlen Sie sich frei, die Standardfarben zu bearbeiten und Zeichen zu verbergen.
Vorsichtsmaßnahme: Etwas in der
*FuncBody
Syntaxgruppe in mehreren Sprachen verhindert, dass der mittlere Punkt angezeigt wird. Ich weiß (noch?) Nicht, wie ich diese Lösung zuverlässiger machen kann.quelle
skipwhite
Argument in den Syntaxregeln, das verhindert, dass die Syntaxgruppe übereinstimmt (obwohl es in allen Gruppen enthalten sein sollte).Ich war mit all den anderen Antworten auf diese Frage frustriert, weil keine von ihnen den Raumcharakter auf nützliche Weise hervorhebt. Das Anzeigen von Leerzeichen als Zeichen ist besonders hilfreich für Sprachen im Leerzeichenformat, bei denen das Mischen von Tabulatoren und Leerzeichen schädlich ist.
Meine Lösung besteht darin, Tabulatoren anzuzeigen und mehrere Leerzeichen zu unterstreichen. Es leiht sich aus Mruccis Antwort und diesem Tutorial . Da die Syntaxhervorhebung verwendet wird, ist sie dauerhaft:
Auf diese Weise werden Registerkarten als
|
und Leerzeichen als angezeigt_
, wodurch es sehr einfach ist zu erkennen, wann ich Codestile mische.Der einzige Nachteil, den ich festgestellt habe, ist, dass dieses Snippet die Hintergrundfarbe nicht an den Kontext anpasst (wie in einem Kommentar).
quelle
Alle obigen Antworten versuchen, Leerzeichen von vim aus sichtbar zu machen. Wenn Sie wirklich darauf bestehen, sichtbare Räume als Punkte zu haben, gibt es einen anderen Ansatz ...
Wenn dies in vim nicht möglich ist, ändern Sie Ihre Schriftart vollständig. Ich habe die Ubuntu One Mono-Schriftart kopiert und mit FontForge bearbeitet. Denken Sie daran, den vollständigen Namen, die Familie, die bevorzugte Familie und die kompatible Vollschrift der Schriftart zu ändern (in FontFoge unter TTF-Namen in den Schriftartinformationen), um sie als separate Schriftart zu verwenden. Bearbeiten Sie einfach das Leerzeichen, um einen Punkt in der Mitte zu haben, und speichern Sie die Schriftart in ~ / .fonts. Jetzt können Sie sie für Ihr GVIM oder das gesamte Terminal verwenden ... Ich habe das "!" Zeichen, entfernte die Linie und verschob den Punkt in die Mitte. Es dauerte etwas mehr als 5 Minuten ...
Hinweis: Das Ändern des Leerzeichens (0x20) führt zu der Unannehmlichkeit, Punkte auf dem gesamten VIM-Bildschirm zu haben ... (aber es werden die Leerzeichen von den Tabulatoren getrennt ...)
quelle
Ich habe aus den vorhandenen Antworten nicht genau das gefunden, was ich wollte. Der folgende Code hebt alle nachfolgenden Leerzeichen hellrot hervor. Fügen Sie einfach Folgendes zu Ihrem hinzu
.vimrc
quelle
Vermeidet das Bit "Sie müssen nach Leerzeichen suchen, damit sie angezeigt werden", aber afaict kann nicht so konfiguriert werden, dass die Leerzeichen nicht hügelig sind. CursorLine kann eine beliebige Hilighting-Gruppe sein und ist im Standarddesign eine einfache Unterstreichung.
quelle
Ich mag es, Sonderzeichen zu verwenden, um Leerzeichen anzuzeigen, ist klarer. Sogar eine Karte zum Umschalten ist eine wichtige Funktion für eine schnelle Überprüfung.
Sie finden diese Funktionen in einem alten vim-Skript, das seit 2004 nicht mehr aktualisiert wurde:
vim-scripts/[email protected]
Dank Projekt- Vim-Skripten und Vundle können Sie dieses Plugin wieder zum Leben erwecken
vim-scripts / cream-showinvisibles @ github
Noch besser ist, dass meine zwei Cent darin bestehen, eine konfigurierbare Verknüpfung hinzuzufügen (anstatt vordefiniert F4)
Fügen Sie dies also zu ~ / .vimrc hinzu
Installieren Sie das Plugin auf vim
und los geht's
quelle
So decken Sie Unicode-Leerzeichen ab:
Das Ergebnis:
")
│
" (zwei Zeichen: eine lange Pipe und dann ein Ordnungsraum; sie sind graucolorscheme murphy
)·
" (ein Zeichen; es ist grau incolorscheme murphy
)"
quelle
set listchars=tab:»\ ,space:·
Referenz verwendet.gvim
als auchvim
.Du könntest benutzen
um die Struktur einer Linie wirklich zu sehen. Sie sehen explizit Registerkarten und Zeilenumbrüche. Wenn Sie ein Leerzeichen sehen, ist es wirklich ein Leerzeichen.
quelle
Suche markieren
in
.vimrc
dem istund suchen Sie nach Leerzeichen und Wagenrückläufen
oder suchen Sie nach allen Leerzeichen
der Suche nach allen Nicht-Leerzeichen (die Leerzeichen werden nicht angezeigt, sodass Sie die Leerzeichen zwischen den Wörtern sehen, nicht jedoch die nachfolgenden Leerzeichen).
um alle nachfolgenden Leerzeichen anzuzeigen - am Ende der Zeile
quelle
Behalten Sie diese Hacks in der .vimrc als Kommentare, also in der Shell einfach:
quelle
:se
ist genug,:set
wird nicht benötigt.quelle
Sie können auch die Leerzeichen markieren (die Leerzeichen durch einen Block ersetzen):
(vor dem Schreiben rückgängig machen)
quelle
Das Hinzufügen zu meiner .vimrc funktioniert für mich. Stellen Sie nur sicher, dass nichts anderes in Konflikt steht.
quelle