Ich versuche, Vim dazu zu bringen, Nicht-ASCII-Zeichen hervorzuheben. Gibt es eine verfügbare Einstellung, ein Regex-Suchmuster oder ein Plugin dafür?
152
Wenn []
Sie bei Ihrer Suche den Bereich in einer Zeichenklasse verwenden, sollten Sie in der Lage sein , den hexadezimalen ASCII-Zeichenbereich auszuschließen und daher hlsearch
alle anderen Zeichen außerhalb des ASCII-Bereichs hervorzuheben (vorausgesetzt, Sie haben sie aktiviert) :
/[^\x00-\x7F]
Dies führt zu einer negativen Übereinstimmung (via [^]
) für Zeichen zwischen ASCII 0x00
und ASCII 0x7F
(0-127) und scheint in meinem einfachen Test zu funktionieren. Erweitern Sie für erweitertes ASCII natürlich den Bereich auf \xFF
anstatt zu \x7F
verwenden /[^\x00-\xFF]
.
Sie können es auch dezimal ausdrücken über \d
:
/[^\d0-\d127]
Wenn Sie etwas Spezifischeres benötigen, z. B. den Ausschluss nicht druckbarer Zeichen, müssen Sie diese Bereiche zur Zeichenklasse hinzufügen []
.
/[^\d0-\d127]
Ja, es gibt eine native Funktion zum Hervorheben von übereinstimmenden Zeichenfolgen. Machen Sie in Vim Folgendes:
syn-match
definiert eine Zeichenfolge, die zu einer Gruppe passt.highlight
definiert die von der Gruppe verwendete Farbe. Denken Sie nur an die Syntaxhervorhebung für Ihre vimrc-Dateien.Sie können also die folgenden Befehle in Ihrer .vimrc-Datei verwenden:
quelle
:
Befehle in Ihrem vimrc nicht vor Befehle stellen.termbg
scheint in VIM 7.3, wie es auf Ubuntu Server 12.10 installiert ist, kein legaler Befehl zu sein.termbg
scheint dies kein legaler Parameter in VIM 7.3 zu sein, wie er auf Ubuntu Server 12.10 installiert ist.term
keine Hintergrundfarbe haben, während ein Farbterminal diescterm
kann.Für andere (von nun an weniger unglückliche) Leute, die über eine Suchmaschine hier landen und das Hervorheben von Nicht-ASCII-Zeichen nicht erreichen können, versuchen Sie Folgendes (fügen Sie dies in Ihre .vimrc ein):
Dies hat den zusätzlichen Vorteil, dass es nicht mit regulären (auf Dateityp [Dateierweiterung] basierenden) Syntaxdefinitionen kollidiert.
quelle
E319: Sorry, the command is not available in this version: au BufReadPost * syntax match nonascii "[^\u0000-\u007F]" Press ENTER or type command to continue
Linux Mint 17.3containedin=ALL
au BufReadPost * syntax match nonascii "[^\u0000-\u007F]" containedin=ALL
if
autocmd BufRead ....
in eine Autogruppe in vim einzuschließen, es sei denn, Sie haben einen sehr guten Grund, nicht ...Dieser Regex funktioniert auch. Es war der erste Google-Hit für "vim entferne Nicht-ASCII-Zeichen" von briceolion.com und mit
:set hlsearch
wird hervorgehoben:quelle
:%s/[^[:alnum:][:punct:][:space:]]//gc
welche zuerst hervorhebt und dann ersetzt.Wenn Sie sich auch für das nicht druckbare interessieren Zeichen verwenden Sie dieses:
/[^\x00-\xff]/
Ich benutze es in einer Funktion:
quelle
enc
zufenc
. Ich habe die Codierung geändert, da meine Standardcodierung latin1 ist (war 2013). Die Funktion hebt die nicht druckbaren Zeichen nicht hervor, wenn der Zeichensatz latin1 ist. Um die Hervorhebung zu sehen, müssen Sie den SchlüsselERROR
in Ihrer Farbsyntaxdatei haben. Dies ist meins:hi Error guifg=Black guibg=Orange
Basierend auf den anderen Antworten zu diesem Thema und der Antwort, die ich hier erhalten habe, habe ich diese zu meiner hinzugefügt
.vimrc
, damit ich die Hervorhebung ohne ASCII durch Eingabe steuern kann<C-w>1
. Es werden auch interne Kommentare angezeigt, obwohl Sie die Kommentargruppe für jede verwendete Dateisyntax hinzufügen müssen. Das heißt, wenn Sie eine zsh-Datei bearbeiten, müssen SiezshComment
sie der Zeile hinzufügenAndernfalls wird das Nicht-ASCII-Zeichen nicht angezeigt (Sie können auch enthalten in = ALL festlegen, wenn Sie sicherstellen möchten, dass Nicht-ASCII-Zeichen in allen Gruppen angezeigt werden). Um zu überprüfen, wie der Kommentar für einen anderen Dateityp aufgerufen wird, öffnen Sie eine Datei des gewünschten Typs, geben Sie
:sy
vim ein und suchen Sie in den Syntaxelementen nach dem Kommentar.quelle
Irgendwie hat keine der oben genannten Antworten für mich funktioniert.
Also habe ich benutzt
:1,$ s/[^0-9a-zA-Z,-_\.]//g
Es behält die meisten Charaktere, die mich interessieren.
quelle
Jemand hat die Frage bereits beantwortet. Für andere, die immer noch Probleme haben, ist hier eine andere Lösung, um Nicht-ASCII-Zeichen in Kommentaren (oder einer anderen Syntaxgruppe in der Angelegenheit) hervorzuheben. Es ist nicht das Beste, aber es ist eine vorübergehende Lösung.
Man kann versuchen:
Dies hat Mischteile aus anderen Lösungen. Sie können entfernen
contained
, aber aus der Dokumentation kann es ein potenzielles Problem geben, sich selbst zu rekursieren (wie ich verstehe). Um andere definierte Muster anzuzeigen,syn-contains
würde der Abschnitt diese enthalten.Repliziertes Problem von: Setzen Sie das Element auf vim auf eine höhere Hervorhebungspriorität
quelle