vim ではインデントされた行を隠したりすることが
できます。これを利用すればプログラムなど
を書くときに全体を見渡しやすくなって
かなり便利だと思います。
はじめに fold する時の方法としてどのようなものが
あるか説明します。fold のタイプは
:set foldmethod=manualのようにするか
:set fdm=manualのようにすることで
選択できます。
manual 手動でfold レベルをきめる
indent インデントの数をfold レベルにする
expr foldを定義する式を指定する
syntax 構文強調によりfoldを定義する
diff 変更されていないテキストをfoldとする
marker テキスト中の印でfoldを定義する
はじめにすべてのタイプで必要になる fold の基本操作を説明します。
foldコマンドはzではじまるので覚えやすいかもしれません。
zi foldenable をトグルで on off する
zc fold を閉じる(close)
zC fold を再帰的に閉じる(close)
zo fold を開く(open)
zO fold を再帰的に開く(open)
zr foldlevel をインクリメント、 すなわちすべてのfoldを1level開く
zR foldlevel を最大値にする、すなわちすべてのfoldを開く
zm foldlevel をデクリメント、すんわちすべてのfoldを1level閉じる
zM foldlevel を0にする、すなわちすべてのfoldを閉じる
これくらいで十分だと思います。
次にmanualと
markerの際に必要になるコマンドを説明します。
zf4j fold をカーソルから4行分設定する
zf`a fold をカーソルからaのマーク位置まで設定する
zd 設定された fold を削除
zD 設定された fold を再帰的に削除
markerの場合はfoldを設定すると
文中にfoldのマークが挿入されます。その際デフォルトだと
マークの前後にC言語のコメントが挿入されます。(/*{{{*/のように)
しかし場合によっては他のコメント形式がよかったりする場合が
あります。そのときはcommentstringを変更します。
set commentstring=/*%s*/ C言語のコメント形式
set commentstring=\%%s texのコメント形式
set commentstring= コメントなし
つまり上の%sの部分がfoldのマークに置き換わったものが
挿入されると考えればよいと思います。
次にmanualの場合ですが、この場合内部的に処理されるだけなので
文章を保存しただけだと
一回終了してしまうとfoldの設定が消えてしまいます。
したがってmanualの時foldの設定を
保存する必要があります。
:mkview 設定した fold を保存(manual時)
:loadview 設定した fold を読み込む(manual時)