Nie mogę znaleźć sposobu, aby Vim pokazał wszystkie białe pola jako postać. Znalazłem tylko tabulatory, spacje końcowe itp.
772
Nie mogę znaleźć sposobu, aby Vim pokazał wszystkie białe pola jako postać. Znalazłem tylko tabulatory, spacje końcowe itp.
:set list
. To nie odpowiada na nasze pytanie. (Do innych chętnych: poniższa odpowiedź mrucci jest pomocna, choć nie do końca realne rozwiązanie ).list
ilistchars
uważają, że spacja bezpośrednio pod tabulatorem. W tej sytuacji byłoby prawie niewidoczne. Zgadzam się, że możesz uchwycić większość sytuacji, ale jeśli byłoby miło mieć odpowiednie podświetlenie wszystkich przestrzeni.Odpowiedzi:
Jak powiedzieli inni, możesz użyć
co w połączeniu z
wyświetlać niewidoczne znaki.
Teraz nie ma wyraźnej opcji, której można użyć do wyświetlania białych znaków, ale w listach kontrolnych można ustawić znak, aby wyświetlać wszystko, ALE biały. Na przykład mój wygląda tak
więc teraz, po użyciu
wszystko, co nie zostało wyraźnie pokazane jako coś innego, jest więc po prostu zwykłą białą spacją.
Jak zwykle, aby zrozumieć, jak
listchars
działa, skorzystaj z pomocy. Dostarcza świetnych informacji o tym, jakie znaki mogą być wyświetlane (na przykład końcowe spacje) i jak to zrobić:Pomocne może być dodanie przełącznika, abyś mógł łatwo zobaczyć zmiany w trakcie edycji (źródło: VIM: ustaw listę! Jako przełącznik w .vimrc ):
źródło
.vimrc
, aby ten ładny sposób wyświetlania niewidzialnych znaków mógł być łatwo włączony:set list
w dowolnym momencie (bez ponownego przeglądania strony).Począwszy od aktualizacji 7.4.710 , możesz teraz ustawić postać, aby wyświetlała się zamiast miejsca za pomocą listchars!
Aby więc wyświetlić WSZYSTKIE białe znaki jako znak, możesz wykonać następujące czynności:
Dyskusja na temat listy mailingowej: https://groups.google.com/forum/?fromgroups#!topic/vim_dev/pjmW6wOZW_Q
źródło
:help listchars
aby sprawdzić, czy „spacja” jest prawidłową opcją dla „listchars”. Jeśli nie jest, zaktualizuj vima do podanej łatki @ brettanomyces. Lub po prostu zostaw „spację” poza poleceniem set, jeśli nie chcesz widzieć spacji.space:·
), ponieważ wygląda jak MS Word, Notepad ++ itp.<C-K>.M
vim dla·
. Zobacz:h digraph
szczegóły.:set list
umożliwić.:set nolist
wyłączyć.źródło
: set list!
jest lepiej :)Shift
i!
to zarówno trudniej niż typno
. Jeśli umieścisz go w swoim .vimrc, zgadzam się, że formularz wykrzyknika jest łatwiejszy do odczytania.:set list!
zrobisz to bez konieczności wchodzenianolist
. Po!
prostu robi odwrotność tego, co jest obecnie ustawione. Korzystam z tego cały czas, szczególnie kiedy:set paste!
. Nienawidzę naciskać klawisza strzałki, by znaleźć:set paste
lub:set nopaste
lolMyślę, że inne odpowiedzi tutaj są bardziej wyczerpujące, ale pomyślałem, że podzielę się sztuczką, której zwykle używam do wizualnego rozróżnienia tabulatorów i spacji:
Są to reguły podświetlania składni dla języka programowania Whitespace - zakładki są wyświetlane na zielono, a spacje na czerwono. :)
Można łączyć z
:set list
jak wspomniano w wielu innych odpowiedziach, chociaż zakładki będą wówczas wyświetlane jako ^ I bez zielonego podświetlenia, ale spacje będą wyświetlane na czerwono.źródło
:set list
pokaże wszystkie białe znaki jako znaki. Wszystko oprócz przestrzeni będzie wyglądać inaczej niż w normalnym stanie, co oznacza, że jeśli nadal widzisz zwykłą starą przestrzeń, to naprawdę zwykła stara przestrzeń. :)źródło
:set nolist
!
końcu można także przełączać opcje bez opcji :set list!
:se hls | /\_s
. Pobiera wszystko, aset list
ignoruje spacje. Wyłącz ponownie z:se nohls
. Szczegóły na ten temat w tym poście: albertech.blogspot.com/2015/02/...Jeśli ustawisz:
a następnie wykonaj wyszukiwanie spacji, każdy znak spacji zostanie wyświetlony jako znak podkreślenia.
Możesz użyć tego polecenia w przydatnej funkcji, która przełącza „podkreślanie” spacji.
Zamapuj funkcję na klawisz skrótu za pomocą:
NB: Zdefiniuj funkcję w vimrc po ustawieniu schematu kolorów.
źródło
W zależności od reguł składni dla bieżącego bufora, coś takiego może działać:
Wymaga vim 7.3 z funkcją ukrywania
Zaktualizuj 24.10.2014 r. Aby nieco rozszerzyć tę kwestię . Oczywiście możliwe jest zdefiniowanie niektórych wyróżnień dla ukrytych znaków.
Możesz skonfigurować wygląd ukrytych znaków. Aby podświetlić, musisz przynajmniej raz skonfigurować grupę podświetlania „Ukryj” (zobacz pomoc na stronie
:h hl-Conceal
Można to zrobić w swoim schemacie kolorów, a następnie nie trzeba go ponownie konfigurować. Ale to wpływa na wszystkie ukryte znaki (np. skrypt składniowy ukrywa kilka dodatkowych elementów, będą one wyświetlane jako białe znaki). Może to wyglądać tak::hi Conceal ctermfg=7 ctermbg=NONE guifg=LightGrey guibg=NONE
Wygląda na to, że Vim nie wyróżnia spacji, jeśli skrypt składniowy używa
skipwhite
słowa kluczowego. Nie będzie odwrotu (być może zostanie to naprawione, opublikowałem łatkę )list
trybie. Ostatni z nich w momencie pisania tego tekstu wydaje się być ten jeden . (Oznacza to, że musisz zbudować własnego Vima, aby z niego korzystać).conceallevel
Iconcealcursor
są parapety lokalne opcje. Oznacza to, że mogą się różnić w różnych oknach (i być może zostaną również ustawione przez wtyczki typu pliku lub inne skrypty wtyczek).BufWinEnter
ewentualnie równieżSyntax
lub nawetFileType
autocommand. (Nie testowałem, który z nich faktycznie działa).Ostatnie dwa elementy oznaczają, że będziesz musiał skonfigurować niektóre polecenia automatyczne, które resetują reguły składni i odpowiednie opcje. Po pierwsze, można ustawić podświetlenie za pomocą polecenia
ColorScheme
automatycznego (tak, aby ukryte znaki zawsze wyglądały tak samo, niezależnie od tego, co faktycznie ustawia schemat kolorów). Aby znaleźć kompletne rozwiązanie, spójrz na odpowiedź romainl, która powinna dać ci początek. Jeśli ustawisz funkcję, możesz łatwo ustawić polecenie przełączania, aby włączyć lub wyłączyć wyświetlanie specjalnego Podświetlania.Aktualizacja 26.10.2014 Z tego pytania zrobiłem wtyczkę .
Aktualizacja 22.04.2015 W Vimie została dodana łatka, która umożliwia to przy użyciu
list
opcji. Po prostu ustawset list listchars+=space:␣
To działa od Vima 7.4.711źródło
.vimrc
?Æ
to dziwny wybór postaci, dlaczego nie·
?używam tego
aby wyróżnić białe spacje. Wyszukuje wszystkie białe spacje, a następnie włącza podświetlenie, aby je wyskoczyły. Jednakże, nie nie wydrukować specjalny charakter.
źródło
nnoremap <leader><space> :noh<cr>
)Jeśli przez spacje rozumiesz znak „”, moja sugestia to po prostu wyszukiwanie / zamiana. Jak wskazali inni,
set list
zmienia znaki niedrukowalne na widoczne, skonfigurowane wlistchars
.Aby jawnie pokazać spacje jako inną postać, coś podobnego do poniższego powinno załatwić sprawę:
:%s/ /█/g
Następnie po prostu cofnij zmianę, aby wrócić ponownie.
(aby uzyskać █ Nacisnąłem dokładnie ten sekwencję klawiszy: :%s/ /CTRL-KFB/g)
źródło
:set list
dla mnie wygląda to odwrotnie , zmieniając widoczną postać („spację”) na _ nie drażniącą_ (??). Zastanawiam się, czy można użyć tego w meczu, np.:match MyBlackBlockChar "appropriate_regex
To powinno załatwić sprawę, prawda?:%s/\s/█/g
dla wszystkich białych znaków. Przydałby się również:set hlsearch
plus:&s/\s//gn
.Aby podświetlić spacje, po prostu wyszukaj:
/ <spacja>
Uwagi:
Aby podświetlić spacje i tabulatory:
/ [<space> <tab>]
Szybkim sposobem na usunięcie wyróżnień jest poszukiwanie czegoś innego: / asdf
(wystarczy wpisać dowolną krótką listę losowych znaków)
źródło
/<space>
porównaniu do/\s
. Myślę, że skorzystanie z sugestii tutaj nie jest oczywiste i szybsze.Poniższy kod oparty jest na odpowiedzi Christiana Brabandta i wydaje się robić to, czego chce OP:
Dołącz te linie do swojej
~/.vimrc
i rozpocznij nową sesję Vima, aby zobaczyć, jak wciąż dzieje się niedoskonała magia.Edytuj domyślne kolory i ukryj znak.
Zastrzeżenie: coś w
*FuncBody
grupie składni w kilku językach uniemożliwia wyświetlenie środkowej kropki. Nie wiem (jeszcze?) Jak uczynić to rozwiązanie bardziej niezawodnym.źródło
skipwhite
argument reguł składni, który uniemożliwia dopasowanie grupy składni (chociaż powinno być dozwolone, aby zawierała się we wszystkich grupach).Byłem sfrustrowany wszystkimi pozostałymi odpowiedziami na to pytanie, ponieważ żadna z nich nie uwydatnia znaku spacji w użyteczny sposób. Wyświetlanie spacji jako znaków byłoby szczególnie pomocne w przypadku języków sformatowanych spacjami, w których mieszanie tabulatorów i spacji jest szkodliwe.
Moim rozwiązaniem jest wyświetlanie tabulatorów i podkreślanie wielu spacji. Pożycza od odpowiedzi Mrucciego i tego poradnika . Ponieważ używa podświetlania składni, jest trwały:
Używając tego, tabulatory są wyświetlane jako
|
i spacje jako_
, co bardzo ułatwia stwierdzenie, kiedy mieszam style kodu.Jedynym minusem, jaki znalazłem, jest to, że ten fragment kodu nie dopasowuje koloru tła do kontekstu (jak w komentarzu).
źródło
wszystkie powyższe odpowiedzi starają się, aby spacje były widoczne z poziomu vima. Jeśli naprawdę nalegasz, aby widoczne kropki były widoczne, istnieje inne podejście ...
Jeśli nie można tego zrobić w vimie, zmień czcionkę całkowicie. Skopiowałem czcionkę Ubuntu One Mono i edytowałem ją za pomocą FontForge. Pamiętaj, aby zmienić pełną nazwę czcionki, rodzinę, preferowaną rodzinę, pełną kompatybilną (w FontFoge jest pod nazwami TTF w informacjach o czcionce), aby mieć osobną czcionkę. Po prostu edytuj znak spacji, aby mieć kropkę na środku i zapisz czcionkę w ~ / .fonts Teraz możesz użyć go dla swojego gvima lub całego terminalu ... Skopiowałem „!” znak, usunął linię i przesunął kropkę na środek. Zajęło to nieco ponad 5 minut ...
Uwaga: zmiana znaku spacji (0x20) powoduje niedogodności związane z posiadaniem kropek na całym ekranie vim ... (ale spowoduje to oddzielenie spacji od tabulatorów ...)
źródło
Z istniejących odpowiedzi nie znalazłem dokładnie tego, czego chciałem. Poniższy kod podświetli wszystkie spacje końcowe na czerwono. Po prostu dodaj następujące elementy do swojego
.vimrc
źródło
unika się fragmentu „musisz szukać spacji, żeby się pojawili”, ale afaict nie może być skonfigurowany do robienia rzeczy nie oświetlających przestrzeni. CursorLine może być dowolną grupą oświetleniową, aw domyślnym motywie jest to zwykłe podkreślenie.
źródło
Lubię używać znaków specjalnych do wyświetlania białych znaków, jest bardziej przejrzysta. Nawet przełączanie mapy jest kluczową funkcją umożliwiającą szybkie sprawdzenie.
Możesz znaleźć te funkcje w starym skrypcie vim, nie aktualizowanym od 2004 roku:
vim-scripts/[email protected]
Dzięki skryptom vim projektu i vundle projektu możesz przywrócić tę wtyczkę do życia
vim-scripts / cream-showinvisibles @ github
Co więcej, moje dwa centy na tym polega na dodaniu konfigurowalnego skrótu (zamiast predefiniowanego F4)
więc dodaj to do ~ / .vimrc
zainstaluj wtyczkę na vimie
i proszę bardzo
źródło
Aby zakryć znaki białych znaków Unicode:
Wynik:
”)
│
” (dwa znaki: długa rura, a następnie spacja porządkowa; są szarecolorscheme murphy
)·
” (jedna postać; jest szaracolorscheme murphy
)”
źródło
set listchars=tab:»\ ,space:·
celach informacyjnych.gvim
i dlavim
.Możesz użyć
aby naprawdę zobaczyć strukturę linii. Zobaczysz wyraźnie karty i znaki nowej linii. Kiedy widzisz puste miejsce, to naprawdę jest puste.
źródło
zaznacz wyszukiwanie
w
.vimrc
tym jesti szukaj spacji i znaków powrotu karetki
lub wyszukaj wszystkie znaki spacji
wyszukiwania wszystkich znaków innych niż białe znaki (znaki białych znaków nie są wyświetlane, więc między słowami widać znaki białych znaków, ale nie końcowe znaki białych znaków)
aby pokazać wszystkie końcowe białe znaki - na końcu linii
źródło
Trzymaj te hacki w .vimrc jako komentarze, więc w powłoce po prostu:
źródło
:se
wystarczy,:set
nie jest potrzebne.źródło
możesz także podświetlić spacje (zastępując je blokiem):
(przed napisaniem cofnij to)
źródło
Dodanie tego do mojego .vimrc działa dla mnie. Tylko upewnij się, że nie masz nic innego sprzecznego ...
źródło