質問

VIMが折り畳みのヘッダーとして使用される行にフォーマットを適用し続ける方法はありますか?

たとえば、次のコードがあります:

int foo(int a, int b) {
    int c;
....
}

折りたたんだとき:

+-- 4 lines: int foo(int a, int b) {----------------------------

ただし、「折り畳まれた」に従って行全体が強調表示されます。クラス。これを無効にする方法はあるので、構文の強調表示は引き続き表示されますか?

[簡単な例ではこれはそれほど重要ではありませんが、大規模なデータファイルを表示する際に折り畳みを広範囲に使用します。この場合、書式設定は私にとって非常に重要です]


役に立ちましたか?

解決

  

ただし、「折り畳まれた」に従って行全体が強調表示されます。クラス。これを無効にする方法はありますか?構文の強調表示が引き続き表示されますか?"

いいえ、折りたたまれた見出しテキストは、ファイルの一部であるテキストではなく、直接編集可能ではなく、計算されて画面にオーバーレイされるだけです。 「折り畳まれた」強調表示は行全体に適用され、すべての折り畳みには同じ強調表示が適用されます。

vimをアウトライナとして使用するために(VimOutlinerプロジェクトで)vimソースをハッキングして、フォールドレベルに応じて異なるフォールドハイライトを可能にしました。等。)。折り畳みヘッドラインの既存のテキストの強調表示を使用するとさらにハッキングされる可能性があると思いますが、折り畳みの動作方法を考えると、思ったよりも難しいのではないかと思います。

申し訳ありませんが、インデントのfoldmethodの提案は、あなたが探しているものとまったく同じかもしれません。 / p>

他のヒント

探しているのは、foldmethodをデフォルトの手動ではなくインデントに変更することだと思います。これをコマンドモードで入力します。

:set foldmethod=indent

今、foo関数内に移動してzmと入力すると(フォールドレベルが1ずつ増加します)、次のようになります。

int foo(int a, int b) {
+--  2 lines: int c;------------------------------------------------------------
}

foo行には、引き続き構文が強調表示されます。もちろん展開するには、zrと入力します。便宜上、.vimrcに次の数行を追加して、すべてをすばやく折りたたみまたは展開します。

" Folding and unfolding
map ,f :set foldmethod=indent<cr>zM<cr>
map ,F :set foldmethod=manual<cr>zR<cr>

優れたチュートリアルもありますこちら、そしてもちろんvimヘルプを読むfoldmethodを使用すると、インデントよりも適切な他のメソッドにつながる可能性がありますが、サンプルコードの見た目はおそらくインデントが必要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top