2011-01-31 10 views
2

私は言葉func_name_1zcをすれば、私は現在、奇妙な折りたたみあります{とA}同じ行に。&*

int func_name_1(int param) { 
    do_stuff(); 
    and_more(); 
} 

int func_name_2(int param) { 
    do_different_stuff(); 

    STRUCT_TYPE s = {5, 8, 10, 12}; 
    do_something_with(s); 
} 

に似TWP機能付きC++ファイルを編集しています、それは今しかしfunc_name_2

int func_name_1(int param) {-------------------- 

のように見えるように、Vimは、予想通りの機能を、ひだ、機能はそれほどのように折り畳まれている:

int func_name_2(int param) {--------------------- 
    do_something_with(s); 
} 

これはまさに私が望むものではありません。何らかの理由で、1行で{}の開閉が折り畳みアルゴリズムを妨げるように見えます。

誰かが「より良い」折り畳みを得る方法を知っていれば、正しい方向に向かうどんなヒントにも感謝します。この問題は、そう

set foldmarker={,} 
set foldmethod=marker 
set foldtext=getline(v:foldstart) 

編集IIように私のバッファに設定されているため、私は信じてい

編集オプションが関連している:私はオープンとクローズ{の行を変更した場合は... } STRUCT_TYPE s = { 5, 8, 10, 12};{の後のスペースに注意してください)、折り畳みは期待どおりに動作します。

+0

'foldminlines'の値は何ですか? – Benoit

+0

@Benoit、foldminlinesは1です。 –

答えて

3

ああ:-)この回答の範囲外の大会です{は折り畳みレベルを指定した後、すぐ5に、マーカーは、レベルが含まれていることができます[..]以下の数はそう倍 レベル

を指定:

:help fold-markerが私に語った....見ますそれは物事を乱した。

+0

折りたたみマーカーのレベルを無効にする方法はありますか?ありがとう。 –

0

zcコマンドは、現在のフォールドを閉じます。あなたはそれを閉じることができるようにフォルダを作成しているかもしれないので、あなたの問題は折り畳みを作成して閉じないことでした。

フォールドを作成するには、zfまたはzFを使用します。 zfビジュアルモードで動作し、zf2jのようなモーションでも、2行下の折り返しを作成します。 zFはすでに「線で」動作しています。

最も実用的な方法は、ブラケット(たとえばf{を使用)にカーソルを合わせ、zf%を実行して、一致する括弧に移動する折り目を作成して閉じることです。とにかく、私は....そのブラケットは別のライン(そう、あなたがそれに行くために]]を使用することができます)にあった場合には、より実用的になりますが、それは

+0

彼は 'foldmethod = manual'を設定していませんが、' foldmethod = marker'をカスタムマーカーで設定しました。 – Benoit

関連する問題