web-dev-qa-db-ja.com

vimでファイル内のすべての関数を自動的に折りたたむにはどうすればよいですか?

最初に、set foldmethod = markerを使用し、カーソルを1つの関数の{に移動し、zf%を使用して現在の関数を折りたたみます。しかし、このファイルには多くの機能があります。このファイル内のすべての関数を折り畳むにはどうすればよいですか?そして、関数内で{}を折りたたみたくありません。

47
Yongwei Xing

もし、あんたが :set foldmethod=syntax折り畳みは構文定義から指定されます。必要に応じて、:set foldmethod=indentインデントで折り目を定義します。

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

97

各関数の最初の列に開き中かっこがある場合は、次のようにします。

:%g/^{/normal! zf%

たぶん、この方法はより明確です:

:%g /^{/ normal! zf%

gコマンドは、次のパターンに従って行を選択し、exコマンドを実行します(ここではnormal!通常モードのキーストロークを再生します)。

見る :help :gおよび:help :normal

8
Benoit

私は同じようなものを探していたときにこれに出くわしました。あなたは今では明らかにこれを理解しているでしょうが、他の人々の利益のために私はとにかく答えます。

.vimrcに次の行を入力する必要があります。

set foldmethod=syntax
set foldnestmax=1
7
pavan
set foldlevel=0

最初からすべてを折り畳みます。言語およびフォールド機能に応じて、フォールドの内容は異なります。

5
Rook

私は同じことをしようとしていたが、結局次のようになった:

setlocal foldmethod=marker
setlocal foldmarker={,}

マーカーの折りたたみ方法を使用し、マーカーを単一の波括弧に変更します(デフォルトでは、マーカーは{{{)。

4
mrtnmgs

:%g/\(function\_.\{-}\)\@<={/ normal! f{zf%を試してください

少しずつ説明してください:

_:%g_-ファイル全体をグローバルに検索

/\(function\_.\{-}\)\@<={/-「function」の後の最初の「{」を見つけ、その「{」で文字列の先頭にカーソルを置くパターン

_normal! f{zf%_-'{' _f{_まで前方に実行し、その文字列で移動 '%' _zf%_で折り畳む

1
Zanshee