Merge branch 'KaoriYa'
[MacVim/KaoriYa.git] / runtime / doc / fold.jax
blob8dc54ca2308376558ad38d681e6d820e15b3456d
1 *fold.txt*      For Vim バージョン 7.1.  Last change: 2007 May 11
4                 VIMリファレンスマニュアル    by Bram Moolenaar
7 折畳(folding)                                     *Folding* *folding*
9 ユーザマニュアルの28章に折畳についての紹介がされている。|usr_28.txt|
11 1. 折畳方法         |fold-methods|
12 2. 折畳コマンド               |fold-commands|
13 3. 折畳オプション      |fold-options|
14 4. 折畳の振舞                |fold-behavior|
16 {Viには折畳は無い}
17 {+folding機能無しでコンパイルした場合には利用できない}
19 ==============================================================================
20 1. 折畳方法                                 *fold-methods*
22 折畳を行なう方法は'foldmethod'オプションで設定できる。
24 'foldmethod'を"manual"以外の値に設定すると、存在している折畳は総て削除され新た
25 な折畳が作成される。"manual"に切換えた時には既存の折畳は削除されない。これを利
26 用すればまず自動的に折畳を定義し、それから手動で変更することが可能である。
28 折畳方法は6つの中から選択できる:
29         manual          手動で折畳を定義する
30         indent          インデントの数を折畳のレベル(深さ)とする
31         expr            折畳を定義する式を指定する
32         syntax          構文強調により折畳を定義する
33         diff            変更されていないテキストを折畳対象とする
34         marker          テキスト中の印で折畳を定義する
37 手動(MANUAL)                                      *fold-manual*
39 折畳領域を定義するためにコマンドを手動で利用する。これはテキスト中の折畳を行な
40 う箇所をスクリプトにより解析するのに使うこともできる。
42 折畳のレベルは折畳の入れ子の深さとなる。ある行範囲の折畳レベルを増やすには、折
43 畳がある同じ範囲に対して再び折畳を設定する。
45 手動折畳はファイルを放棄すると失われる。折畳を保存するには|:mkview|コマンドを
46 使用する。後に復元するには|:loadview|を使用する。
49 インデント(INDENT)                           *fold-indent*
51 折畳は各行のインデントにより自動的に定義される。
53 折畳レベルは各行のインデント量を、'shiftwidth'で割る(端数切捨て)ことで計算され
54 る。同じかより高い折畳レベルを持った一続きの範囲は1つの折畳を形成し、より高い
55 レベルを持った範囲はその中で入れ子の折畳となる。
57 折畳の入れ子は'foldnestmax'によって制限される。
59 ある行ではインデントを無視して直ぐ上か下の行のうち、低いほうの折畳レベルが使用
60 される。無視されるのは完全な空行か、空白文字だけからなる行、および'foldignore'
61 の文字で始まる行である。'foldignore'の文字の前に空白文字があっても無視される。
62 Cではプリプロセッサ行を無視するために"#"を使用する。
64 他の方法で無視する行を定義するには、'expr'の方法を使用する。'foldexpr'の中で、
65 ある行のインデントを取得するのに、関数|indent()|を使うことができる。
68 式(EXPR)                                 *fold-expr*
70 折畳は"indent"方式のように、折畳レベルによって自動的に定義される。'foldexpr'オ
71 プションの値は、各行についてこの折畳レベルを計算するためにスクリプトとして実行
72 される。例:
73 タブで始まる一連の行範囲を1つの折畳にまとめる: >
74         :set foldexpr=getline(v:lnum)[0]==\"\\t\"
75 折畳レベルを計算するのにVimスクリプトの関数を呼び出す: >
76         :set foldexpr=MyFoldLevel(v:lnum)
77 空行で仕切られた「段落」を折畳とする: >
78     :set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1
79 同じ事(「段落」を折畳に)をする別の表現: >
80     :set foldexpr=getline(v:lnum-1)=~'^\\s*$'&&getline(v:lnum)=~'\\S'?'>1':1
82 バックスラッシュ(日本では \ 記号)が":set"の流儀で、通常とは異なるキャラクタ(空
83 白文字、バックスラッシュ、ダブルクオート、その他、詳細は|option-backslash|参
84 照)をエスケープしていることに注意。
86 式が評価される際の前提条件は以下の通り:
87 - その行について現在のバッファとウィンドウが常に存在している。
88 - 変数"v:lnum"には評価対象となる行番号が設定されている。
89 - 式の結果(戻り値)は以下の形式で折畳レベルを示す:
90   値                     意味 ~
91   0                     対象行は折畳に含まれない
92   1, 2, ..              対象行はこのレベルの折畳に含まれる
93   -1                    折畳レベルを未定義とし、対象行の直前か直後の行のうち低
94                         い方を、対象行のレベルとする。
95   "="                   直前の行と同じレベルを使用する
96   "a1", "a2", ..        直前の行のレベルを+1, +2して設定する
97   "s1", "s2", ..        直前の行のレベルを-1, -2して設定する
98   "<1", "<2", ..        指定したレベルの折畳を対象行で終了する
99   ">1", ">2", ..        指定したレベルの折畳を対象行から開始する
101 折畳は直前の行の折畳レベルより高い(低い)行から開始(終了)されるので、折畳の開始
102 (終了)マーク">1" ("<1") は明示的に指定する必要は無い。
104 式に副作用があってはならない。バッファ内のテキストや、カーソルの位置や、検索パ
105 ターンん、オプションその他。どれひとつ変更してはならない。
106 ただし、注意深く行えば、変更してもそれを復元しておけばよい。
108 式にエラーがあるか、結果が認識できない時には、何のエラーメッセージも表示せずに
109 折畳レベルは0に設定される。'debug'オプションに"msg"を設定すれば、エラーメッ
110 セージが表示されるようになるので、デバッグに利用できる。
112 NOTE: 各行について式評価が実行されるので、この折畳方式は非常に動作が遅くなる可
113 能性がある!
115 "=", "a", そして"s"は極力避けるようにする。なぜならVimはそれらが使われると、折
116 畳レベルが定義された行が見つかるまで戻って、幾度も検索を行なわなければならない
117 からだ。これは動作が遅くなることがある。
119 フォールドレベルを調べるには|foldlevel()|を使うのが便利です。レベルがわからな
120 いときは-1を返すことに注意してください。フォールドがその行で終わっているときに
121 は行頭のレベルを返します。
124 構文(SYNTAX)                                      *fold-syntax*
126 折畳が"fold"引数を持つ構文要素によって定義される。 |:syn-fold|
128 折畳レベルは入れ子によって定義される。入れ子の深さは'foldnestmax'によって制限
129 される。
131 シンタックスの同期の設定に注意してください。これが正しく設定されていないとフォ
132 ールドが間違ったハイライトで表示されます。これは特に複数行にマッチするシンタッ
133 クスで問題になります。そのようなときには次のような力技があります: >
134         :syn sync fromstart
137 差分(DIFF)                                        *fold-diff*
139 テキストの変更された箇所とその近辺以外が自動的に折畳として定義される。
141 この方法は現在のウィンドウに対して'diff'オプションが設定されている時にだけ正し
142 く働き、変更点が表示される。そうでない場合バッファ全体が1つの大きな折畳となる。
144 コンテキスト(の行数)を指定するのに'diffopt'を使うことができる。これにより変更
145 点の近辺の折畳に含まない行数を指定できる。下の例では8行表示するように設定して
146 いる: >
147         :set diffopt=filler,context:8
148 省略した場合には6行が表示される。
150 'scrollbind'が設定されているとき、Vimは他のウインドウと見た目が同じになるよう
151 にフォールドを開いた状態に保とうとします。
153 印(MARKER)                                       *fold-marker*
155 テキスト中の印により折畳の開始と終了地点を指定する。これにより明確に折畳を設定
156 することができる。また誤った行を含むことなく、折畳を削除・設定できる。通常
157 'foldtext'オプションは折畳の行に表示されるテキストとして、印の直前のテキスト設
158 定する。これにより折畳に名前を設定することが可能になる。
160 印には折畳レベルを含むことができ、また開始と終了で対になる文字を使うこともでき
161 る。必ずしも終了の印を加える必要はなく、また対がない印が無い場合の問題も避けら
162 れるので、レベルを含んだほうがより簡単である。例: >
163         /* グローバル変数 {{{1 */
164         int varA, varB;
166         /* 関数 {{{1 */
167         /* funcA() {{{2 */
168         void funcA() {}
170         /* funcB() {{{2 */
171         void funcB() {}
173 折畳は印"{{{"で開始する。印の後ろの番号は折畳レベルを示す。現在の折畳レベルと
174 異なるレベルが印によって与えられた時に何が起こるかは、そのレベルの差に依存す
175 る:
176 1. 同じ折畳レベルの印が与えられた時には、前の折畳は終了し同じレベルの新たな折
177    畳が開始する。
178 2. 高い折畳レベルの印を見つけた時には、入れ子の折畳が開始する。
179 3. 低い折畳レベルの印を見つけた時には、指定されたレベル以上の全部の折畳を終了
180    し、指定されたレベルで新たな折畳が開始する。
182 番号は折畳レベルを示す。0を使うことはできない(レベル0の印は無視される)。特定の
183 レベルの折畳を終了させるため "}}}" 数字を付けて使うことができる。その印の直後
184 の行の折畳レベルは示されたレベルよりも1つだけ低くなる。Vimは指定されたレベルに
185 マッチする印を検索はしないことに注意(計算に時間がかかりすぎてしまうので)。
186 例: >
188         {{{1
189         ここからレベル1の折畳
190         {{{3
191         ここからレベル3の折畳
192         }}}3
193         ここからレベル2の折畳
195 折畳を定義するのに対になる"{{{"と"}}}"を使用することもできる。折畳レベルは
196 "{{{"1つにつき1ずつ増加し、"}}}"1つにつき1ずつ減少する。印同士の対応関係を維持
197 するように気をつけること!。例: >
199         {{{
200         ここからレベル1の折畳
201         {{{
202         ここからレベル2の折畳
203         }}}
204         ここからレベル1の折畳
206 番号付きの印と番号無しの印を混ぜて使用することもできる。大きな折畳には番号付き
207 の印を使用し、関数中の小さな折畳などには番号無しの印を使うと便利だろう。一例を
208 挙げれば、ファイルの "構造体定義" や "ローカル変数" それから "関数定義" のよう
209 な部分にはレベル1(番号付き)の折畳を使用する。そして一つ一つの定義や関数実装に
210 はレベル2の折畳を使用し、関数内部(例えばあるブロックなど)には番号無しの印を使
211 用する。こうしておけば関数の中で折畳を分割するような変更を行なう時に、印にレベ
212 ルを付け直す必要はなくなる。
214 印は'foldmarker'オプションにより変更できる。Vimユーザ間でファイルを交換できる
215 ようにするためには、このオプションのデフォルトである "{{{,}}}" は変更しないこ
216 とが推奨される。ファイルによってそれがどうしても必要な時(例えば別のエディタで
217 作成した折畳を示す異なる印を含んでいる時や、ファイル内容の制約によりデフォルト
218 の印が問題を起こすため、それを使うことができない場合)にだけ変えるように。
220                                                         *fold-create-marker*
221 印による折畳を作成するのに "zf" コマンドを使用することができる。Vimがユーザに
222 代わって印を挿入する。Vimは'foldmarker'で指定された開始の印と終了の印を追加す
223 る。印は行末に追加される。'commentstring'が空でなければそれが使用される。
224 これは次のような時には正しく働かない:
225 - 既に番号付き折畳が含まれている。Vimはそれをどのように扱えば良いか知らない。
226 - 番号付き折畳の近くで、それらの印が邪魔になる場合。
227 - 行がコメントの中で、'commentstring'が空ではなく、かつ入れ子コメントを使用で
228   きない場合。例えばC言語: /* {{{ */ を既に存在するコメントを消さずにその中に
229   追加するようなこと。コメントの直前か直後に印を設定するか、もしくは手動で印を
230   追加する必要がある。
231 一般的に、既に番号付き折畳が存在する場合には、Vimに印を作成させるのは良いアイ
232 デアではない。
234                                                         *fold-delete-marker*
235 印による折畳を削除するのに "zd" コマンドを使用することができる。Vimがユーザに
236 代わって印を削除する。Vimは'foldmarker'で指定された開始の印と終了の印を検索す
237 る。印の周りにある'commentstring'に適合するテキストは可能な限り削除される。
238 これは次のような時には正しく働かない:
239 - ある行に印が1つ以上含まれていて、そのうち少なくとも1つがレベルを指定している
240   場合。折畳を削除することで期待される効果どうりになるかどうかはチェックされる
241   ことなく、単に初めの折畳が1つ削除される。
242 - 番号付き印で、複数の折畳を同時に開始したり終了するために使用されている場合。
244 ==============================================================================
245 2. 折畳コマンド                                       *fold-commands* *E490*
247 全ての折畳コマンドは "z" で始まっている。ヒント: "z" は紙片を折った様子を横から
248 みた姿に見える。
251 折畳の作成と削除 ~
252                                                         *zf* *E350*
253 zf{motion}  or
254 {Visual}zf      折畳を作成する操作。
255                 'foldmethod'が"manual" か "marker"の時だけ動作する。"manual"の
256                 時には新しい折畳は閉じられる。
257                 'foldenable'がセット(有効化)される。
258                 |fold-create-marker|も参照。
260                                                         *zF*
261 zF              N行を折畳として作成する。"zf"と同じように動作する。
263 :{range}fo[ld]                                          *:fold* *:fo*
264                 {range}で示された範囲を折畳にする。"zf"と同様に動作する。
266                                                         *zd* *E351*
267 zd              カーソルの位置にある折畳を1つ削除する。カーソルが折畳になって
268                 いる行にある場合には、その折畳が削除される。入れ子になった折畳
269                 は1レベル分が削除される。ビジュアルモードでは選択された範囲の
270                 全ての折畳(partially)が削除される。注意: これは期待したよりも
271                 余計に折畳を削除し易く、またアンドゥもできないので注意が必要。
272                 'foldmethod'が"manual" か "marker"の時だけ動作する。
273                 |fold-delete-marker|も参照。
275                                                         *zD*
276 zD              カーソルの位置の折畳を再帰的に削除する。ビジュアルモードでは、
277                 選択された範囲内の入れ子も含め全ての折畳(partially)が削除され
278                 る。
279                 'foldmethod'が"manual" か "marker"の時だけ動作する。
280                 |fold-delete-marker|も参照。
282                                                         *zE* *E352*
283 zE              ウィンドウにある全ての折畳を削除する。
284                 'foldmethod'が"manual" か "marker"の時だけ動作する。
285                 |fold-delete-marker|も参照。
288 折畳を開く・閉じる ~
290 'foldminlines'よりも少ない行数の折畳は常に開いたように表示される。従って以下の
291 コマンドは小さな折畳に関しては異なった働きを持つ。
293                                                         *zo*
294 zo              カーソルの下の折畳を一段階開く。カウントが与えられた場合には、
295                 複数の深さの折畳が開かれる。ビジュアルモードでは、選択された範
296                 囲にある全ての折畳が1レベル開かれる。
298                                                         *zO*
299 zO              カーソルの下の折畳を再帰的に全て開く。カーソルのある行を含まな
300                 いフォールドは変更されない。
301                 ビジュアルモードでは、選択された範囲の全ての折畳が、部分的に選
302                 択されていただけでも全て完全に開かれる。
304                                                         *zc*
305 zc              カーソルの下の折畳を一段階開く。カウントが与えられた場合には、
306                 複数の深さの折畳が閉じられる。ビジュアルモードでは、選択された
307                 範囲にある全ての折畳が1レベル閉じられる。
308                 'foldenable'がセット(有効化)される。
310                                                         *zC*
311 zC              カーソルの下の折畳を再帰的に全て閉じる。カーソルのある行を含まな
312                 いフォールドは変更されない。
313                 ビジュアルモードでは、選択された範囲の全ての折畳が、部分的に選
314                 択されていただけでも全て完全に閉じられる。'foldenable'がセット
315                 (有効化)される。
317                                                         *za*
318 za              折畳が閉じていた場合: それを開く。折畳が入れ子になっている時に
319                 は、"za"を何度も使う必要がある。カウントが与えられた場合には、
320                 複数の閉じられた折畳が開かれる。
321                 折畳が開いていた場合: それを閉じ'foldenable'をセットする。繰り
322                 返し使っても閉じた折畳が開くだけだから、これは1レベル開くだけ
323                 である。カウントが与えられた場合には、複数の折畳が閉じられる
324                 (これは"za"を複数回繰り返した場合の動作と同じではない)。
326                                                         *zA*
327 zA              折畳が閉じていた場合: 再帰的に開く。
328                 折畳が開いていた場合: 再帰的に閉じ'foldenable'をセットする。
330                                                         *zv*
331 zv              カーソル行を表示する: カーソルのある行がちょうど表示されるレベ
332                 ルまで折畳を開く。
334                                                         *zx*
335 zx              折畳を更新する: 手動で行なった折畳の開閉操作をアンドゥする:
336                 'foldlevel'を再適用し、"zv"を行なう: カーソル行を表示する。
338                                                         *zX*
339 zX              手動で行なった折畳の開閉操作をアンドゥする: 'foldlevel'を再適
340                 用する。
342                                                         *zm*
343 zm              折畳をより閉じる: 'foldlevel'を1減少させる。'foldlevel'が既に0
344                 ならば何も起こらない。
345                 'foldenable'がセット(有効化)される。
347                                                         *zM*
348 zM              全ての折畳を閉じる: 'foldlevel'に0を設定する。
349                 'foldenable'がセット(有効化)される。
351                                                         *zr*
352 zr              折畳をより開く: 'foldlevel'を1増加させる。
354                                                         *zR*
355 zR              全ての折畳を開く: 'foldlevel'に最大の折畳レベルを設定する。
357                                                         *:foldo* *:foldopen*
358 :{range}foldo[pen][!]
359                 {range}の範囲の折畳を開く。[!]が付け加わると全ての折畳が開かれ
360                 る。{range}範囲内の全てのテキストを見るのに役立つ。[!]が無い時
361                 は1レベル分の折畳が開かれる。
363                                                         *:foldc* *:foldclose*
364 :{range}foldc[lose][!]
365                 {range}の範囲の折畳を閉じる。[!]が付け加わると全ての折畳が閉じ
366                 られる。{range}範囲内の全てのテキストを隠すのに役立つ。[!]が無
367                 い時は1レベル分の折畳が閉じられる。
369                                                         *zn*
370 zn              Fold none: reset 'foldenable'.  All folds will be open.
371                 折畳しない: 'foldenable'をリセットする。全ての折畳が開かれる。
373                                                         *zN*
374 zN              折畳する: 'foldenable'をセットする。全ての折畳が'foldenable'が
375                 リセットされる以前と同様になる。
377                                                         *zi*
378 zi              'foldenable'を反転する。
381 折畳を超えて移動する ~
382                                                         *[z*
383 [z              現在の開いている折畳の先頭へ移動する。既に先頭にいるのならば、
384                 それを含む外側の折畳の先頭へ移動する。外側の折畳が無い場合は、
385                 コマンドは失敗する。
386                 カウントが与えられた場合には、N回繰り返される。
388                                                         *]z*
389 ]z              現在の開いている折畳の末尾へ移動する。既に末尾にいるのならば、
390                 それを含む外側の折畳の末尾へ移動する。外側の折畳が無い場合は、
391                 コマンドは失敗する。
392                 カウントが与えられた場合には、N回繰り返される。
394                                                         *zj*
395 zj              カーソルより下方の折畳へ移動する。閉じられた折畳が1つの折畳と
396                 して数えられる。
397                 カウントが与えられた場合には、N回繰り返される。
398                 このコマンドは|operator|のように使うことができる。
400                                                         *zk*
401 zk              カーソルより上方の折畳へ移動する。閉じられた折畳が1つの折畳と
402                 して数えられる。
403                 カウントが与えられた場合には、N回繰り返される。
404                 このコマンドは|operator|のように使うことができる。
407 折畳に対してコマンドを実行する ~
409 :[range]foldd[oopen] {cmd}                      *:foldd* *:folddoopen*
410                 閉じた折畳の中以外の全ての行に対して{cmd}を実行する。[range]が
411                 与えられた時は、その範囲だけが対象となる。
412                 コマンドが各行に対して実行される時にはカーソルはその対象となる
413                 行に置かれている。
414                 これは":global"コマンドのように動作する: まず閉じられた折畳に
415                 入っていない全ての行がマークされる。それからマークされた全ての
416                 行に対して{cmd}が実行される。だから{cmd}が折畳に対して変更を加
417                 えても、コマンドの実行には影響が無い(もちろん行が消された時は
418                 除く)。
419                 例: >
420                         :folddoopen s/end/loop_end/ge
421 <               "e"フラグには"end"がマッチしなかった時にエラーメッセージが表示
422                 させない効果がある。
424 :[range]folddoc[losed] {cmd}                    *:folddoc* *:folddoclosed*
425                 Execute {cmd} on all lines that are in a closed fold.
426                 閉じた折畳の中にある全ての行に対して{cmd}を実行する。
427                 その他は":folddoopen"と同じ。
429 ==============================================================================
430 3. 折畳オプション                              *fold-options*
432 色                                                       *fold-colors*
434 閉じられた折畳の色はFoldedグループによって設定される|hl-Folded|。折畳表示カラ
435 ムの色はFoldColumnグループによって設定される|hl-FoldColumn|。
436 色の設定例: >
438         :highlight Folded guibg=grey guifg=blue
439         :highlight FoldColumn guibg=darkgrey guifg=white
442 折畳レベル                                           *fold-foldlevel*
444 'foldlevel'は数を設定するオプションである: 大きな数を設定するとより多くの折畳
445 が開かれる。
446 'foldlevel'が0の時には、全ての折畳が閉じられる。
447 'foldlevel'が正の時には、幾つかの折畳が閉じられる。
448 'foldlevel'が非常に大きい時は、全ての折畳が閉じられる。
449 'foldlevel'は変更された時に適用される。その後に手動で折畳を開いたり閉じたりで
450 きる。
451 値を増やした時には、新しいレベルの値以上の折畳が開かれる。手動で開かれていた折
452 畳は閉じられない。
453 値を減らした時には、新しいレベルの値以上の折畳が閉じられる。手動で閉じられてい
454 た折畳は開かれない。
457 折畳テキスト                                          *fold-foldtext*
459 'foldtext'は式を指定する文字列オプションである。この式は閉じられた折畳を示すテ
460 キストを得るために評価実行される。例: >
462     :set foldtext=v:folddashes.substitute(getline(v:foldstart),'/\\*\\\|\\*/\\\|{{{\\d\\=','','g')
464 これは折畳の最初の1行を、"/*" と "*/" を追加し"{{{"を削除して表示する。多めの
465 バックスラッシュ(\ 記号)はある文字が":set"コマンドに解釈されてしまうのを避ける
466 ために使用されている。これは以下のように関数を定義するとより簡単になる: >
468     :set foldtext=MyFoldText()
469     :function MyFoldText()
470     :  let line = getline(v:foldstart)
471     :  let sub = substitute(line, '/\*\|\*/\|{{{\d\=', '', 'g')
472     :  return v:folddashes . sub
473     :endfunction
475 'foldtext'は|sandbox|環境下で実行評価される。現在のウィンドウはそのラインの属
476 するウィンドウへ設定される。エラーは無視される。
478 省略値は|foldtext()|である。これはほとんどのタイプの折畳に対して妥当なテキスト
479 を返す。それが気に入らないのならば、独自の式を'foldtext'に設定することができ
480 る。その式中では以下の特別なVim変数を使用することができる:
481         v:foldstart     折畳の先頭の行番号
482         v:foldend       折畳の末尾の行番号
483         v:folddashes    折畳レベルを表現したダッシュ(-)記号を含む文字列。
484         v:foldlevel     折畳のレベル
486 結果の文字列中のタブ文字は1つの空白文字に置き換えられ、表示不可能な文字は表示
487 可能な文字に作り変えられる。
489 結果の文字列はウィンドウに合うように切り捨てられ、折り返されることはない。
490 テキストの後ろに余白があれば、'fillchars'で指定された文字で充たされる。
492 ":set"コマンドが解釈してしまう文字: 空白、バックスラッシュ(\ 記号)そしてダブル
493 クォート を使う場合にはバックスラッシュが必要である。 |option-backslash|
496 折畳表示カラム                                         *fold-foldcolumn*
498 'foldcolumn'は、ウィンドウの端に確保される折畳を示すカラムの幅を指定する数。0
499 ならば、折畳表示カラムは確保されない。通常は4から5が一般的。使い物になる最小値
500 は2であるが、1にしてもいくらかの情報を提供する。最大値は12。
502 折畳表示カラムには、開いた折畳の先頭に'-' が続いて '|'が表示される。このカラム
503 は開いた折畳が終了した位置で終了する。入れ子になった折畳では、それを含む折畳の
504 1つ左側に表示される。
506 閉じた折畳は'+'で表示される。
508 全ての折畳を表示できないほど折畳表示カラムが狭いときには、入れ子のレベルが数字
509 で表示される。
511 折畳表示カラムをクリックすることで、マウスにより折畳を開閉することができる:
512 - 閉じた折畳を開くにはその行の'+'をクリックする。
513 - 開いた折畳を閉じるにはそれ以外の非空白文字をクリックする。
516 その他のオプション
518 'foldenable'  'fen':    無効に設定すると全ての折畳が開く。
519 'foldexpr'    'fde':    式("expr')による折畳で使用される。
520 'foldignore'  'fdi':    インデントによる折畳で使用される。
521 'foldmarker'  'fmr':    印による折畳で使用される印を定義する。
522 'foldmethod'  'fdm':    現在の折畳方法の名称。
523 'foldminlines' 'fml':   閉じた状態で表示されるべき折畳の、スクリーン上での最小
524                         行数
525 'foldnestmax' 'fdn':    インデント及び構文折畳での最大入れ子数
526 'foldopen'    'fdo':    閉じている折畳を開くコマンドの種類
527 'foldclose'   'fcl':    カーソルの下ではない折畳をいつ閉じるか。
529 ==============================================================================
530 4. 折畳の振舞                                                *fold-behavior*
532 カーソルを上下に移動させたりスクロールさせると、カーソルは一連の折畳行の先頭へ
533 移動する。カーソルが既に折畳の行にあれば、カーソルは次の折畳ではない行か、閉じ
534 られた折畳へ移動する。
536 折畳の行にカーソルがある時には、カーソルは常に先頭のカラムに表示される。ルー
537 ラーは実際のカーソルの位置を示すが、行が折畳の場合には、そこに実際に表示するこ
538 とはできない。
540 移動コマンドは一連の折畳を空行として扱う。例えば、"w"コマンドは一旦先頭のカラ
541 ムで停止する。
543 挿入モードでは、カーソルのある行は決して折畳にならない。このため何を入力してい
544 るかわからなくなることはない!
546 オペレータを使用したときには、閉じた折畳は全体が含まれる。だから"dl"はカーソル
547 の下の閉じた折畳の全体を削除してしまう。
549 Exコマンドでは、開始位置と終了位置が折畳のそれに常に合わせられてしまう。
550 だから次のコマンド: >
551         :s/foo/bar/g
552 カーソルを閉じた折畳に置いて実行すると、折畳内の全ての行にある"foo" が "bar"へ
553 置き換えられてしまう。
554 これは|:folddoopen|と|:folddoclosed|に対してはあてはまらない。
556 (同一セッション中で)以前に編集したバッファに対しては、最後の折畳設定が再び使用
557 される。手動折畳では以前に定義された折畳が復元される。全ての折畳方法で、手動で
558 開閉した折畳は復元される。同じウィンドウで同じバッファが編集される時は、以前の
559 編集時の値が使用される。そうでなければそのウィンドウで最後に編集されていたバッ
560 ファの値が使用される。
562 ==============================================================================
563  vim:tw=78:ts=8:ft=help:norl: