Skip to content

Commit bd0b169

Browse files
1 parent 3dd05bc commit bd0b169

File tree

4 files changed

+158
-61
lines changed

4 files changed

+158
-61
lines changed

fold.html

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
helpname: 'fold'
44
---
55
<div id='vimCodeElement'>
6-
<a class="Constant" href="fold.html" name="fold.txt">fold.txt</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;<span class="Identifier">Vim バージョン 9.1.</span>&nbsp;&nbsp;Last change: 2023 Mar 24<br>
6+
<a class="Constant" href="fold.html" name="fold.txt">fold.txt</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;<span class="Identifier">Vim バージョン 9.1.</span>&nbsp;&nbsp;Last change: 2024 Dec 17<br>
77
<br>
88
<br>
99
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Identifier">VIMリファレンスマニュアル&nbsp;&nbsp;&nbsp;&nbsp;by Bram Moolenaar</span><br>
@@ -82,18 +82,20 @@
8282
同じ事(「段落」を折り畳みに)をする別の表現:<br>
8383
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;:set foldexpr=getline(v:lnum-1)=~'^\\s*$'&amp;&amp;getline(v:lnum)=~'\\S'?'&gt;1':1</div>
8484
<br>
85-
バックスラッシュ(日本では \ 記号)が &quot;:set&quot; の流儀で、通常とは異なるキャラクタ<br>
86-
(空白文字、バックスラッシュ、ダブルクォート、その他、詳細は<a class="Identifier" href="options.html#option-backslash">option-backslash</a><br>
87-
参照)をエスケープしていることに注意。<br>
85+
<span class="Todo">Note</span>&nbsp;バックスラッシュ (日本では \ 記号) が &quot;:set&quot; の流儀で、通常とは異なるキャ<br>
86+
ラクタ (空白文字、バックスラッシュ、ダブルクォート、その他、詳細は<br>
87+
<a class="Identifier" href="options.html#option-backslash">option-backslash</a>&nbsp;参照) をエスケープしていることに注意。<br>
8888
<br>
8989
最も効果的なのはコンパイル済み関数を引数なしで呼ぶ:<br>
9090
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:set foldexpr=MyFoldLevel()</div>
9191
関数は v:lnum を使用しなくてはいけない。<a class="Identifier" href="vim9.html#expr-option-function">expr-option-function</a>&nbsp;を参照。<br>
9292
<br>
9393
式が評価される際の前提条件は以下の通り:<br>
94+
<br>
9495
- その行について現在のバッファとウィンドウが常に存在している。<br>
9596
- 変数 &quot;v:lnum&quot; には評価対象となる行番号が設定されている。<br>
96-
- 式の結果(戻り値)は以下の形式で折り畳みレベルを示す:<br>
97+
<br>
98+
foldexpr の結果によって、以下のように折り畳みレベルが決定される:<br>
9799
&nbsp;&nbsp;<span class="PreProc">値&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;意味</span><br>
98100
&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 対象行は折り畳みに含まれない<br>
99101
&nbsp;&nbsp;1, 2, ..&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;対象行はこのレベルの折り畳みに含まれる<br>
@@ -107,6 +109,8 @@
107109
&nbsp;&nbsp;&quot;&lt;1&quot;, &quot;&lt;2&quot;, ..&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定したレベルの折り畳みを対象行で終了する<br>
108110
&nbsp;&nbsp;&quot;&gt;1&quot;, &quot;&gt;2&quot;, ..&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定したレベルの折り畳みを対象行から開始する<br>
109111
<br>
112+
結果の値 &quot;=&quot;、&quot;s&quot; および &quot;a&quot; はより高価である。<a class="Identifier" href="fold.html#fold-expr-slow">fold-expr-slow</a>&nbsp;を参照。<br>
113+
<br>
110114
折り畳みは直前の行の折り畳みレベルより高い(低い)行から開始(終了)されるので、折<br>
111115
り畳みの開始 (終了)マーク &quot;&gt;1&quot; (&quot;&lt;1&quot;) は明示的に指定する必要は無い。<br>
112116
<br>
@@ -118,13 +122,6 @@
118122
折り畳みレベルは0に設定される。<a class="Type" href="options.html#'debug'">'debug'</a>&nbsp;オプションに &quot;msg&quot; を設定すれば、エラー<br>
119123
メッセージが表示されるようになるので、デバッグに利用できる。<br>
120124
<br>
121-
<span class="Todo">NOTE</span>: 各行について式評価が実行されるので、この折り畳み方式は非常に動作が遅くな<br>
122-
る可能性がある!<br>
123-
<br>
124-
&quot;=&quot;, &quot;a&quot;, そして &quot;s&quot; は極力避けるようにする。なぜならVimはそれらが使われると、<br>
125-
折り畳みレベルが定義された行が見つかるまで戻って、幾度も検索を行わなければなら<br>
126-
ないからだ。これは動作が遅くなることがある。<br>
127-
<br>
128125
<a class="Type" href="options.html#'foldexpr'">'foldexpr'</a>&nbsp;の式が s: か&nbsp;<a class="Identifier" href="map.html#<SID>">&lt;SID&gt;</a>&nbsp;で始まる場合、スクリプトID(<a class="Identifier" href="userfunc.html#local-function">local-function</a>)<br>
129126
に置き換えられる。例:<br>
130127
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set foldexpr=s:MyFoldExpr()<br>
@@ -149,6 +146,37 @@
149146
折り畳みが適切に更新されない場合がある。その場合は&nbsp;<a class="Identifier" href="fold.html#zx">zx</a>&nbsp;か&nbsp;<a class="Identifier" href="fold.html#zX">zX</a>&nbsp;を使って強制的<br>
150147
に更新すること。<br>
151148
<br>
149+
<span class="Statement">計算コストの最小化</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="fold.html#fold-expr-slow" name="fold-expr-slow">fold-expr-slow</a><br>
150+
<br>
151+
この折り畳み方式は計算コストが高いため、特にすべての行の折り畳みレベルを最初に<br>
152+
計算する必要がある場合、Vim が応答しなくなる可能性がある。<br>
153+
その後、各変更の後に Vim は折り畳みレベルの計算を折り畳みレベルが影響を受けた<br>
154+
行に制限する (他のすべての行の既知の折り畳みレベルを再利用する)。<br>
155+
<br>
156+
したがって、折り畳み式は特定の行の計算に必要な依存行の数を最小限に抑えるように<br>
157+
努める必要がある。例えば、独立した折り畳みレベルが見つかるまで前の行の折り畳み<br>
158+
レベルの評価が必要になるため、&quot;=&quot;、&quot;a&quot; および &quot;s&quot; の戻り値を避けるようにするこ<br>
159+
と。<br>
160+
<br>
161+
これが難しい場合は、次善策として&nbsp;<a class="Identifier" href="eval.html#b:changedtick">b:changedtick</a>&nbsp;でのみ更新されるバッファロー<br>
162+
カル変数 (b:foldlevels) にすべての折り畳みレベルをキャッシュすることが考えられ<br>
163+
る:<br>
164+
&gt;vim<br>
165+
&nbsp;&nbsp;vim9script<br>
166+
&nbsp;&nbsp;def MyFoldFunc(): number<br>
167+
&nbsp;&nbsp;&nbsp;&nbsp;if b:lasttick == b:changedtick<br>
168+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return b:foldlevels[v:lnum - 1]<br>
169+
&nbsp;&nbsp;&nbsp;&nbsp;endif<br>
170+
&nbsp;&nbsp;&nbsp;&nbsp;b:lasttick = b:changedtick<br>
171+
&nbsp;&nbsp;&nbsp;&nbsp;b:foldlevels = []<br>
172+
&nbsp;&nbsp;&nbsp;&nbsp;# compute foldlevels ...<br>
173+
&nbsp;&nbsp;&nbsp;&nbsp;return b:foldlevels[v:lnum - 1]<br>
174+
&nbsp;&nbsp;enddef<br>
175+
&nbsp;&nbsp;set foldexpr=s:MyFoldFunc()<br>
176+
&lt;<br>
177+
上記の例では、プリコンパイルされた引数なしの Vim9 script 関数を使用することで、<br>
178+
さらに高速化された (それでも v:lnum を使用する必要がある)。<br>
179+
<a class="Identifier" href="vim9.html#expr-option-function">expr-option-function</a>&nbsp;を参照。<br>
152180
<br>
153181
<span class="Statement">構文</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="fold.html#fold-syntax" name="fold-syntax">fold-syntax</a><br>
154182
<br>
@@ -451,7 +479,7 @@
451479
<br>
452480
<span class="PreProc">折り畳みに対してコマンドを実行する</span><br>
453481
<br>
454-
:<span class="Special">[range]</span>foldd[oopen]&nbsp;<span class="Special">{cmd}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="fold.html#:foldd" name=":foldd">:foldd</a>&nbsp;<a class="Constant" href="fold.html#:folddo" name=":folddo">:folddo</a>&nbsp;<a class="Constant" href="fold.html#:folddoopen" name=":folddoopen">:folddoopen</a><br>
482+
:<span class="Special">[range]</span>foldd[oopen]&nbsp;<span class="Special">{cmd}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="fold.html#:foldd" name=":foldd">:foldd</a>&nbsp;<a class="Constant" href="fold.html#:folddo" name=":folddo">:folddo</a>&nbsp;<a class="Constant" href="fold.html#:folddoopen" name=":folddoopen">:folddoopen</a><br>
455483
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;閉じた折り畳みの中以外の全ての行に対して<span class="Special">{cmd}</span>を実行する。<br>
456484
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">[range]</span>が与えられた時は、その範囲だけが対象となる。<br>
457485
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;コマンドが各行に対して実行される時にはカーソルはその対象となる<br>

