Sekmeleri karakter olarak görüntüleme


119

Python'daki dosyalar üzerinde çalışırken bazen sekmelerde boşluklar ya da tersi yönde hata yapıyorum. Vim'in sekme yerine sekme için karakter görüntülemesinin bir yolu var mı?


Yandaki bir not gibi retab, dosyayı her kaydettiğinizde tüm sekmeleri boşluklara dönüştürmek için yapılandırabilirsiniz .
0xc0de

Eğer vim-faq kurduysanız , orada çevrimdışı bir cevap alabilirsiniz: :h vim-faqve arama /invisible. Ezberlemek etiketi zor :h faq-19.8.
Hotschke

Yanıtlar:


119

Evet, listchars kullanın:

set list
set listchars=tab:>-

Bu iki satırı .vimrc'nize eklerseniz, sekmeler >başlangıç ​​konumu ve -sekmenin geri kalanı boyunca gösterilir .

(Sidenote: listchars ayrıca takip eden boşlukları da gösterebilir (takip eden boşluk için kullanmak istediğiniz karakterle trail:xdeğiştirin x).


6
Not: Kullanmayı seviyorum set listchars=tab:!·,trail:·, IMHO ·çok daha net -... btw çalışması için bunun için oldukça yeni bir Vim sürümüne ihtiyacınız var (tam olarak hangisi olduğundan emin değilim, 7.3.x sanırım) ...
Martin Tournoij

8
Unicode karakterini biraz daha küçük olduğu için kullanmayı seviyorum >. Şu anda eol işaretleyerek beyaz boşluk izliyor (yukarıdakileri deneyebilirim). Ayarlarım: set listchars=eol:¬,tab:▸\ ve
Martin York

58

Temel cevap, :set listsekmelerin olarak gösterilmesine neden olur ^I.

Ancak, bunun ötesine geçmenizi öneririm. Sadece :set listekranda görsel hizalamayı koruyamadığı için sorunlu. Örneğin:

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

Beklediğiniz özellikle iyi görünmüyor gait g++ilk altında görünmesini parasında cpp(varsayarak tabstop=8).

Bu nedenle, .vimrcsize şöyle bir şey koymanızı öneriyorum :set listchars=tab:␉· (Açık olmak gerekirse , bu Unicode karakter U + 2409 SEMBOLÜ SINIF TABULASYONU, ardından U + 00B7 ORTA NOKTA) .

Açıklandığı gibi :help listchars, tab:xygörsel hizalamanın korunmasına neden olan iki karakterli bir ayar :

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.

Yukarıdaki örnek ekranda şöyle görünür:

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

Şahsen ben şununla çıkarım listchars:

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

Bu karakterler, nadiren belge metninde nadiren görünecekleri kadar belirgindir.

Bu özel karakterleri kendi içine yazmak için vimrc, Ctrl-vu23CEanlatıldığı gibi Insert Modunda yazın :help utf-8-typing.


2
Ayrıca bakınızset lcs=tab:├─
sch

Bu sadece bana bir verdi? at eol
WendyG

14

Sekmeleri vurgulama

Geçici Tabvurgulama

Arada bir kullanım için, aşağıdaki arama /komutunu kullanarak bir belgedeki tüm sekmeleri kolayca vurgulayabilirsiniz :

/\t

Vurgulamayı kaldırmak için, basitçe yüksek ışıklandırma :nohiçin kısa olanı yazın :nohlsearch.

Kalıcı Tabvurgulama

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

Vim'de sekme vurgulama

Daha fazla vurgulama

Bu yararlı vurgulama komutlarının daha fazlası için - sondaki boşluk ile birleştirilmiş ve bunu kalıcı kılmak dahil - Vim wiki'sine bakın .


4
Ayrıca :match Error /\t/, sekmeleri (veya bununla ilgili herhangi bir deseni) arama kaydından ve hlsearch'ten ( :matchtemizlemek için yazın) bağımsız olarak vurgulamak için de kullanabilirsiniz .
Martin Tournoij

1
Bir üzerinde (sonlarındaki boşluk ile kombine dahil!) Bu kullanışlı vurgulama komutların bir sürü daha bulabilirsiniz @Carpetsmoker Vim wiki hakkında istenmeyen boşluklar vurgulayarak .
Serge Stroobandt

9

Şahsen , girinti seviyelerinde dikey bir çizgi görüntüleyen eklenti indentLine eklentisini kullanmayı seviyorum .

Girintinin önemli olduğu özellikle python'da çok yardımcı olur.

(Yukarıdaki linkten alınan resim)

Diğer şeylerin yanı sıra, bir tuş kombinasyonuyla eşleştirilebilen bir geçiş komutu sağlar, böylece ihtiyacınız olmadığında kapatabilirsiniz.


2
Bu eklenti olsa da girintili alanlar için tasarlandığını düşünüyorum?
Jake Byman,

5

Sekmeleri normal bir terminalde ve gvim'de farklı göstermek isteyebilirsiniz.

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

(Başkalarının yararlı bulması durumunda bütünlüğü eklemek).


4

En kolay yöntem, :set listsekmeleri ^Ive satır sonunu gösterecek şekilde yapmaktır $.

Çağıran bir haritalama kullanmayı severim

:set invlist 

Normal ekran ve liste ekranı arasında geçiş yapmak için.

Örneğin:

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

Bu, sekme ile boşluk problemi olup olmadığını hızlıca kontrol etmemi ve ardından normal bir ekrana dönmemi sağlıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.