2009-11-28 19 views
9

VIMが折り畳みのヘッダーとして使用される行に書式設定を適用し続ける方法はありますか?折り畳んだときVIM折りたたみヘッダーの構文の強調表示

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

が、私は以下を参照してください:

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

しかし、行全体が "つ折り" クラスごとに強調表示されている

例えば、私は次のコードを持っています。これを無効にする方法はありますか?そのため、構文の強調表示は引き続き表示されますか?

[簡単な例のために、これはそれほど重要ではありませんが、私も大きなデータファイルを閲覧するに広範囲に折りたたみを使用し、そこにフォーマットがはるかに重要私にある]


答えて

7

"ただし、行全体が"折りたたみ "クラスごとにハイライト表示されます。これを無効にする方法はありますか?

いいえ、折りたたまれた見出しのテキストは、ファイルの一部であるテキストではなく、直接編集できず、計算され、画面上に重ねられます。 「折り畳まれた」ハイライトが行全体に適用され、すべての折り目に同じ強調表示が適用されます。

(VimOutlinerプロジェクトの)outlinerとしての私の使用のために、vimソースをハックしてフォールドレベルに応じて異なるフォールドハイライトを可能にしたので、複数のフォールド見出しハイライトが適用されます(FoldLevel1、FoldLevel2 、など)。私はそれがさらに折りたたみの頭のラインでテキストのすでに存在するハイライトを使用するためにハッキングすることができると思うが、私はそれが聞こえるよりも難しいかもしれないと思う折り畳み作業の方法を与えられた。

残念ながら、インデントのfoldmethodに関する提案は、とにかくあなたが折り畳まれたセクションの見出しの一種として機能していると同時に、インデントされていない行の構文を保持します。

5

私は何を」考えます探しているのは、foldmethodをマニュアルではなくインデントに変更することです。これがデフォルトです。コマンドモードでこれを入力します。

:set foldmethod=indent 

今、あなたはあなたのfoo関数とタイプZM(1によって折り畳みレベルを上げる)の内側に行けば、それは次のようになります。

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

fooのラインはまだシンタックスハイライトを持っています。展開するには、zrと入力します。 foldmethod上のvimのヘルプを読んでも良いチュートリアルhere、そしてもちろん、そのほかの方法にあなたを導く可能性があります

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

:利便性のために私はすぐにすべてを折ったり展開するために私の.vimrcに以下の数行を置きますあなたはインデントよりも好きですが、あなたのサンプルコードがあなたがインデントしたいと思うように見えます。

+0

回答ありがとうございます。おそらく私はその例を与えてはいけません。あなたのコメントはCコードにとっては良いですが、私はしばしばhttp://www.vim.org/scripts/script.php?script_id=158を使ってテキストファイルを折りたたみます。これはどのような解決策にも役立たないと思われます – Mikeage

+2

構文の強調表示が重要なプレーンテキストファイルを折りたたんでいる場合(私は例を見るのが好きです)、同じ種類アイデアが適用されます。構文を強調表示したい行の下に折り返しを開始すると、正しく強調表示される行が表示されます。 – mmrobins

+0

@mmrobins、あなたは[この折りたたみ線のPython構文の強調についてのこの質問](http://stackoverflow.com/questions/8655799/syntax-highlight-python-in-a-vim-fold-line)それが可能かどうか、また私がこの作業をするために変更する必要があることについて何らかの情報を提供していますか? –

関連する問題