helphelp.html

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
helpname: 'helphelp'
44
---
55
<div id='vimCodeElement'>
6-
<a class="Constant" href="helphelp.html" name="helphelp.txt">helphelp.txt</a>&nbsp;&nbsp;For&nbsp;<span class="Identifier">Vim バージョン 9.1.</span>&nbsp;&nbsp;Last change: 2024 Dec 15<br>
6+
<a class="Constant" href="helphelp.html" name="helphelp.txt">helphelp.txt</a>&nbsp;&nbsp;For&nbsp;<span class="Identifier">Vim バージョン 9.1.</span>&nbsp;&nbsp;Last change: 2024 Dec 26<br>
77
<br>
88
<br>
99
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Identifier">VIMリファレンスマニュアル&nbsp;&nbsp;&nbsp;&nbsp;by Bram Moolenaar</span><br>
@@ -431,17 +431,30 @@
431431
末に書き、小なり記号 (&lt;) をその後ろのブロックの前の最初の非空白文字として書き<br>
432432
ます。テキストが 1 列目から始まっている行があると、Ex コマンドのブロックはその<br>
433433
直前で暗黙的に終了となります。例:<br>
434-
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;function Example_Func()<br>
435-
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Example&quot;<br>
436-
&nbsp;&nbsp;&nbsp;&nbsp;endfunction</div>
437-
<br>
438-
コード例に Vim 構文ハイライトサポートを追加することができます。これは、大なり<br>
439-
記号 (&gt;) の後に &quot;vim&quot; を追加することで可能です (&quot;&gt;vim&quot;)。<br>
440-
例: &gt;vim<br>
441-
&nbsp;&nbsp;&nbsp;&nbsp;function Example_Func()<br>
442-
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Example&quot;<br>
443-
&nbsp;&nbsp;&nbsp;&nbsp;endfunction<br>
434+
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function Example_Func()<br>
435+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Example&quot;<br>
436+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endfunction</div>
437+
<br>
438+
コードブロックの構文ハイライトを有効にするには、大なり記号 (&gt;) の後に言語名の<br>
439+
注釈 (例: &quot;vim&quot;) を配置します。例: &gt;vim<br>
440+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function Example_Func()<br>
441+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Example&quot;<br>
442+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endfunction<br>
444443
&lt;<br>
444+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="helphelp.html#g:help_example_languages" name="g:help_example_languages">g:help_example_languages</a><br>
445+
デフォルトでは、ヘルプファイルは Vim script のハイライトのみをサポートします。<br>
446+
他の言語の構文ハイライトが必要な場合は、<a class="Identifier" href="starting.html#vimrc">vimrc</a>&nbsp;に以下を追加してください:<br>
447+
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:let g:help_example_languages = { &quot;vim&quot;: &quot;vim&quot;, &quot;sh&quot;: &quot;bash&quot; }</div>
448+
キーは注釈マーカー名を表し、値は&nbsp;<a class="Type" href="options.html#'syntax'">'syntax'</a>&nbsp;名です。<br>
449+
<br>
450+
<span class="Todo">Note</span>: &quot;g:help_example_languages&quot; に &quot;vim&quot; を含めない場合、&quot;vim&quot; の構文ハイライ<br>
451+
トは有効になりません。&quot;g:help_example_languages&quot; を空の値に設定すると、埋め込<br>
452+
み言語の構文ハイライトは無効になります。<br>
453+
<br>
454+
さらに&nbsp;<span class="Todo">note</span>: 含まれている&nbsp;<a class="Type" href="options.html#'syntax'">'syntax'</a>&nbsp;スクリプトがそのような趣旨を考慮していない<br>
455+
場合、ヘルプファイルに任意の構文言語を含めることは必ずしも完璧に機能するとは限<br>
456+
りません。<br>
457+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="helphelp.html#help-notation" name="help-notation">help-notation</a><br>
445458
Vim ヘルプファイルでは以下のものがそれぞれハイライトされます:<br>
446459
&nbsp;&nbsp;- 特殊キーの名前。<span class="Special">&lt;PageDown&gt;</span>&nbsp;のような &lt;&gt; 表記で書かれたものと、<span class="Special">CTRL-X</span>&nbsp;のよう<br>
447460
&nbsp;&nbsp;&nbsp;&nbsp;に書かれた制御文字。<br>

0 commit comments

Comments
 (0)