2

現在、次のようなtwp関数を使用してC++ファイルを編集しています

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);
}

zcという単語に対してa を実行するとfunc_name_1、vim は期待どおりに関数を折りたたむため、次のようになります。

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

ただしfunc_name_2、関数は次のように折りたたまれます。

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};( の後のスペースに注意してください{) に変更すると、折りたたみは期待どおりに機能します。

4

2 に答える 2

3

ああなるほど....

:help fold-marker教えてください:マーカーにはレベルを含めることができます[..]次の数字は折りレベルを指定します

そのため5、指定された折り畳みレベルの直後に、{物事が台無しになりました。

于 2011-02-01T21:49:12.383 に答える
0

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

フォールドを作成するには、zfまたはを使用しますzFzfビジュアルモードで動作し、zf2j2行下に折り目を作成するようなモーションでも動作します。zFすでに「行ごと」の方法で機能します。

あなたの場合、最も実用的な方法は、カーソルをブラケットに置き(f{たとえばを使用して)、実行zf%して、一致するブラケットに向かう折り目を作成して閉じることです。とにかく、その括弧が別の行にある場合はさらに実用的です(したがって、]]それに行くために使用できます)が、それはこの回答の範囲外の規則です:-)

于 2011-01-31T23:37:42.517 に答える