2009-11-16 8 views
9

私はvimの初心者ユーザーで、インターネットで関数を崩壊させる方法を見つけることができず、C言語で引数リストを折りたたむ方法を考え出しましたzfa}とzfa)私はコメントセクションを崩壊させる方法を理解できません。それ、どうやったら出来るの?vim/gvimのコメントとすべての関数を折りたたむ

2番目の質問は関連していますが、ファイル内のすべての関数/引数リスト/コメントを同時に折りたたむ方法はありますか?

答えて

21

あなたが参照している機能を「折りたたみ」と呼びます(:help usr_28を参照)。 zfコマンドは手動で折り目を作成するために使用され、foldmethodオプションが「マーカー」または「手動」に設定されている場合にのみ使用されます。あなたが与えた例では、a}a)のテキストオブジェクト(:help usr_4.8参照)で指定された領域に折り目をつけています。

Cの場合、setlocal foldmethod=syntaxとすることができ、折りたたみ領域は構文ルールによって自動的に決定されます。これは、Cファイルの場合にのみ、~/.vim/ftplugin/c.vimに設定するか、~/.vimrcに次のautocmdを入れることによって行う必要があります。

autocmd FileType c setlocal foldmethod=syntax 

N.B.どちらもファイルタイプの検出が有効になっている必要があり(filetype on)、ftpluginソリューションではファイルタイププラグインが有効になっている必要があります(filetype plugin on)。後者は前者のスーパーセットなので、~/.vimrcには両方のコマンドは必要ありません。 /現在のバッファ内の全ての襞を開閉するように

、それらは、それぞれコマンドZRZMです。

+0

もう1つ必要です。構文は素晴らしいですが、私がzfaを定義することはできません)ので、引数リストを折りたたむことができます。私は本当に長いリストを持っていますが、何が入っているのか分かりません。自動的に崩壊するのは大変便利ですが、シンタックスモードではできません。定義モードを使用するには多すぎる関数があります。 –

+0

残念ながら、複数の折り畳み方法を同時に使用することはできず、手動折り畳み作成はマーカー/手動方法でのみ機能します。システム全体のディレクトリからsyntax/c.vimを〜/ .vim/syntax/c.vimにコピーし、 "fold"キーワードをcParen構文定義の最後に追加することができます。欠点は、新しい主要なVimリリースが作成されたときにいつでもそれを行う必要があるため、アップストリームで行われた変更を失うことはありません。また、 "{"を別の行に置く必要があります。そうでなければ、折り畳みはargリストのfoldを上書きします。 – jamessan

0

折り畳み領域をどのように設定すると仮定すると、foldlevelを希望のレベルに設定します。

5

は〜/ .gvimrcでに以下の設定を追加します。

"folding settings 
set foldmethod=indent "fold based on indent 
set foldnestmax=10  "deepest fold is 10 levels 
set nofoldenable  "dont fold by default 
set foldlevel=1   "this is just what i use 

次にあなたがZAと折りたたみを切り替えることができます。すべてをzMで折りたたみ、すべてをzRで展開できます。 zmとzrを使用すると、それらの折り畳みを正しく得ることができます。あなたが立ち往生した場合は、常に「ヘルプ:フォールディング」で全能のヘルプファイルを覚えておいてください。

ソース:http://smartic.us/2009/04/06/code-folding-in-vim/

関連する問題