Próbuję zmusić Vima do podświetlania znaków spoza ASCII. Czy jest dostępne ustawienie, wzorzec wyszukiwania wyrażenia regularnego lub wtyczka do tego?
153
Używając zakresu w []
klasie znaków w swoim wyszukiwaniu, powinieneś być w stanie wykluczyć zakres znaków szesnastkowych ASCII, dlatego podświetlając (zakładając, że hlsearch
włączyłeś) wszystkie inne znaki spoza zakresu ASCII:
/[^\x00-\x7F]
Spowoduje to dopasowanie negatywne (przez [^]
) dla znaków między ASCII 0x00
i ASCII 0x7F
(0-127) i wydaje się działać w moim prostym teście. W przypadku rozszerzonego ASCII, oczywiście, rozszerz zakres do \xFF
zamiast \x7F
używać /[^\x00-\xFF]
.
Możesz również wyrazić to w postaci dziesiętnej za pomocą \d
:
/[^\d0-\d127]
Jeśli potrzebujesz czegoś bardziej szczegółowego, na przykład wykluczenia niedrukowalnych znaków, będziesz musiał dodać te zakresy do klasy znaków []
.
/[^\d0-\d127]
Tak, istnieje natywna funkcja do podświetlania dowolnych dopasowanych ciągów. Wewnątrz Vima zrób:
syn-match
definiuje ciąg, który pasuje do grupy.highlight
określa kolor używany przez grupę. Pomyśl tylko o podświetlaniu składni w plikach vimrc.Możesz więc użyć poniższych poleceń w swoim pliku .vimrc:
źródło
:
przed komendami w swoim vimrc.termbg
nie wydaje się być legalnym poleceniem w VIM 7.3 zainstalowanym na Ubuntu Server 12.10.termbg
nie wydaje się być legalnym parametrem w VIM 7.3 zainstalowanym na Ubuntu Server 12.10.term
nie może mieć koloru tła, podczas gdy terminal kolorowycterm
może.Dla innych (od teraz mniej pechowych) ludzi, którzy trafiają tutaj przez wyszukiwarkę i nie mogą wykonać podświetlania znaków spoza ASCII, spróbuj tego (umieść to w swoim .vimrc):
Ma to tę dodatkową zaletę, że nie koliduje ze zwykłymi (opartymi na typie pliku [rozszerzenie pliku]) definicjami składni.
źródło
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
na koniec ostatniej linii, tworząc jąau BufReadPost * syntax match nonascii "[^\u0000-\u007F]" containedin=ALL
. Uważam, że warto go rozproszenia (gdy Unicode jest dozwolone), oryginalna odpowiedź tutaj nie nie złapać rzeczy, takich jak kod spoza ASCII wewnętrznej wif
oświadczeniu ...autocmd BufRead ....
grupę w autogrupie w vimie, chyba że masz bardzo dobry powód, aby nie ...To wyrażenie regularne również działa. To był pierwszy hit Google dotyczący „vim remove non-ascii characters” z briceolion.com i wyróżni
:set hlsearch
:źródło
:%s/[^[:alnum:][:punct:][:space:]]//gc
która najpierw podkreśla, a potem zastępuje.Jeśli interesują Cię również znaki niedrukowalne, użyj tego:
/[^\x00-\xff]/
Używam go w funkcji:
źródło
enc
nafenc
. Zmieniłem kodowanie, ponieważ moje domyślne kodowanie to (było w 2013) latin1. Funkcja nie wyróżnia znaków niedrukowalnych, jeśli zestaw znaków to latin1. Aby zobaczyć wyróżnienie, musisz mieć kluczERROR
w pliku składni kolorów. To jest moje:hi Error guifg=Black guibg=Orange
Na podstawie innych odpowiedzi na ten temat i odpowiedzi, którą tutaj otrzymałem , dodałem to do mojego
.vimrc
, aby móc sterować podświetlaniem innym niż ASCII, wpisując<C-w>1
. Pokazuje również komentarze wewnątrz, chociaż będziesz musiał dodać grupę komentarzy dla każdej składni pliku, której będziesz używać. Oznacza to, że jeśli będziesz edytować plik zsh, będziesz musiał dodaćzshComment
do liniiw przeciwnym razie nie pokaże znaku spoza ASCII (możesz również ustawić wartość includedin = ALL, jeśli chcesz mieć pewność, że we wszystkich grupach są wyświetlane znaki spoza zestawu ASCII). Aby sprawdzić, jak wywoływany jest komentarz w innym typie pliku, otwórz plik żądanego typu i wejdź
:sy
do vim, a następnie wyszukaj komentarz w elementach składni.źródło
Jakoś żadna z powyższych odpowiedzi nie zadziałała dla mnie.
Więc użyłem
:1,$ s/[^0-9a-zA-Z,-_\.]//g
Utrzymuje większość interesujących mnie postaci.
źródło
Ktoś już odpowiedział na pytanie. Jednak dla innych, którzy nadal mają problemy, oto inne rozwiązanie, aby wyróżnić znaki spoza ASCII w komentarzach (lub dowolnej grupie składni w tej sprawie). To nie jest najlepsze, ale to tymczasowe rozwiązanie.
Można spróbować:
Ma to połączenie części z innych rozwiązań. Możesz usunąć
contained
, ale z dokumentacji może wystąpić potencjalny problem z ponownym wyświetlaniem się (jak rozumiem). Aby wyświetlić inne zdefiniowane wzorce,syn-contains
sekcja powinna go zawierać.Powielony problem z: Ustaw przedmiot na wyższy priorytet podświetlenia na vimie
źródło