1
- *quickfix.txt* For Vim バージョン 8.0 . Last change: 2017 Mar 06
1
+ *quickfix.txt* For Vim バージョン 8.1 . Last change: 2018 May 01
2
2
3
3
4
4
VIMリファレンスマニュアル by Bram Moolenaar
@@ -44,6 +44,12 @@ Vim の中でコマンドを実行し結果を得る方法の一つに|:make|コ
44
44
各コンパイラからのエラーメッセージを解釈させるためには、オプション
45
45
'errorformat' をセットする (下の| errorformat | を参照)。
46
46
47
+ *quickfix-ID*
48
+ 各QuickFixリストはQuickFix IDと呼ばれる一意な識別子を持ち、この番号はVimセッ
49
+ ションの中で変わらない。getqflist() 関数はリストに割り当てられた識別子の取得に
50
+ 使用できる。QuickFixリスト番号もある。この番号は、10個以上のリストがQuickFixス
51
+ タックに追加されるたびに変更される可能性がある。
52
+
47
53
*location-list* *E776*
48
54
ロケーションリストはウィンドウローカルなQuickFixリストである。`:vimgrep ` ,
49
55
`:grep ` , `:helpgrep ` , `:make ` などのコマンドはQuickFixリストを作成するが、それ
@@ -57,6 +63,13 @@ Vim の中でコマンドを実行し結果を得る方法の一つに|:make|コ
57
63
ンリストのコピーを得る。ロケーションリストへの参照が全てなくなると、そのロ
58
64
ケーションリストは破棄される。
59
65
66
+ *quickfix-changedtick*
67
+ 全てのQuickFixリストとロケーションリストはそのリストに行われた変更の総数を追跡
68
+ する読み込み専用のchangedtick変数を持つ。QuickFixリストが変更されるたびに、こ
69
+ の総数はインクリメントされる。これは、リストが変更されたときだけアクションを実
70
+ 行することに使用できる。getqflist() および getloclist() 関数は changedtick の
71
+ 現在の値を問い合わせるのに使用できる。changedtick変数を変更することはできない。
72
+
60
73
以下のQuickFixコマンドが利用できる。ロケーションリストコマンドはQuickFixコマン
61
74
ドに似ていて、QuickFixコマンドのプリフィックス 'c' が 'l' に置き換わっている。
62
75
@@ -284,9 +297,8 @@ Vim の中でコマンドを実行し結果を得る方法の一つに|:make|コ
284
297
かの理由で消されてしまう事があり、メッセージ "line changed" がその警告となる。
285
298
一度Vimを終了し再起動した場合マークは失われ正しいエラー位置は把握できない。
286
299
287
- Vimが| +autocmd | 機能つきでビルドされている場合、QuickFixコマンド (':make',
288
- ':grep' など) を実行する前後に2つの自動コマンドが利用できる。詳しくは
289
- | QuickFixCmdPre | と| QuickFixCmdPost | を参照。
300
+ QuickFixコマンド (':make', ':grep' など) を実行する前後に2つの自動コマンドが利
301
+ 用できる。詳しくは | QuickFixCmdPre | と | QuickFixCmdPost | を参照。
290
302
291
303
*QuickFixCmdPost-example*
292
304
'encoding' とロケールが異なる場合、コンパイラのエラーメッセージと Vim 内部のエ
@@ -304,6 +316,50 @@ Vimが|+autocmd|機能つきでビルドされている場合、QuickFixコマ
304
316
au QuickfixCmdPost make call QfMakeConv()
305
317
代わりに 'makeencoding' オプションを使うこともできる。
306
318
319
+ *quickfix-title*
320
+ すべてのQuickFixリストとロケーションリストはタイトルを持つ。デフォルトではタイ
321
+ トルはそのリストを作成したコマンドに設定される。| getqflist() | と| getloclist() |
322
+ 関数はそれぞれQuickFixリストとロケーションリストのタイトルを取得するために使わ
323
+ れる。| setqflist() | と | setloclist() | 関数はそれぞれQuickFixリストとロケーショ
324
+ ンリストのタイトルを変更するために使われる。例: >
325
+ call setqflist([], 'a', {'title' : 'Cmd output'})
326
+ echo getqflist({'title' : 1})
327
+ call setloclist(3, [], 'a', {'title' : 'Cmd output'})
328
+ echo getloclist(3, {'title' : 1})
329
+ <
330
+ *quickfix-size*
331
+ あなたはQuickFixリストとロケーションリストの中の項目の数をそれぞれ
332
+ | getqflist() | と | getloclist() | 関数を使用して取得できる。例: >
333
+ echo getqflist({'size' : 1})
334
+ echo getloclist(5, {'size' : 1})
335
+ <
336
+ *quickfix-context*
337
+ 任意のVimの型はQuickFixリストまたはロケーションリストとのコンテキストとして関
338
+ 連付けることができる。| setqflist() | と | setloclist() | 関数はコンテキストを
339
+ QuickFixとロケーションリストにそれぞれ関連付けることに使用できる。
340
+ | getqflist() | と | getloclist() | 関数はそれぞれQuickFixとロケーションリストのコ
341
+ ンテキストの取得に使用できる。これは複数のQuickFix/ロケーションリストを取り扱
342
+ うVimプラグインにとって便利である。
343
+ 例: >
344
+
345
+ let somectx = {'name' : 'Vim', 'type' : 'Editor'}
346
+ call setqflist([], 'a', {'context' : somectx})
347
+ echo getqflist({'context' : 1})
348
+
349
+ let newctx = ['red', 'green', 'blue']
350
+ call setloclist(2, [], 'a', {'id' : qfid, 'context' : newctx})
351
+ echo getloclist(2, {'id' : qfid, 'context' : 1})
352
+ <
353
+ *quickfix-parse*
354
+ | getqflist() | 関数を使用してQuickFixリストを作成または変更せずに、
355
+ 'errorformat' を使用して行のリストをパースできる。例: >
356
+ echo getqflist({'lines' : ["F1:10:Line10", "F2:20:Line20"]})
357
+ echo getqflist({'lines' : systemlist('grep -Hn quickfix *')})
358
+ これは 'items' キーに行からパースされたQuickFixの項目のリストが含まれている辞
359
+ 書を返す。以下は 'errorformat' オプションを変更せずにカスタム 'errorformat' を
360
+ 使って行をパースする方法を示している。 >
361
+ echo getqflist({'efm' : '%f#%l#%m', 'lines' : ['F1#10#Line']})
362
+ <
307
363
308
364
QuickFixリストやロケーションリスト中のバッファに対してコマンドを実行:
309
365
*:cdo*
@@ -330,8 +386,7 @@ QuickFixリストやロケーションリスト中のバッファに対してコ
330
386
Note: このコマンドを実行している間、Syntax 自動コマン
331
387
ドイベントが 'eventignore' に追加され、無効化される。
332
388
これは各バッファの編集を大幅にスピードアップさせる。
333
- {Vi にはない} {| +listcmds | 機能なしでコンパイルされた
334
- 場合は使用できない}
389
+ {Vi にはない}
335
390
| :bufdo | 、| :tabdo | 、| :argdo | 、| :windo | 、| :ldo | 、
336
391
| :cfdo | 、| :lfdo | も参照。
337
392
@@ -344,8 +399,7 @@ QuickFixリストやロケーションリスト中のバッファに対してコ
344
399
:{cmd}
345
400
etc.
346
401
< それ以外は `:cdo ` の場合と同様である。
347
- {Vi にはない} {| +listcmds | 機能なしでコンパイルされた
348
- 場合は使用できない}
402
+ {Vi にはない}
349
403
350
404
*:ldo*
351
405
:ld[o][!] {cmd} カレントウィンドウのロケーションリスト中の有効な各項
@@ -358,8 +412,7 @@ QuickFixリストやロケーションリスト中のバッファに対してコ
358
412
etc.
359
413
< ロケーションリスト中の有効な項目のみが使われる。
360
414
それ以外は `:cdo ` の場合と同様である。
361
- {Vi にはない} {| +listcmds | 機能なしでコンパイルされた
362
- 場合は使用できない}
415
+ {Vi にはない}
363
416
364
417
*:lfdo*
365
418
:lfdo[!] {cmd} カレントウィンドウのロケーションリスト中の各ファイル
@@ -371,8 +424,7 @@ QuickFixリストやロケーションリスト中のバッファに対してコ
371
424
:{cmd}
372
425
etc.
373
426
< それ以外は `:cdo ` の場合と同様である。
374
- {Vi にはない} {| +listcmds | 機能なしでコンパイルされた
375
- 場合は使用できない}
427
+ {Vi にはない}
376
428
377
429
=============================================================================
378
430
2. エラーウィンドウ *quickfix-window*
@@ -393,7 +445,9 @@ QuickFixリストやロケーションリスト中のバッファに対してコ
393
445
ウィンドウは w:quickfix_title 変数を持っている。この変
394
446
数はクイックフィックスリストを生成したコマンドを示して
395
447
いる。変数の値は 'statusline' が適切に調整されていれば
396
- ステータスラインに表示される。
448
+ ステータスラインに表示される。このバッファがQuickFixコ
449
+ マンドまたは関数により変更されるたびに、
450
+ | b:changedtick | 変数はインクリメントされる。
397
451
398
452
*:lop* *:lopen*
399
453
:lop[en] [height] カレントウィンドウのロケーションリストを表示するウィン
@@ -438,12 +492,17 @@ QuickFixリストやロケーションリスト中のバッファに対してコ
438
492
タスラインをマウスで上へドラッグするなど)。
439
493
440
494
QuickFixウィンドウには各行に1個ずつエラーが表示される。その行数はエラー番号に
441
- 等しい。":.cc" でカーソル下のエラーに移動できる。<Enter> キーを押すのと行をダブ
442
- ルクリックするのは同じ効果がある。そのエラーを含むファイルがQuickFixウィンドウ
443
- の上に開かれる。そのファイルがすでにウィンドウに開かれていたらそのウィンドウが
444
- アクティブになる。そのウィンドウにあるバッファが変更されていて、そのエラーが別
445
- のファイルにある場合はエラーへの移動は失敗する。まず、そのウィンドウが破棄して
446
- もよいバッファを含んでいることを確かめなければならない。
495
+ 等しい。現在の項目はQuickFixLineハイライティングでハイライトされる。あなたはそ
496
+ れをあなたの好みに変更することができる。例: >
497
+ :hi QuickFixLine ctermbg=Yellow guibg=Yellow
498
+
499
+ ":.cc" でカーソル下のエラーに移動できる。
500
+ <Enter> キーを押すのと行をダブルクリックするのは同じ効果がある。そのエラーを含
501
+ むファイルがQuickFixウィンドウの上に開かれる。そのファイルがすでにウィンドウに
502
+ 開かれていたらそのウィンドウがアクティブになる。そのウィンドウにあるバッファが
503
+ 変更されていて、そのエラーが別のファイルにある場合はエラーへの移動は失敗する。
504
+ まず、そのウィンドウが破棄してもよいバッファを含んでいることを確かめなければな
505
+ らない。
447
506
*CTRL-W_<Enter>* *CTRL-W_<CR>*
448
507
CTRL-W <Enter> を使うと、新しいウィンドウを開いてそこでエラーにジャンプできる。
449
508
@@ -490,6 +549,114 @@ Note: QuickFixウィンドウ内で変更を加えてもエラーのリストに
490
549
連付けられていなかった場合、ロケーションリストウィンドウに表示されているロケー
491
550
ションリストが関連づけられる。
492
551
552
+ *quickfix-window-ID*
553
+ | getqflist() | と | getloclist() | 関数を使用して、QuickFixウィンドウとロケーショ
554
+ ンリストウィンドウのウィンドウIDをそれぞれ取得できる(もしあれば)。例: >
555
+ echo getqflist({'winid' : 1}).winid
556
+ echo getloclist(2, {'winid' : 1}).winid
557
+ <
558
+ *getqflist-examples*
559
+ getqflist() 関数と getloclist() 関数は、それぞれQuickFixとロケーションリストの
560
+ さまざまな属性を取得するのに使用できる。これらの関数の使用例を以下に示す:
561
+ >
562
+ " 現在のQuickFixリストのタイトルを取得する
563
+ :echo getqflist({'title' : 0}).title
564
+
565
+ " 現在のQuickFixリストの識別子を取得する
566
+ :let qfid = getqflist({'id' : 0}).id
567
+
568
+ " スタックの中の4番目のQuickFixリストの識別子を取得する
569
+ :let qfid = getqflist({'nr' : 4, 'id' : 0}).id
570
+
571
+ " 特定の識別子を持つQuickFixリストが存在するかどうかを検査する
572
+ :if getqflist({'id' : qfid}).id == qfid
573
+
574
+ " スタックの中の現在のQuickFixリストのインデックスを取得する
575
+ :let qfnum = getqflist({'nr' : 0}).nr
576
+
577
+ " 識別子により指定されたQuickFixリストのitemsを取得する
578
+ :echo getqflist({'id' : qfid, 'items' : 0}).items
579
+
580
+ " idにより指定されたQuickFixリストの中の項目の数を取得する
581
+ :echo getqflist({'id' : qfid, 'size' : 0}).size
582
+
583
+ " スタックの中の3番目のQuickFixリストのcontextを取得する
584
+ :echo getqflist({'nr' : 3, 'context' : 0}).context
585
+
586
+ " スタックの中のQuickFixリストの数を取得する
587
+ :echo getqflist({'nr' : '$'}).nr
588
+
589
+ " 現在のQuickFixリストが変更された回数を取得する
590
+ :echo getqflist({'changedtick' : 0}).changedtick
591
+
592
+ " 識別子により指定されたQuickFixリストの中の現在の項目を取得する
593
+ :echo getqflist({'id' : qfid, 'idx' : 0}).idx
594
+
595
+ " 識別子を使用して全てのQuickFixリスト属性を取得する
596
+ :echo getqflist({'id' : qfid, 'all' : 0})
597
+
598
+ " linesのリストの値からテキストをパースしてQuickFixリストを返す
599
+ :let myList = ["a.java:10:L10", "b.java:20:L20"]
600
+ :echo getqflist({'lines' : myList}).items
601
+
602
+ " カスタム 'efm' を使用してテキストをパースしてQuickFixリストを返す
603
+ :echo getqflist({'lines' : ['a.c#10#Line 10'], 'efm':'%f#%l#%m'}).items
604
+
605
+ " QuickFixリストのウィンドウIDを取得する
606
+ :echo getqflist({'winid' : 0}).winid
607
+
608
+ " 現在のロケーションリストのcontextを取得する
609
+ :echo getloclist(0, {'context' : 0}).context
610
+
611
+ " 3番目のウィンドウのロケーションリストのウィンドウIDを取得する
612
+ :echo getloclist(3, {'winid' : 0}).winid
613
+ <
614
+ *setqflist-examples*
615
+ setqflist() 関数と setloclist() 関数は、それぞれQuickFixとロケーションリストの
616
+ さまざまな属性を設定するのに使用できる。これらの関数の使用例を以下に示す:
617
+ >
618
+ " titleとcontextを持つ空のQuickFixリストを作成する
619
+ :let t = 'Search results'
620
+ :let c = {'cmd' : 'grep'}
621
+ :call setqflist([], ' ', {'title' : t, 'context' : c})
622
+
623
+ " 現在のQuickFixリストのtitleを設定する
624
+ :call setqflist([], 'a', {'title' : 'Mytitle'})
625
+
626
+ " 識別子により指定されたQuickFixリストのcontextを設定する
627
+ :call setqflist([], 'a', {'id' : qfid, 'context' : {'val' : 100}})
628
+
629
+ " コマンド出力から新しいQuickFixリストを作成する
630
+ :call setqflist([], ' ', {'lines' : systemlist('grep -Hn main *.c')})
631
+
632
+ " カスタムefmを使用してテキストをパースして特定のQuickFixリストに追加する
633
+ :call setqflist([], 'a', {'id' : qfid,
634
+ \ 'lines' : ["a.c#10#L10", "b.c#20#L20"], 'efm':'%f#%l#%m'})
635
+
636
+ " 識別子により指定されたQuickFixリストにitemsを追加する
637
+ :let newItems = [{'filename' : 'a.txt', 'lnum' : 10, 'text' : "Apple"},
638
+ \ {'filename' : 'b.txt', 'lnum' : 20, 'text' : "Orange"}]
639
+ :call setqflist([], 'a', {'id' : qfid, 'items' : newItems})
640
+
641
+ " 識別子により指定されたQuickFixリストを空にする
642
+ :call setqflist([], 'r', {'id' : qfid, 'items' : []})
643
+
644
+ " スタックの中の全てのQuickFixリストを開放する
645
+ :call setqflist([], 'f')
646
+
647
+ " 4番目のQuickFixリストのtitleを設定する
648
+ :call setqflist([], 'a', {'nr' : 4, 'title' : 'SomeTitle'})
649
+
650
+ " スタックの最後に新しいQuickFixリストを作成する
651
+ :call setqflist([], ' ', {'nr' : '$',
652
+ \ 'lines' : systemlist('grep -Hn class *.java')})
653
+
654
+ " コマンド出力から新しいロケーションリストを作成する
655
+ :call setloclist(0, [], ' ', {'lines' : systemlist('grep -Hn main *.c')})
656
+
657
+ " 3番目のウィンドウのロケーションリスト項目を置き換える
658
+ :call setloclist(3, [], 'r', {'items' : newItems})
659
+ <
493
660
=============================================================================
494
661
3. 複数のエラーリストを使う *quickfix-error-lists*
495
662
@@ -533,14 +700,21 @@ Note: QuickFixウィンドウ内で変更を加えてもエラーのリストに
533
700
ングしているときに特に便利である。もっと最近のエラーリストを残しておきたい場合
534
701
は初めに ":cnewer 99" を行うこと。
535
702
703
+ QuickFixやロケーションリストのスタック数を取得するには、特別な値 '$' に設定さ
704
+ れたリスト番号でそれぞれ、| getqflist() | 関数と | getloclist() | 関数を使用でき
705
+ る。例: >
706
+ echo getqflist({'nr' : '$'}).nr
707
+ echo getloclist(3, {'nr' : '$'}).nr
708
+ スタック内の現在のリスト番号を取得するには: >
709
+ echo getqflist({'nr' : 0}).nr
710
+ <
536
711
=============================================================================
537
712
4. :makeの使い方 *:make_makeprg*
538
713
539
714
*:mak* *:make*
540
- :mak[e][!] [arguments] 1. vimが| +autocmd | つきでビルドされているならば、
541
- | QuickFixCmdPre | に関連付けられた自動コマンドが全て
715
+ :mak[e][!] [arguments] 1. | QuickFixCmdPre | に関連付けられた自動コマンドが全て
542
716
実行される。
543
- 2, オプション 'autowrite' がonならば変更のあるバッファ
717
+ 2. オプション 'autowrite' がonならば変更のあるバッファ
544
718
は保存される。
545
719
3. 'makeef' からエラーファイルの名前が生成される。
546
720
'makeef' が "##" を含まずかつ既に名前が存在する場合
@@ -550,10 +724,8 @@ Note: QuickFixウィンドウ内で変更を加えてもエラーのリストに
550
724
出力がerrorfileに保存される (Unixではそれも画面に
551
725
echoされる)。
552
726
5. 'errorformat' を使ってerrorfileが読みこまれる。
553
- 6. vimが| +autocmd | つきでビルドされているならば、
554
- | QuickFixCmdPost | に関連付けられた自動コマンドが全て
555
- 実行される。
556
- 後述のサンプルを参照。
727
+ 6. | QuickFixCmdPost | に関連付けられた自動コマンドが全
728
+ て実行される。後述のサンプルを参照。
557
729
7. [!]が与えられていないときは最初のエラーに移動する。
558
730
8. エラーファイルが削除される。
559
731
9. | :cnext | や| :cprevious | などのコマンドでエラー間を移
@@ -1005,6 +1177,7 @@ Note: デフォルトでは大文字と小文字の違いは無視される。
1005
1177
基本要素
1006
1178
1007
1179
%f ファイル名 (文字列を検索)
1180
+ %o モジュール名 (文字列を検索)
1008
1181
%l 行番号 (数字を検索)
1009
1182
%c 桁番号 (エラーの桁を表す数字 (<Tab> 1個は1桁と数える))
1010
1183
%v 画面上の桁番号 (エラーの画面上の桁を表す番号 (<Tab> 1個
@@ -1046,6 +1219,10 @@ nomagic" とされる。"%s" はエラー出力中の行番号がない行を探
1046
1219
きる。シェルコマンド "grep" の出力のように。
1047
1220
パターンがある場合は行番号は使われない。
1048
1221
1222
+ "%o" はQuickfix項目の中のモジュール名を指定する。もし指定があればそれがファイ
1223
+ ル名の代わりにQuickfixエラーウィンドウの中で使われる。モジュール名は結果を表示
1224
+ するためだけに使われ、ファイル名はそのファイルにジャンプするときに使われる。
1225
+
1049
1226
ディレクトリを変更する
1050
1227
1051
1228
次の大文字の変換文字は、特別なフォーマット文字列のタイプを指定する。これらのう
0 commit comments