タブを文字として表示する


119

Pythonでファイルを操作するとき、タブとスペースを間違えることがあります。Vimにタブではなくタブの文字を表示させる方法はありますか?


補足としてretab、ファイルを保存するたびにすべてのタブをスペースに変換するように構成できます。
0xc0de

vim-faqをインストールしている場合は、そこでオフラインの回答を取得できます::h vim-faqおよび検索/invisible。覚えにくいタグは:h faq-19.8です。
Hotschke

回答:


119

はい、listcharsを使用します。

set list
set listchars=tab:>-

これらの2行を.vimrcに入れる>と、開始位置と-残りのタブにタブが表示されます。

(補足:listcharsは、末尾のスペースを表示することもできますtrail:x(末尾のスペースxに使用する文字に置き換えます)。これも同様に便利です。)


6
注:私が使用したいのですがset listchars=tab:!·,trail:·、IMHO ·はaよりもはるかに明確-です...これを機能させるにはかなり新しいVimバージョンが必要です(正確にはどちらが7.3.xなのかわかりません)...
Martin Tournoij

8
Unicode文字を使用するのが好きです>。現在、eolをマークすることで末尾の空白が表示されます(上記を試すこともできます)。私の設定は次のとおりです。set listchars=eol:¬,tab:▸\
マーティンニューヨーク

58

基本的な答えは:set list、タブをとして表示させること^Iです。

ただし、それを超えることをお勧めします。ただ、:set listそれが画面上で視覚的なアライメントを維持するために失敗したという点で問題があります。例えば:

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

特に、最初のofの下にgof g++が表示されると予想される場合は、見た目が良くありません()。pcpptabstop=8

したがって、あなたは.vimrcあなたのようなものを置くことをお勧めします:set listchars=tab:␉· (明確にするために、それはUnicode文字U + 2409 SYMBOL FOR HORIZONTAL TABULATIONに続くU + 00B7 MIDDLE DOTです)。

で説明したように:help listchars、の2文字の設定tab:xyにより、視覚的な配置が保持されます。

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.

上記の例は、画面に次のように表示されます。

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

個人的に、私は私と一緒に全面的に行きますlistchars

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

これらの文字は十分に特徴的であるため、ドキュメントのテキストに文字どおり表示されることはほとんどありません。

に説明されているように、これらの特殊文字をvimrcに入力するCtrl-vu23CEには、挿入モードで入力します:help utf-8-typing


2
参照set lcs=tab:├─
sch

これはちょうど私に与えた?eolで
WendyG

14

タブの強調表示

一時的なTab強調表示

時折使用する場合は、次の検索/コマンドを使用して、ドキュメント内のすべてのタブを強調表示するだけです。

/\t

ハイライトを削除するには、「ハイライトなし」の:noh短縮形を入力し:nohlsearchます。

恒久的なTab強調表示

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

vimでのタブの強調表示

その他のハイライト

これらの便利な強調表示コマンドの詳細については、末尾の空白と組み合わせて、これを永続的にするなど、Vim wikiを参照してください。


4
また:match Error /\t/、検索レジスタおよびhlsearch(:matchそれをクリアするために入力する)から独立して、タブ(またはその他のパタ​​ーン)を強調表示するために使用できます。
マーティントゥルノイ16

1
@Carpetsmoker Oneは、不要なスペースの強調表示について、Vim wikiでこれらの便利な強調表示コマンド(末尾の空白との組み合わせを含む!)を見つけることができます。
セルジュStroobandt

9

個人的には、インデントレベルで垂直線を表示するプラグインindentLineの使用が好きです。

特にインデントが重要なpythonで非常に役立ちます。

(上のリンクから撮影した画像)

とりわけ、トグルコマンドを提供します。このコマンドは、キーの組み合わせにマップできるため、必要ないときにオフにすることができます。


2
ただし、このプラグインはスペースのインデントを目的としていますか?
ジェイクバイマン

5

通常のターミナルとgvimでは、タブを異なる方法で表示できます。

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

(他の人が便利だと思う場合に備えて、完全性のために追加します)。


4

最も簡単な方法は:set list、タブ^Iを行の終わりとして表示すること$です。

を呼び出すマッピングを使用したい

:set invlist 

通常表示とリスト表示を切り替えます。

例えば:

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

これにより、タブとスペースの問題があるかどうかをすばやく確認してから、通常の表示に戻ることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.