vimでのPythonコードブロックのハイライト

vimでさまざまなインデントレベルを強調したいので、大きなコードブロックをより簡単に特定できました。私はいくつかの合理的な大きなネストされたfor/while/with/tryブロックを持っていて、カーソルがあるまでのブロック数を知ることは難しいです。

タブを強調表示する方法はありますか?

これは私が念頭に置いていることです:

try:
*   while True:
*   *   for foo in bar:
*   *   *   do()
*   if something:
*   *   done()
except bla:
*   exit()

*は特殊な背景色になります。

また、インデントレベルを特定する他の方法で解決します。

8
必須のコメント:おそらく、エディタではなくコードを修正することができます。 ;-) +1興味深い質問です。私はこれが実際にどのように見えるかを知りたい。
追加された 著者 Michael Kristofik,

2 答え

インデントガイド vimプラグインは、この種のハイライト表示を正確に行います。私は listchars オプション(Ackarが指摘したように)と一緒に使用します。

8
追加された
@クリスト私はあまりにもそれを使用し、残念なことに、それは空白のためのvimは空白を強調することができないので失敗します
追加された 著者 puk,
ああ、そのプラグインはかなりクールです。それは私が予想したよりも目立たないほどです。
追加された 著者 Michael Kristofik,

listchars オプションを使用して、特定の文字を表示することができます(:help listchars を参照)。

たとえば、タブを表示する場合は、次のようにします。

:set listchars=tab:*\     " Be careful : there is a space after the backslash
:set list

SpecialKey グループの highlight プロパティを使用してハイライトの色を変更することもできます。

vimを端末で使用する場合:

:highlight SpecialKey ctermfg=Cyan

詳細については、:help highlight を参照してください。

また、:runtime syntax/colortest.vim をチェックして、使用可能なすべての色を表示することもできます。

3
追加された
たぶんあなたはまた、どのようにして、リストチャーのための強調表示の色を設定できるかを述べるべきです。
追加された 著者 Niklas B.,
これは私が求めている正確に行いますが、それは私のためには機能しません。私は 'expandtab'オプションを使用していたので、スクリプトにはタブ文字はなく、スペースだけがあります。私はlist [chars]、すばらしいヒントについて知らなかった。
追加された 著者 Rafael Barbosa,
回答が編集されました。ありがとうございました :)
追加された 著者 Ackar,