Antworten:
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 hlsearchalle 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 0x00und ASCII 0x7F(0-127) und scheint in meinem einfachen Test zu funktionieren. Erweitern Sie für erweitertes ASCII natürlich den Bereich auf \xFFanstatt zu \x7Fverwenden /[^\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 [].
Ja, es gibt eine native Funktion zum Hervorheben von übereinstimmenden Zeichenfolgen. Machen Sie in Vim Folgendes:
:help highlight
:help syn-match
syn-match definiert eine Zeichenfolge, die zu einer Gruppe passt.
highlightdefiniert 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:
syntax match nonascii "[^\x00-\x7F]"
highlight nonascii guibg=Red ctermbg=2
:Befehle in Ihrem vimrc nicht vor Befehle stellen.
termbgscheint in VIM 7.3, wie es auf Ubuntu Server 12.10 installiert ist, kein legaler Befehl zu sein.
termbgscheint dies kein legaler Parameter in VIM 7.3 zu sein, wie er auf Ubuntu Server 12.10 installiert ist.
termkeine Hintergrundfarbe haben, während ein Farbterminal dies ctermkann.
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):
highlight nonascii guibg=Red ctermbg=1 term=standout
au BufReadPost * syntax match nonascii "[^\u0000-\u007F]"
Dies hat den zusätzlichen Vorteil, dass es nicht mit regulären (auf Dateityp [Dateierweiterung] basierenden) Syntaxdefinitionen kollidiert.
E319: Sorry, the command is not available in this version: au BufReadPost * syntax match nonascii "[^\u0000-\u007F]" Press ENTER or type command to continueLinux Mint 17.3
containedin=ALLau BufReadPost * syntax match nonascii "[^\u0000-\u007F]" containedin=ALLif
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 hlsearchwird hervorgehoben:
/[^[:alnum:][:punct:][:space:]]/
:%s/[^[:alnum:][:punct:][:space:]]//gcwelche 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:
function! NonPrintable()
setlocal enc=utf8
if search('[^\x00-\xff]') != 0
call matchadd('Error', '[^\x00-\xff]')
echo 'Non printable characters in text'
else
setlocal enc=latin1
echo 'All characters are printable'
endif
endfunction
enc zu fenc. 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üssel ERRORin 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 Sie zshCommentsie der Zeile hinzufügen
au BufReadPost * syntax match nonascii "[^\x00-\x7F]" containedin=cComment,vimLineComment,pythonComment
Andernfalls 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 :syvim ein und suchen Sie in den Syntaxelementen nach dem Kommentar.
function HighlightNonAsciiOff()
echom "Setting non-ascii highlight off"
syn clear nonascii
let g:is_non_ascii_on=0
augroup HighlightUnicode
autocmd!
augroup end
endfunction
function HighlightNonAsciiOn()
echom "Setting non-ascii highlight on"
augroup HighlightUnicode
autocmd!
autocmd ColorScheme *
\ syntax match nonascii "[^\x00-\x7F]" containedin=cComment,vimLineComment,pythonComment |
\ highlight nonascii cterm=underline ctermfg=red ctermbg=none term=underline
augroup end
silent doautocmd HighlightUnicode ColorScheme
let g:is_non_ascii_on=1
endfunction
function ToggleHighlightNonascii()
if g:is_non_ascii_on == 1
call HighlightNonAsciiOff()
else
call HighlightNonAsciiOn()
endif
endfunction
silent! call HighlightNonAsciiOn()
nnoremap <C-w>1 :call ToggleHighlightNonascii()<CR>
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.
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:
:syntax match nonascii "[^\u0000-\u007F]" containedin=ALL contained |
\ highlight nonascii ctermfg=yellow guifg=yellow
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-containswürde der Abschnitt diese enthalten.
:help syn-containedin
:help syn-contains
Repliziertes Problem von: Setzen Sie das Element auf vim auf eine höhere Hervorhebungspriorität
/[^\d0-\d127]