Wyświetlanie kart jako znaków


119

Kiedy pracuję na plikach w Pythonie, czasami mylę tabulatory ze spacjami i odwrotnie. Czy jest sposób, w jaki mogę zmusić Vima do wyświetlenia znaku dla karty zamiast karty?


Uwaga dodatkowa: możesz skonfigurować konwersję wszystkich tabulatorów na spacje za retabkażdym razem, gdy zapisujesz plik.
0xc0de

Jeśli zainstalowałeś vim-faq , możesz tam uzyskać odpowiedź offline: :h vim-faqi wyszukać /invisible. Trudno zapamiętać tag :h faq-19.8.
Hotschke

Odpowiedzi:


119

Tak, użyj listchars:

set list
set listchars=tab:>-

Jeśli umieścisz te dwie linie w .vimrc, zakładki będą pokazane jak >dla pozycji początkowej i -przez resztę zakładki.

(Sidenote: listchary mogą także wyświetlać końcowe spacje trail:x(zamień xna znak, którego chcesz użyć na spację końcową), co również może być przydatne.)


6
Uwaga: Lubię używać set listchars=tab:!·,trail:·, IMHO ·jest o wiele jaśniejsze niż -... Potrzebujesz całkiem nowej wersji Vima, aby działało btw (nie jestem pewien, która dokładnie, myślę, 7.3.x) ...
Martin Tournoij

8
Lubię używać znaku Unicode, ponieważ jest on nieco mniejszy niż >. Obecnie widzę końcowe białe znaki zaznaczając eol (chociaż mogę spróbować powyższego). Moje ustawienia to: set listchars=eol:¬,tab:▸\ i
Martin York

58

Podstawowa odpowiedź to: :set listwyświetlanie kart jako ^I.

Polecam jednak wyjść poza to. Tylko :set listjest problem w tym, że nie zachować dopasowanie wizualne na ekranie. Na przykład:

%.o: %.cpp
^Ig++ -c $<

nie wyglądają dobrze, zwłaszcza jeśli oczekują god g++pojawiać się pod pierwszą pz cpp(zakładając tabstop=8).

Dlatego sugeruję, .vimrcabyś włożył coś takiego :set listchars=tab:␉· (aby być jasnym, to znak Unicode U + 2409 SYMBOL FOR HORIZONTAL TABULATION, a następnie U + 00B7 MIDDLE DOT .)

Jak wyjaśniono w :help listchars, dwuznakowe ustawienie tab:xypowoduje zachowanie wyrównania wizualnego:

tab:xy        Two characters to be used to show a tab.  The first
              char is used once.  The second char is repeated to
              fill the space that the tab normally occupies.
              "tab:>-" will show a tab that takes four spaces as
              ">---".  When omitted, a tab is show as ^I.

Powyższy przykład pojawi się na ekranie jako:

%.o: %.cpp
␉·······g++ -c $<

Osobiście robię wszystko z moim listchars:

:set listchars=eol:⏎,tab:␉·,trail:␠,nbsp:⎵

Znaki te są na tyle charakterystyczne, że rzadko pojawiają się dosłownie w tekście dokumentu.

Aby wpisać te znaki specjalne vimrc, wpisz Ctrl-vu23CEw trybie wstawiania, jak wyjaśniono w :help utf-8-typing.


2
Zobacz takżeset lcs=tab:├─
sch

to mi właśnie dało? at eol
WendyG

14

Podświetlanie kart

Tymczasowe Tabpodświetlanie

Do sporadycznego użycia można po prostu podświetlić wszystkie zakładki w dokumencie za pomocą następującego /polecenia wyszukiwania :

/\t

Aby usunąć podświetlenie, po prostu wpisz :nohskrót :nohlsearch- brak wysokiego oświetlenia.

Trwałe Tabpodświetlanie

" Highlight tabs as errors.
" https://vi.stackexchange.com/a/9353/3168
match Error /\t/

Podświetlanie tabulatorów w vimie

Więcej wyróżnień

Więcej użytecznych komend podświetlających - w tym w połączeniu z końcowymi spacjami i ustawieniem ich na stałe - można znaleźć na wiki Vima .


4
Możesz także użyć :match Error /\t/do podświetlenia zakładek (lub dowolnego innego wzorca w tym zakresie) niezależnie od rejestru wyszukiwania i hlsearch (wpisz, :matchaby go wyczyścić).
Martin Tournoij,

1
@Carpetsmoker Na wiki Vima o podświetlaniu niepożądanych miejsc można znaleźć o wiele więcej przydatnych komend podświetlających (w tym w połączeniu z końcowymi białymi znakami!) .
Serge Stroobandt,

9

Osobiście podoba mi się użycie wtyczki indentLine , która wyświetla pionową linię na poziomie wcięcia.

Jest to bardzo pomocne, szczególnie w pythonie, gdzie ważne jest wcięcie.

(Zdjęcie pochodzi z linku powyżej)

Zapewnia między innymi polecenie przełączania, które można zamapować na kombinację klawiszy, dzięki czemu można je wyłączyć, gdy nie jest ono potrzebne.


2
Uważam, że ta wtyczka jest przeznaczona do wcięć w przestrzeni?
Jake Byman

5

Możesz wyświetlać tabulatory inaczej w zwykłym terminalu i gvimie.

set list!
if has('gui_running')
    set listchars=tab:▶\ ,trail:·,extends:\#,nbsp:.
else
    set listchars=tab:>.,trail:.,extends:\#,nbsp:.
endif

(Dodanie kompletności, na wypadek gdyby inni uznali to za przydatne).


4

Najprostszą metodą jest zrobienie :set list, która wyświetli tabulacje jako ^Ii koniec linii jako $.

Lubię używać mapowania, które wywołuje

:set invlist 

do przełączania między wyświetlaniem zwykłym a wyświetlaniem listy.

Na przykład:

:nmap <leader>l :set invlist<cr>

To pozwala mi szybko sprawdzić, czy występują problemy z tabulacją i przestrzenią, a następnie wrócić do normalnego wyświetlania.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.