1 *repeat.txt* For Vim バージョン 7.0. Last change: 2006 Apr 30
4 VIMリファレンスマニュアル by Bram Moolenaar
7 繰り返しコマンド、Vimスクリプトとデバッグ *repeating*
9 繰り返しについてはユーザーマニュアルの26章|usr_26.txt|に紹介があります。
11 1. 単発繰り返し |single-repeat|
12 2. 多重繰り返し |multi-repeat|
13 3. 複雑な繰り返し |complex-repeat|
14 4. Vimスクリプトを使う |using-scripts|
15 5. スクリプトのデバッグ |debug-scripts|
16 6. プロファイリング |profiling|
18 ==============================================================================
19 1. 単発繰り返し *single-repeat*
22 . 最後の変更を繰り返す。変更の回数は[count]で指定した回
23 数で置き換えられる。'cpoptions'に'y'フラグが含まれてる
24 時には、ヤンクコマンドも繰り返す。コマンドラインコマン
27 単純な変更は"."コマンドで繰り返すことができる。回数を指定しなければ、最後の変
28 更の回数が使用される。回数を指定した場合、最後のそれと置き換えられる。最後に行
29 なわれた変更が番号付きレジスタの指定を含んでいた場合、レジスタ番号は増加され
30 る。これをどのように使うかの例は|redo-register|を参照。ビジュアル選択を使用し
31 たコマンドを繰り返す時は、同じ「サイズ」の範囲が使用されることに注意。
35 @: 最後のコマンドラインを[count]回繰り返す。
36 {|+cmdline_hist|が無効にされていると使えない}
39 ==============================================================================
40 2. 多重繰り返し *multi-repeat*
42 *:g* *:global* *E147* *E148*
43 :[range]g[lobal]/{pattern}/[cmd]
44 [range]の範囲で{pattern}にマッチする行に対して、Exコマ
45 ンド[cmd](省略した場合":p")を実行する。
47 :[range]g[lobal]!/{pattern}/[cmd]
48 [range]の範囲で{pattern}にマッチしない行に対して、Exコ
49 マンド[cmd](省略した場合":p")を実行する。
52 :[range]v[global]/{pattern}/[cmd]
55 globalコマンドの動作はまず第1に[range]の行をスキャンしマッチした行すべてに印を
56 つける(複数行にかかるパターンではマッチの最初の行だけが重要である)。
57 次のスキャンでマークされたすべての行の行番号が指定(前置)されて[cmd]が実行され
58 る。行が変更されたり削除された場合そのマークは消滅する。
59 省略した場合の[range]はバッファ全体(1,$)である。コマンドを中断するには"CTRL-C"
60 を使用する。ある行についてエラーメッセージが与えられると、そのラインに対するコ
61 マンドは中断されglobalコマンドはマッチした次の行の処理を続ける。
63 非Exコマンドを繰り返すには":normal"コマンドを使用すれば良い: >
64 :g/pat/normal {commands}
65 {commands}が完全なコマンドとして終了することを確認すること。そうでないとVimは
66 全部のマッチに1つ1つについて、コマンドの残りを期待して貴方の入力を待ち続けるだ
67 ろう。画面は更新されないので、いま何をしているのかわからないだろう。|:normal|
70 undo/redoコマンドはglobalコマンドを一度にundo/redoする。以前の文脈マークだけが
71 一度設定される("''"でグローバルコマンド実行前にカーソルがあった場所に戻ること
74 globalコマンドは最後に使用した検索パターンと、最後に使用した置換パターンの両方
75 を設定する(これはvi互換)。これにより全体に対して文字列置換を行なうのが簡単にな
78 これは総ての"pat"を"PAT"に置き換える。同じことがこれでも可能:
82 コマンドに ":visual" を使った場合は特別である。これはマッチする行へ移動してノー
83 マルモードに入り、|Q| を押して Ex モードへ戻るまでコマンドを実行することができ
84 る。これがマッチする各行に対して繰り返される。これを行っている間は ":global" を
88 ==============================================================================
89 3. 複雑な繰り返し *complex-repeat*
92 q{0-9a-zA-Z"} タイプした文字をレジスタ{0-9a-zA-Z"}にレコーディングす
93 る(大文字は追加する)。レジスタを実行中は'q'コマンドは
94 無効になり、マッピングの中でも無効になる。{Vi: レコー
97 q レコーディングを終了する。(実装のメモ: レコーディング
98 を終了する'q'は、それがマッピングの結果であってもレジ
99 スタに記録されない) {Vi: レコーディングはない}
102 @{0-9a-z".=*} レジスタ{0-9a-z".=*}の内容を[count]回実行する。レジス
103 タ'%'(現在のファイルの名前)と'#' (裏ファイルの名前)は
104 使用できないことに留意。"@="を使用するとプロンプトが表
105 示されコマンドの評価式の入力モードになる。入力すると評
106 価の結果が実行される。|@:|も参照。{Vi: 名前付きレジス
110 @@ 直前の@{0-9a-z":*}を[count]回繰り返す。
112 :[addr]*{0-9a-z".=} *:@* *:star*
113 :[addr]@{0-9a-z".=*} レジスタ{0-9a-z".=*}の内容をExコマンドとして実行する。
114 まず最初にカーソルを[addr]行に設定する(省略した場合現
115 在の行)。レジスタの最終行に<CR>が含まれない場合、
116 'cpoptions'に'e'フラグが含まれていれば自動的に追加され
118 ":*"コマンドは'cpoptions'に'*'フラグが含まれていた場合
119 にだけ認識されることに留意。これは'nocompatible'が使用
121 ":@="には最後に評価された式が使用される。式の評価結果
123 これらのコマンド内ではマッピングは行なわれない。
124 {Vi: 幾つかのバージョンだけ} 将来: 指定された範囲の
125 各々の行にたいしてレジスタの内容が実行されるだろう。
128 :[addr]@: 最後のコマンドラインを繰り返す。まずカーソルを[addr]行
129 に設定する(省略した場合現在の行)。 {Vi にはない}
132 :[addr]@@ 最後の:@{0-9a-z"}を繰り返す。まず最初にカーソルを
133 [addr]行に設定する(省略した場合現在の行)。 {Vi: 幾つか
136 ==============================================================================
137 4. Vimスクリプトを使う *using-scripts*
139 Vimスクリプトの書き方はユーザーマニュアルの41章|usr_41.txt|を参照してくださ
142 *:so* *:source* *load-vim-script*
143 :so[urce] {file} Exコマンドを{file}から読込む。これは":"で始まるコマン
146 自動コマンド |SourcePre| が発生する。
148 :so[urce]! {file} Vimコマンドを{file}から読込む。ノーマルモードでファイ
149 ルの内容をあなたがタイプしたのと同じように実行されま
151 |:global|, |:argdo|, |:windo|, |:bufdo|で使ったとき、
152 ループ中や他のコマンドが続けられたときは、コマンドの実
157 :ru[ntime][!] {file} ..
158 'runtimepath'で示された各ディレクトリの{file}からEx
159 コマンドを読み込みます。ファイルがなくてもエラーには
161 :runtime syntax/c.vim
163 < {file}には空白で区切って複数のファイルを指定できます。
164 指定された{file}は'runtimepath'の最初のディレクト
165 リ、次に二番目のディレクトリ、と検索されます。{file}
166 に空白を含めるにはバックスラッシュを使います(しかし
167 ファイル名に空白を含めるのは望ましくありません。トラ
170 [!]を付けると見つかった全てのファイルを読み込みま
171 す。付けなければ最初に見つかったファイルだけを読み込
174 {file}がワイルドカードを含んでいるとそれは展開されま
176 :runtime! plugin/*.vim
177 < これはVimが起動時にプラグインファイルを読み込むのに
178 使っているものです。次のは似ていますが: >
179 :runtime plugin/*.vim
180 < これは最初に見つかったファイルだけを読み込みます。
182 'verbose'が1以上ならファイルが見つからないときにメッ
184 'verbose'が2以上なら見つかった全てのファイルについて
188 :scripte[ncoding] [encoding] *:scripte* *:scriptencoding* *E167*
189 スクリプトで使われている文字コードを宣言します。
190 それ以降の行は必要なら[encoding]から'encoding'オプ
191 ションの文字コードに変換されます。例: >
192 scriptencoding iso-8859-5
195 [encoding]が空のときは変換はされません。これは文字
196 コードの変換を限定するために使います: >
197 scriptencoding euc-jp
202 < 変換がシステムによって提供されない場合、エラーメッ
205 "ucs-2"や"ucs-4"を使わないでください。スクリプトをそ
206 の文字コードで書くことはできません(NULバイトが含まれ
208 スクリプトの最初にutf-8のBOM(Byte Order Mark : バイ
209 トオーダーマーク)があるとVimはそれを認識します。
210 ":scriptencoding utf-8"と書く必要はありません。
212 Vimが|+multi_byte|付きでコンパイルされていない場合、
216 *:scrip* *:scriptnames*
217 :scrip[tnames] 読み込まれているスクリプトを読み込まれた順番どおりに
218 全て表示します。数字はスクリプトのID(識別子)|<SID>|
220 {Vi にはない} {|+eval|付きでコンパイルしないと使えな
223 *:fini* *:finish* *E168*
224 :fini[sh] スクリプトの読み込みを停止します。スクリプトファイル
225 でのみ使えます。これはファイルの残りを読み込ませない
226 ための手軽な方法です。|:try|を使った後で|:finally|を
227 見つける前に使われると、まず":finally"と|:endtry|の
228 間のコマンドが実行されます。この手続きは入れ子になっ
229 ている全ての":try"に対して適用されます。入れ子の一番
230 外側の":endtry"に達するとスクリプトを停止します。
233 総てのコマンドとコマンドシーケンスは、名前付きレジスタに格納することで繰り返し
234 実行することができる。レジスタにコマンドを格納する方法は2つある:
235 - 記録コマンド"q"を使用する。実際にコマンドをタイプし、実行しながらそれをレジ
236 スタに格納する。今、何が起こっているかを確認できるので簡単である。間違いをし
237 たならば、レジスタの内容をいったんファイルへ書き出("p"ut)して、コマンドシー
238 ケンスを編集して、それからそれを削除して再びレジスタに格納することができる。
239 レジスタに追加することで継続してレコーディングすることができる(大文字を使用
241 - コマンドシーケンスを削除かヤンクしてレジスタに入れる。
243 良く使うコマンドは':map'コマンドでファンクションキーに割当てることができる:
245 別の方法としてコマンドをファイルに記述しておき、それを':source!'コマンドで読込
246 んで実行するという方法もある。長いコマンドシーケンスにとっては便利である。ファ
247 ンクションキーに複雑なコマンドを割当てるために':map'コマンドと組み合わせること
250 ':source'コマンドはファイルから一行ずつExコマンドを読込む。キーボード入力が必
251 要になった場合にはタイプする必要が生じる。':source!'コマンドはスクリプトファイ
252 ルから一字一句読込む。各々のキャラクタはユーザがタイプしたものとして解釈され
255 例: ":!ls"コマンドを実行したとすると|hit-enter|プロンプトが表示される。"!ls"
256 を含むファイルを':source'したならば、自分で<Enter>をタイプする必要がある
257 だろう。しかし':!ls'を含んだファイルを':source!'したならば、<CR>が見つかるまで
258 そのファイルから続く文字が読込まれる。":!ls"がファイルの最終行でない限り、<CR>
261 スクリプトファイルの中で':source[!]'コマンドを使うことも可能なので、階層関係の
262 あるスクリプトファイルを作ることもできる。':source'コマンドは同時に開くことの
263 できるファイル数(だいたい15)と同じだけネスト(入れ子に)することができる。
264 ':source!'コマンドは15段までネストすることができる。
266 読込まれるファイルの中ではファイル名が必要なところに、"<sfile>"という文字列(
267 文字 通りであってスペシャルキーではない)を使うことができる。この文字列は読込ま
268 れた ファイルのファイル名に置き換えられる。例えば、".vimrc"ファイルと同じ場所
269 に"other.vimrc"というファイルがあれば、".vimrc"から次のコマンドでそれを読込む
271 :source <sfile>:h/other.vimrc
273 スクリプトファイル内では端末依存のキーコードは端末非依存の2文字のコードで表現
274 される。これは異なる種類の端末でも同じ方法で依存キーコードを使用できることを意
275 味する。最初のキーコードの文字は0x80つまり128で、画面では"~@"と表される。2つ目
276 のキャラクタは|key-notation|の表にて見ることができる。これらのコードはどれも
277 CTRL-Vに続けて3つの10進コードを叩くことで入力できる。これはtermcapコード<t_xx>
278 に対しては使用できない。これらはマッピングの中だけで使うことができる。
281 MS-DOS, Win32 and OS/2: ":source"で読込まれるファイルは通常、行末に<CR><NL>を
282 持っている。これらは常に働く。もしも行末に<NL>を持つファイルを使っているならば
283 (例えばUNIXで作られたファイル)、'fileformats'が空でかつ先頭行が<CR>で終わって
284 なければ正しく認識される。しかしこれは先頭行が":map <F1> :help^M"(^Mは<CR>)み
285 たいな内容だった場合には失敗する。ファイルの先頭行が<CR>で終わっていてその1行
286 限りの時、先頭行から<CR>が失われてしまうのでエラーメッセージが出るだろう。
288 Mac Classic: ":source"で読み込まれるファイルは通常、行末に<CR>を持っている。
289 これらは常に機能する。もしも行末に<NL>を持つファイルを使っているならば(例えば
290 UNIXで作られたファイル)、'fileformats'が空でかつ先頭行が<CR>で終わってなければ
291 正しく認識される。先頭行に<CR>を持ち<NL>で改行しているファイルを使用しないよう
294 その他のシステムでは、Vimは取込まれた(":source"ed)ファイルの行末は<NL>であるこ
295 とを期待する。これは常に働く。もしも行末が<CR><NL>であるファイル(例えばMS-DOS
296 で作られたファイル)を使っているならば、総ての行が末尾に<CR>を持っていることに
297 なる。これは幾つかのコマンドにとって問題となるだろう(例、マッピング)。自動的に
298 行末記号を検出する機構はない。なぜなら<CR>で終了するマッピングの定義をファイル
299 の先頭に書くことは一般的で、自動検出用の仕組みを作るのが難しいからである。
302 読込まれた(":source"d")Exコマンドスクリプトのファイル内の長い行は、行継続記号
303 "\"(backslash)を次行の先頭に挿入することで分割できる。バックスラッシュの前に空
304 白を挿入することも可能で、これらは無視される。
307 :set comments=sr:/*,mb:*,el:*/,
315 :set comments=sr:/*,mb:*,el:*/,://,b:#,:%,n:>,fb:-
317 バックスラッシュの前に先行する空白文字は全部無視される。しかしながらバックス
318 ラッシュのある行の1つ前の行末には、自由に空白文字を挿入することはできない; 付
319 加的な空白文字が許されるかどうかは、コマンドが分割される位置に依存する。
321 ":append"と":insert"コマンドには1つ問題がある: >
325 バックスラッシュは行継続シンボルに見えるが、コマンドの結果はこのようになる: >
328 これを避けるには、'cpoptions'に'C'フラグを追加することだ: >
336 Note 関数の中でその手のコマンドを実行するには、関数定義の際に'C'フラグを追加す
337 る必要があり、それが実行される際にではない。
347 多くのプログラムは行継続を、継続する行の末尾にバックスラッシュを置くこ
348 とで表現する。その方法をVimで採用してしまうと、Viとの互換性に重大な欠
349 陥ができてしまう。たとえばこのようなViのマッピングを考えるとわかりやす
352 < 従って一般的ではないが行頭のバックスラッシュを採用している。
354 ==============================================================================
355 5. スクリプトのデバッグ *debug-scripts*
357 スクリプトの動作を知るためのコードを追加することができるのは当り前として、
358 Vimはデバッグモードを提供しています。これはスクリプトファイルやユーザーファン
359 クションをステップ実行することやブレークポイントを仕掛けることを可能にします。
361 NOTE: デバッグモードは未完成です。デバッグはVimの動作に副作用をあたえます。全
362 てをデバッグするのには使えません。例えば画面がデバッグメッセージで散乱するとき
366 デバッグモードの代わりに'verbose'オプションが使えます。大きな値を設定するとV
367 imの動作についてより詳細なメッセージを得られます。
370 デバッグモードを開始する *debug-mode*
372 デバッグモードを開始するにはこれらの方法のうちどれかを使います:
373 1. Vimを|-D|引数付きで起動する: >
375 < 最初にvimrcを読み込むところからデバッグを開始します。これはVimの起動時に何
376 が起こっているのかを調査するのに便利です。副作用としてVimは初期化が完了する
377 前に安全のためターミナルモードを切替えます。
378 (WindowsやMacintoshの)GUI専用バージョンではGUIウインドウを開くとすぐにデバ
379 ッグが開始します。これを早めるにはvimrcファイルに":gui"と書いてください。
381 2. ":debug"を前に付けてコマンドを実行します。そのコマンドを実行する間だけデバ
382 ッグできます。特定のスクリプトファイルやユーザー関数をデバッグするのに便利
383 です。オートコマンドから呼び出されるスクリプトや関数にも便利です。
385 :debug edit test.txt.gz
387 3. ブレークポイントをソースファイルやユーザーファンクションに設定します。コ
389 vim -c "breakadd file */explorer.vim"
390 < これはVimを起動して"explorer.vim"の最初の行を読み込むところで停止します。
391 デバッグモード中でもブレークポイントを設定できます。
393 デバッグモード中に実行されるコマンドはそれが実行される前に表示されます。コメン
394 トや空の行、実行されない行はとばされます。行が"|"を使って二つのコマンドを含ん
401 デバッグモードに入ると、通常のExコマンドが使えます。例えば、変数の値を見るに
404 ユーザーファンクション内では、これはローカル変数の"idx"を表示します。"g:"を頭
405 に付けるとグローバル変数の値を表示します: >
407 全てのコマンドは実行中の関数やスクリプトの文脈として実行されます。オプションを
408 設定することもできます。例えば何が起こっているのかを表示するために'verbose'を
409 設定することができます。興味のある部分を実行する前に次のようにするといいでしょ
413 スクリーンの更新を必要とするコマンドは避けるべきです。なぜならデバッグモードを
414 抜けるまでその作用に気付き難いからです。例えば: >
418 デバッグモードのためのコマンドラインヒストリが別に用意されています。
420 関数の行番号はその関数の始まりから数えます。見ている行の番号を数えるのに苦労す
421 る場合はその関数の書かれたファイルを別のVimで開き、その関数の始まりを探しだし
422 、"99j"を実行してください。"99"は実際の行番号に合わせて変えてください。
426 cont 次のブレークポイントまで実行します。
428 quit 異常停止します。これはCTRL-Cを使うことに似ていますが、
429 全てを停止するわけではありません。次のブレークポイント
432 next コマンドを実行しそれが終わるとデバッグモードに戻りま
433 す。ユーザー関数やソースファイルの呼び出し時には呼び
436 step コマンドを実行しそれが終わるとデバッグモードに戻りま
437 す。ユーザー関数やソースファイルの呼び出し時には呼び
440 interrupt CTRL-Cを使うことに似ていますが、次のコマンドを実行する
441 ためにデバッグモードに戻る場所が">quit"と違います。例
442 外割り込みについて|:finally|や|:catch|をテストするのに
445 finish 実行中のスクリプトやユーザー関数を終了し呼び出し元で
449 - 補間はできません。通常のExコマンドのみ補間できます。
450 - 次の一文字に省略すことができます: "c", "n", "s" そして "f"。
451 - <CR>を押すと前回のものを繰り返します。関係ないコマンドを使うとリセットされま
453 - 同じ名前のExコマンドを使うにはコロンを付けてください:
454 ":cont", ":next", ":finish" (省略時も)
458 ----------------------
459 *:breaka* *:breakadd*
460 :breaka[dd] func [lnum] {name}
461 関数にブレークポイントを設定します。例: >
462 :breakadd func Explore
463 < 関数名が妥当かどうか検査しませので、関数定義の前にブレークポイ
466 :breaka[dd] file [lnum] {name}
467 ソースファイルにブレークポイントを設定します。例: >
468 :breakadd file 43 .vimrc
471 カレントファイルのカレント行にブレークポイントを設定します。
473 :breakadd file <cursor-line> <current-file>
474 < Note これはファイルを読み込むときに実行されるコマンドに対して
475 だけ働きます。そのファイル中で定義される関数に対しては働きませ
478 [lnum]はブレークポイントにする行番号です。Vimはその行かそれ以降で停止します。
482 {name} はファイル名や関数名のパターンです。パターンはオートコマンドで使われる
483 ものと同じです。完全に一致しなければなりません(パターンが"^"で始まって"$"で終
484 わるように)。"*"は全ての文字列に一致します。'ignorecase'は使われませんが、大文
485 字と小文字を区別しないために"\c"を使うことができます|/\c|。関数名には()を付け
488 ソースファイル名のパターン検査はファイルのフルネームに対して行われます。例: >
489 breakadd file explorer
491 breakadd file *explorer.vim
492 ".../plugin/explorer.vim"と".../plugin/iexplorer.vim"に一致します。 >
493 breakadd file */explorer.vim
494 ".../plugin/explorer.vim"だけに一致します。
496 関数名のパターン検査は";function"で表示される名前に対して行われます。ローカ
497 ル関数には"<SNR>99_"といったものが前に付くということです。
499 Note 関数はまず読み込まれ、後で実行されます。読み込まれたときに "file" ブレー
500 クポイントがチェックされ、実行されるときに "func" ブレークポイントがチェックさ
504 ----------------------
505 *:breakd* *:breakdel* *E161*
507 ブレークポイント{nr}を削除します。|:breaklist|を使って番号を
513 :breakd[el] func [lnum] {name}
516 :breakd[el] file [lnum] {name}
517 ソースファイル内のブレークポイントを削除します。
520 カレントファイルのカレント行のブレークポイントを削除します。
523 [lnum]が省略されると関数、またはファイルの最初のブレークポイントが削除されま
525 {name}は":breakadd"で使った名前と完全に同じでなければなりません。"eplorer"と
526 "*explorer.vim"、"*explorer*"は違います。
530 --------------------------
531 *:breakl* *:breaklist*
539 *:debugg* *:debuggreedy*
541 デバッグモードのコマンドをユーザーから直接得るのではなく標準入
542 力から読み込みます。スクリプトのテストのときに便利です。
544 echo 'q^Mq' | vim -e -s -c debuggreedy -c 'breakadd file script.vim' -S script.vim
547 ":debuggreedy"を取り消します。それ以降のデバッグモードコマンド
548 を使わず、ユーザーから直接デバッグモードコマンドを受け取ります
551 ==============================================================================
552 6. プロファイリング *profile* *profiling*
554 プロファイリングとは、関数やスクリプトの実行にかかる時間を計測することです。
555 これを行うには |+profile| 機能が必要です。
556 この機能は "huge" 機能つきでコンパイルしたときだけ含まれます。
557 {Vi はプロファイリング機能を持っていない}
559 また、関数 |reltime()| を使っても時間を計測できます。この関数には |+reltime|
560 機能だけが必要です。これは "huge" 以外でもしばしばついてきます。
562 :prof[ile] start {fname} *:prof* *:profile* *E750*
563 プロファイリングを開始し、終了時に出力を {fname} に出力します。
564 {fname} がすでに存在するときは、警告なしに上書きされます。
565 変数 |v:profiling| に 1 が代入されます。
568 ":profile pause" の後にこれを実行すると、プロファイリングを再
571 :prof[ile] func {pattern}
572 パターン {pattern} にマッチする関数をプロファイリングします。
573 {pattern} がどう使われるかは |:debug-name| を参照。
575 :prof[ile][!] file {pattern}
576 パターン {pattern} にマッチするスクリプトファイルをプロファイ
578 {pattern} がどう使われるかは |:debug-name| を参照。
579 このコマンドはスクリプトそのものをプロファイリングするだけで、
580 その中で定義されている関数のプロファイリングは行いません。
581 [!] がつけられたときは、そのスクリプト中で定義されている全ての
582 関数のプロファイリングも行います。しかしスクリプトがこのコマン
585 :profd[el] ... *:profd* *:profdel*
586 指定された引数に対するプロファイリングを停止します。引数につい
589 最初は常に ":profile start fname" コマンドで始めなければなりません。結果のファ
590 イルは Vim が終了するときに書き出されます。次に出力の例を挙げます。説明のため
595 3 Total time: 0.155251 ~
596 4 Self time: 0.002006 ~
598 6 count total (s) self (s) ~
599 7 9 0.000096 for i in range(8) ~
600 8 8 0.153655 0.000410 call Test3() ~
601 9 8 0.000070 endfor ~
602 10 " Ask a question ~
603 11 1 0.001341 echo input("give me an answer: ") ~
605 ヘッダ(1行目から4行目)は関数全体にかかった時間を示しています。"Total" はこの関
606 数を実行している間に経過した時間です。"Self" は "Total" のうち、次のことにかか
613 7行目から11行目は各実行行にかかった時間を示しています。実行されない行はカウン
614 トされません。それゆえ、コメント行は決してカウントされません。
616 Count の桁はその行が何回実行されたかを示します。7行目の "for" コマンドはそれ以
617 下の行と同様に何回も実行されることに注意してください。これは、ループの終わりを
618 検出するためにこの行が何回も実行されるためです。
620 ユーザ入力待ちにかかった時間は一切カウントされません。それゆえ、input() のプロ
621 ンプトに反応するのにどれだけ時間がかかろうとも無関係です。
623 プロファイリングはどこで時間が費やされたかのよい指標を与えてくれますが、多くの
624 原因によりその結果がごまかされてしまう場合があるということを覚えておいてくださ
627 - システム関数 gettimeofday() に依存する時間計測の精度。たとえ時間がマイクロ秒
628 で表示されていたとしても、1/100秒の精度しかないこともあります。
630 - 実経過時間が計測されます。他のプロセスがビジーであると、それが予測できない箇
633 - 1行に複数のコマンドを書いていると、1つの時間しか得られません。ここのコマンド
634 に対して時間を見るにはその行を分割してください。
636 - 各行の時間の総和をとると、たいてい関数全体の時間より小さくなります。各行の間
639 - Vim が終了する前に削除された関数はプロファイリング情報を生成しません。必要な
640 ら変数 |v:profiling| をチェックしてください: >
645 - マルチプロセッサシステム上では、スリープモードが作動したときや、省力のためプ
646 ロセッサの周波数が下がったとき、プロファイリングが奇妙な結果を出すかもしれま
649 vim:tw=78:ts=8:ft=help:norl: