タブマークの代わりに vim で ident レベルを表示するにはどうすればよいですか?

タブマークの代わりに vim で ident レベルを表示するにはどうすればよいですか?

私の.vimrc場合は、ほぼすべてのテキスト エディター/IDE と同様に、垂直線が表示されるので、インデント ブロックを簡単に追跡できます。

if(x == 1){
|   if( y == 1){
|   |   y();
|   }
}

これをもっと便利にして、代わりに識別レベルを表示する方法はありますか? すでに非常に低いコントラストの色を使用しているので、実際のコードと間違えることはありません。

if(x == 1){
1   if( y == 1){
1   2   y();
1   }
}

これは、仕事でリファクタリングしなければならないいくつかの奇妙なメソッドのネスト レベルを見つけるのに非常に役立ちます。現在の回避策は、水平ウィンドウを用意して、ブロックが奇妙になり始めたときに上部のウィンドウを残し、コードを変更するために移動する下部のウィンドウを残すことです。

PS: すでに Rainbow Parenthesis プラグインを持っています。しかし、それらはもう役に立ちません。

答え1

あなたの質問にコメントするだけの十分な経験がないので、代わりに回答を投稿します。何かもっと良い回答が見つかったら更新します。これが私の「回答」です:

まさにあなたが求めているものではありませんが、":set list" を試しましたか? (":set nolist" で無効になります)。ハードタブ (真のタブ文字、例^I) の場合、各タブに が表示されます^I。こうすることで、任意の行のタブの数を視覚的に確認し、数えることができます。これが、まさにあなたが求めているものではない、つまり、質問で提供/提案した形式ではないと言う理由です。

また、参考までに、私もあまり複雑でないコード (たとえば、数百 LOC で、せいぜい数個のファイル) を扱うときは を使用する習慣がありました。数千から数百万の LOC と数百のファイルがあるプロジェクトに取り組み始めたら、括弧が揃うように を使用するようになりました (私が思うに、あなたが求めているのと少し同じアイデアです)。これは、vim で括弧間を移動する場合にも非常に役立ちます。コードが長すぎる場合 (独自の関数が必要など) もあるため、水平ウィンドウ分割も使用します。
if(statement){
// code here...
}


if ( (complexStatement) )
{
// code here...
}

%

HTH

答え2

まあ、それはあなたが望むことを正確には実現できません。なぜなら、それは不可能だからです。しかし、私のダイナミックサインガター列にインデント レベルを表示するプラグイン。 を設定し:let g:Signs_IndentationLevel=1て実行します:Signs

:h DynamicSigns.txtこれを使って何ができるかについては、ヘルプを参照してください。

関連情報