2010-12-30 3 views
30

まず、foldmethod = markerというセットを使用し、カーソルを関数の1つに移動し、zf%を使って現在の関数を折りたたみます。しかし、このファイルには多くの機能があります。このファイル内のすべての関数をどのように折り畳むことができますか?私は関数内で{}を折りたたみたくない。ファイル内のすべての関数をvimで自動的に折り畳むことはできますか?

+4

FYI vimディストリビューションには、通常、埋め込みヘルプが付属しています。 ':help fold'と入力すると、すべての折り畳み関連のものを見ることができます。 –

+1

興味のある言語を追加する必要があります(すべての言語に{}はありません)。 Vimの折り畳みは、それ自身の話題です。 – Rook

答えて

70

:set foldmethod=syntaxの場合、折り畳みは構文定義から指定されます。あなたが好む場合は、:set foldmethod=indentにインデントを付けると折り目を定義できます。

zMですべてのフォールドを閉じることができます。ネストされた折り目があり、レベルごとに折りたたみたい場合は、zmを使用します。折り畳みを開くには、zR(all)とzr(レベル別)を使用します。

+0

私はあなたが私の意味を誤解していると思います。最初は、各機能ごとに折り畳みを設定する必要があります。私はちょうど最初の1つの時間にすべての機能の折り畳みを設定する方法を知りたいです。 –

+0

@ Yongwei:オクラホマ、私は今それを得ると思う。これはあなたが望んだものですか? –

+1

私はfoldmethod = syntaxを設定した後にzRとzmが動作しない –

8

各機能は、あなたができる最初の列に開業ブレースを持っている場合:

:%g/^{/normal! zf% 

多分それはこの方法がより明確である:

:%g /^{/ normal! zf% 

gコマンドは以下に従って線を選択パターンを入力し、exコマンド(ここではnormal!でノーマルモードのキーストロークを再生)を実行します。

:help :gと私は似たものを探していたとき、私はこの出くわした

+0

私はこれを使用しています - ありがとう しかし、どのように関数間で折り畳まれるのを避けることができますか?それは機能だけではないようです – serup

4

:help :normalを参照してください。あなたは明らかにこれを明らかにしていたでしょうが、他の人の利益のために私はとにかく答えるでしょう。

はあなたの.vimrcに次の行に配置する必要があります。

set foldmethod=syntax 
set foldnestmax=1 
3
set foldlevel=0 

が折り畳まれるメンターされているもの、最初からすべてを倍になります。言語や折り畳み機能によって、折り畳みの内容が変わります。

+1

'zM'は同じことをします。 – MOHRE

1

:%g/\(function\_.\{-}\)\@<={/ normal! f{zf%

が少しずつ説明してみてください。

:%g - ファイル全体でグローバルに検索

/\(function\_.\{-}\)\@<={/ - 「{」最初に見つけた「関数」の後と始まりの上にカーソルを置くためのパターン'{'

normal! f{zf% - '{' f{にフォワードし、 '%'でフォールドするzf%をthaにしますトン列

+1

あなたのコマンドを動作させることができませんでした - おそらく例の機能を表示してください – serup

1

私は同じことをやろうとしていると単純にやってしまった。

setlocal foldmethod=marker 
setlocal foldmarker={,} 

をそれはマーカー折り畳み方法を使用して、単一の中括弧にマーカーを変更する(デフォルトではマーカーが{{{です)。

+0

私はそれをとても好きでした!しかし、私は1つのブレースを閉じ、別の(例えば "else"のような) –

関連する問題