-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathcmdline.jax
1279 lines (1108 loc) · 67.6 KB
/
cmdline.jax
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
*cmdline.txt* For Vim バージョン 9.1. Last change: 2025 Mar 08
VIMリファレンスマニュアル by Bram Moolenaar
*Cmdline-mode* *Command-line-mode*
コマンドラインモード *Cmdline* *Command-line* *mode-cmdline* *:*
コマンドラインモードはExコマンド (":")、検索パターン ("/" と "?")、フィルタコ
マンド ("!") の入力に使われる。
コマンドライン編集の基本は、ユーザーマニュアルの第20章で説明されている
|usr_20.txt|。
1. コマンドラインの編集 |cmdline-editing|
2. コマンドラインの補完 |cmdline-completion|
3. Exコマンドライン |cmdline-lines|
4. Exコマンドラインの範囲 |cmdline-ranges|
5. Exコマンドラインのフラグ |ex-flags|
6. Exコマンド用の特別な文字 |cmdline-special|
7. コマンドラインウィンドウ |cmdline-window|
==============================================================================
1. コマンドラインの編集 *cmdline-editing*
通常、文字はカーソル位置の前に挿入される。コマンドラインでは左右のカーソルキー
で移動ができる。<Insert>キーで挿入と上書を切り替えることができる。
Note キーボードに有効なカーソルキーまたは他の特殊なキーが一切ないときでも、コ
マンド ":cnoremap" を使って他のキーをそれらに割り当てられることに注意。
例えば、tcsh風の編集キーを定義する方法は以下の通り。 *tcsh-style* >
:cnoremap <C-A> <Home>
:cnoremap <C-F> <Right>
:cnoremap <C-B> <Left>
:cnoremap <Esc>b <S-Left>
:cnoremap <Esc>f <S-Right>
(<> 記法を使っている |<>|.これらを全て文字通り打ち込むこと)
*cmdline-too-long*
コマンドラインが長くなりすぎて画面に収まらなくなったときは、画面に入るだけの部
分が表示される。カーソルはこの見える部分しか動けない。そのため、これ以上は編集
できない。
*cmdline-history* *history*
ユーザーの打ち込んだコマンドは、履歴表に記録される。これらの履歴は上下矢印キー
で呼び出せる。実際には5つの履歴表がある。
履歴表:
- ':' コマンド用
- 検索文字列用
- 式 (expression) 用
- インプット行 (関数 |input()| に対して入力されたテキスト) 用
- デバッグモードコマンド用
これらは全く別のものである。それぞれの履歴は同種の入力をしたときだけ使用できる。
オプション 'history' で保存されるコマンド数を設定できる (既定値: 50)。
NOTE:
- 以前と全く同じコマンドを打ち込んだときは、古い方の記録が消される (繰り返され
たコマンドが古いコマンドの履歴を追い出して消すのを避けるため)。
- 打ち込んだコマンドだけが記録される。完全にマッピングから実行されたコマンドは
履歴に残らない。
- 全ての検索パターンは、コマンド "*" や "#" 等によるものも含め、検索用の履歴に
記録される。しかしマッピングからの検索に対しては、最後の検索のみが記録される
(長いマッピングが履歴の内容を捨ててしまうのを避けるため)。
{Vimが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効}
コマンドラインには名前の自動補完機能がある。|cmdline-completion| を参照。
*c_CTRL-V*
CTRL-V 次に打ち込まれた非数字文字を、その通りに挿入する。また最大3個
の数字により、1バイト文字をコードの10進表現に基づいて入力でき
る。打ち込んだ非数字文字と3個の数字にはマッピングは適用されな
い。これは挿入モードと同じ働きをする (|i_CTRL-V| を参照)。
NOTE: MS-Windowsでは CTRL-V はテキストの貼り付けにマッピングさ
れていることが多い。そのときは代わりに CTRL-Q を使うこと。
|modifyOtherKeys| が有効化されているときは、特別なエスケープ
シーケンスは |modifyOtherKeys| が無いときの文字に逆変換される。
ただし、Shift キーも押されているときを除く。
*c_CTRL-Q*
CTRL-Q CTRL-V と同様だが、ターミナルによっては表示制御に使われている。
その場合は使えない。
CTRL-SHIFT-V *c_CTRL-SHIFT-V* *c_CTRL-SHIFT-Q*
CTRL-SHIFT-Q CTRL-V と同じように動作するが、|modifyOtherKeys| が有効な場合
は修飾キー付きのキーのエスケープシーケンスを挿入する。GUI で
は、|key-notation| は簡略化されずに挿入される。
Note: CTRL-SHIFT-V がシステムによって横取りされる場合 (例: テ
キストをペーストする)、代わりに CTRL-SHIFT-Q を使用できること
が多い。ただし、一部の端末 (GNOME 端末など) では、CTRL-SHIFT-Q
は確認なしに端末を終了する。
*c_<Left>* *c_Left*
<Left> カーソルを左へ。wildmenu 補完モード中の動作については、
'wildmenu' を参照。
*c_<Right>* *c_Right*
<Right> カーソルを右へ。wildmenu 補完モード中の動作については、
'wildmenu' を参照。
*c_<S-Left>*
<S-Left> または <C-Left> *c_<C-Left>*
カーソルを 1WORD 分左へ
*c_<S-Right>*
<S-Right> または <C-Right> *c_<C-Right>*
カーソルを 1WORD 分右へ
CTRL-B または <Home> *c_CTRL-B* *c_<Home>* *c_Home*
カーソルをコマンドライン先頭へ
CTRL-E または <End> *c_CTRL-E* *c_<End>* *c_End*
カーソルをコマンドライン末尾へ。wildmenu 補完モード中の動作に
ついては、'wildmenu' を参照。
*c_<LeftMouse>*
<LeftMouse> カーソルをマウスでクリックした所へ移動する
*c_<MiddleMouse>*
<MiddleMouse> クリップボード(X11 ではプライマリ選択)の内容を貼り付ける。これ
は CTRL-R * を使った動作に似ているが、行間に CR は挿入されな
い。
CTRL-H *c_<BS>* *c_CTRL-H* *c_BS*
<BS> カーソル前の文字を削除する (<BS> キーが思い通り働かないときは
|:fixdel| を参照)。
*c_<Del>* *c_Del*
<Del> カーソル下の文字を削除する (行の最後では: カーソル前の文字)
(<Del> キーが思い通り働かないときは |:fixdel| を参照。)
*c_CTRL-W*
CTRL-W カーソルの前の |word| を削除。これは 'iskeyword' オプションに
依存する。
*c_CTRL-U*
CTRL-U 行頭とカーソル位置の間の全ての文字を削除する。Vimの以前のバー
ジョンでは行内の文字を全て削除していた。その動作の方がよいな
ら、次の行をファイル .vimrc に加えること。 >
:cnoremap <C-U> <C-E><C-U>
<
*c_<Insert>* *c_Insert*
<Insert> 挿入/上書の切り替え
{char1} <BS> {char2} または *c_digraph*
CTRL-K {char1} {char2} *c_CTRL-K*
ダイグラフの入力 (|digraphs| を参照)。{char1} が特殊キーのとき
は、そのキーコードは <> 形式で挿入される。
CTRL-R {register} *c_CTRL-R* *c_<C-R>*
番号/名前付きレジスタの内容を挿入する。CTRL-R を打ち込んで次の
文字を打ち込むまでの間、レジスタ名の入力待ちであることを示すた
め '"' が表示される。
テキストは打ち込まれた通りに挿入され、マッピングや短縮入力は無
効である。'wildchar' によるコマンドライン補完も行われない。
またコマンドラインを終了する文字 (<Esc>, <CR>, <NL>, <C-C>) も
文字通り挿入される。<BS> や CTRL-W はコマンドラインを終了でき
るが、コマンドラインに残っている文字が違うモードで解釈されるこ
となるので、意図とは異なる動作になるかもしれない。
特殊なレジスタ:
'"' 無名レジスタ、最後の削除やコピーによるテキスト
を格納する。
'%' カレントファイル名
'#' 代替ファイル名
'*' クリップボードの内容 (X11: プライマリ選択)
'+' クリップボードの内容
'/' 最後の検索パターン
':' 最後のコマンドラインの内容
'-' 最後の小規模な (1行未満の) 削除の内容
'.' 最後に挿入されたテキスト
*c_CTRL-R_=*
'=' Expression レジスタ: 式を入力するよう要求され
る (|expression| を参照)
(Expressionプロンプトでは機能しない。バッファ
変更やカレントウィンドウ変更などは副作用を避け
るため許可されていない)
結果がリスト |List| である場合、各要素が1行と
して挿入される。行の中に改行文字が含まれていて
もよい。
結果が浮動小数点数である場合、自動的に文字列に
変換される。
Note カーソルを移動するだけで何も挿入したくな
い場合は、確実に式が空の文字列に評価されるよう
にする必要がある。例: >
<C-R><C-R>=setcmdpos(2)[-1]<CR>
< レジスタに関しては |registers| を参照。
実装上の詳細: |expression|レジスタを使っているときに
setcmdpos()を呼ぶと結果文字列を挿入する前の位置をセットする。
挿入後の位置をセットするにはCTRL-R CTRL-Rを使うこと。
CTRL-R CTRL-F *c_CTRL-R_CTRL-F* *c_<C-R>_<C-F>*
CTRL-R CTRL-P *c_CTRL-R_CTRL-P* *c_<C-R>_<C-P>*
CTRL-R CTRL-W *c_CTRL-R_CTRL-W* *c_<C-R>_<C-W>*
CTRL-R CTRL-A *c_CTRL-R_CTRL-A* *c_<C-R>_<C-A>*
CTRL-R CTRL-L *c_CTRL-R_CTRL-L* *c_<C-R>_<C-L>*
カーソル下にオブジェクトを挿入する。
CTRL-F カーソル下のファイル名
CTRL-P |gf| と同様に 'path' を使って展開された、カー
ソル下のファイル名
CTRL-W カーソル下の word
CTRL-A カーソル下の WORD; |WORD| を参照
CTRL-L カーソル下の行
'incsearch' がセットされてるとき、現在表示されているマッチの末
尾のカーソル位置が使われる。CTRL-Wではwordの一部がすでに入力さ
れているとき、その部分がもう一度入力されることはない。
{訳注: wordという単語のrの上にカーソルを置き、:wo<C-r><C-w>と
してみると、'incsearch' の値によって結果が違うことがわかる}
*c_CTRL-R_CTRL-R* *c_<C-R>_<C-R>*
*c_CTRL-R_CTRL-O* *c_<C-R>_<C-O>*
CTRL-R CTRL-R {register CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L}
CTRL-R CTRL-O {register CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L}
カーソル下にレジスタの内容またはオブジェクトを挿入。|c_CTRL-R|
と同様の動作だが、テキストを文字通り挿入する。例えば、レジスタ
"a の内容が "xy^Hz" (ここで ^H はバックスペース) のとき、
"CTRL-R a" は "xz" を挿入するのに対し、"CTRL-R CTRL-R a" は
"xy^Hz" を挿入する。
CTRL-\ e {expr} *c_CTRL-\_e*
コマンドラインを {expr} を評価した結果で置き換える。式を入力し
<Enter> を押せば完了する。マッピングする時に使うと便利である。
|expression| も参照のこと。
式の評価を挿入するには |c_CTRL-R_=| を使う。便利な関数に
|getcmdtype()| と |getcmdline()| と |getcmdpos()| がある。
カーソルが行末になければカーソル位置は変更されない。カーソルが
行末にあるときのコマンドライン変更後のカーソル位置は行末であ
る。|setcmdpos()| を使うとカーソル位置を変更できる。
|sandbox| を使うと不要な副作用を避けて式を評価することができ
る。
例: >
:cmap <F7> <C-\>eAppendSome()<CR>
:func AppendSome()
:let cmd = getcmdline() .. " Some()"
:" place the cursor on the )
:call setcmdpos(strlen(cmd))
:return cmd
:endfunc
< これは再帰的には機能しない。つまり、すでに式を編集しているとき
は動作しない。ただしマップの中では再帰的に使える。
*c_CTRL-Y*
CTRL-Y モードレスセレクションでテキストを選択中のとき、テキストをクリッ
プボードにコピーする。 |modeless-selection|
選択中でないときは、CTRL-Y は文字として挿入される。
wildmenu 補完モード中の動作については、'wildmenu' を参照。
CTRL-M or CTRL-J *c_CTRL-M* *c_CTRL-J* *c_<NL>* *c_<CR>* *c_CR*
<CR> または <NL>
入力されたコマンドの実行
CTRL-[ *c_CTRL-[* *c_<Esc>* *c_Esc*
<Esc> 打ち込まれたときにオプション 'cpoptions' にフラグ 'x' が含まれ
ていなければ、コマンドを実行せずにコマンドラインモードを終了す
る。マクロ内で使われたとき、または 'cpoptions' に 'x' が含まれ
ているときは、コマンドラインを実行する。
Note: お使いのキーボードで <Esc> が押しづらい場合は、CTRL-[
を使うよう練習してください。
*c_CTRL-C*
CTRL-C コマンドを実行せずにコマンドラインモードを終了する。
*c_<Up>* *c_Up*
<Up> 古いコマンドラインの内容のうち、先頭部分が現在のコマンドライン
とマッチするものを履歴から呼び出す (下を参照)。wildmenu 補完
モード中の動作については、'wildmenu' を参照。
{Vimが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効}
*c_<Down>* *c_Down*
<Down> さらに最近のコマンドラインの内容のうち、先頭部分が現在のコマン
ドラインとマッチするものを履歴から呼び出す (下を参照)。{訳注:
変な訳ですが、<Up> で行き過ぎたら <Down> で戻るということです}
wildmenu 補完モード中の動作については、'wildmenu' を参照。
{Vimが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効}
*c_<S-Up>* *c_<PageUp>*
<S-Up> または <PageUp>
履歴から古いコマンドラインの内容を呼び出す。
{Vimが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効}
*c_<S-Down>* *c_<PageDown>*
<S-Down> または <PageDown>
履歴からさらに最近のコマンドラインの内容を呼び出す。
{Vimが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効}
CTRL-D コマンドライン補完 (|cmdline-completion|を参照)
オプション 'wildchar' で指定したキー
コマンドライン補完 (|cmdline-completion|を参照)
CTRL-N コマンドライン補完 (|cmdline-completion|を参照)
CTRL-P コマンドライン補完 (|cmdline-completion|を参照)
CTRL-A コマンドライン補完 (|cmdline-completion|を参照)
CTRL-L コマンドライン補完 (|cmdline-completion|を参照)
*c_CTRL-_*
CTRL-_ 1. キーボードのヘブライ語モードと英語モードを切り替える。これ
はコマンドラインのみに適用され、'hkmap' とは関係ない。
コマンドライン、検索や短縮入力等にヘブライ語テキストの項目が必
要とされるときに便利である。Vimが |+rightleft| 機能付きでコン
パイルされ、'allowrevins' がオンのときのみ有効。
|rileft.txt| を参照。
2. キーボードのペルシア語モードと英語モードを切り替える。これ
はコマンドラインのみに適用され、オプション 'fkmap' には関係し
ない。ペルシア語モードでは、文字は普段とは反対の方向に挿入され
る。コマンドライン、検索や短縮入力等にペルシア語テキストの項目
が必要とされるときに便利である。Vimが |+farsi| 機能付きでコン
パイルされたときのみ有効。
|farsi.txt|を参照。
*c_CTRL-^*
CTRL-^ 言語マッピング |:lmap| を切り替えたり、Input Method (IM) を切
り替える。
検索コマンドのためにパターンを入力するとき、オプション
'imsearch' が -1 でなければ VAL は 'imsearch' の値に、そうでな
ければ VAL は 'iminsert' の値になる。
言語マッピングが定義されているとき:
- VAL が 1 のとき (言語マッピングが使われているとき) 0 に変わ
る (言語マッピングは使われなくなる)。
- VAL が 1 でなければ 1 に変わり、言語マッピングが有効になる。
言語マッピングが全く定義されていないとき:
- VAL が 2 のとき (IMが使われているとき) 0 に変わる (IMは使わ
れなくなる)
- VAL が 2 以外のときは 2 に変わり、IMが有効になる。
普通、言語マッピングは、キーボードが生成するのと違う文字を打ち
込むのに使われる。オプション 'keymap' を使えばまとめて設定でき
る。
コマンドラインに入ったときは、コマンドを打ち込むはずなので、言
語マッピングはオフに切り替えられる。CTRL-^ でオンにした後も、
次にコマンドや検索パターンを打ち込むときにはその状態は使われな
い。
*c_CTRL-]*
CTRL-] 文字を挿入することなく短縮入力を展開する。
コマンドラインをEmacsスタイルで編集する方法については |emacs-keys| を参照。
キー <Up> と <Down> は現在のコマンドラインを検索文字列として扱う。次/以前のコ
マンドラインの先頭部分が、この文字列と比較される。マッチした最初の行が新しいコ
マンドラインとなる。これら2つのキーを繰り返し入力すると、同じ文字列が検索に使
われる。例えば、以前の置換コマンドを見つけるためにはこうする: ":s" の後 <Up>
を打ち込むこと。同じことは、<S-Up> を望んだ行が出るまで数回打ち込むことでもで
きる。( Note: シフトキーと矢印キーとの同時押しは、全ての端末で機能するわけでは
ないことに注意)
*:his* *:history*
:his[tory] 最近入力されたコマンドの履歴を表示する。
{Vimが |+cmdline_hist| 機能付きでコンパイルされたときのみ有効}
:his[tory] [{name}] [{first}][, [{last}]]
{name} の種類の履歴内容を一覧表示する。{name} に入るものは:
c[md] または : コマンドラインの履歴
s[earch] または / または ? 検索文字列の履歴
e[xpr] または = Expression レジスタの履歴
i[nput] または @ 入力行の履歴
d[ebug] または > デバッグコマンドの履歴
a[ll] 上記のもの全て
{first} や {last} が指定されたときは、履歴中の指定された範囲の
項目が表示される。これらの数字は次の形式で指定する。
*:history-indexing*
正数は、":history" の一覧表示で最初の列に表示される、項目の絶
対的な番号を表す。この数字は、他の項目が削除されても固定された
ままである。(|E1510| を参照)
負数は項目の相対的な位置を示す。これは最も新しい項目 (番号 -1
を持つ) から後ろ向きに数えたものである。
例:
検索履歴の項目6から12までを一覧表示する。 >
:history / 6,12
<
全履歴の最後から2番目を一覧表示する。 >
:history all -2
<
全履歴の最近の2項目を一覧表示する。 >
:history all -2,
:keepp[atterns] {command} *:keepp* *:keeppatterns*
検索履歴に何も追加せず、また、|:s| か |:&| の場合は最後の置換
パターンまたは置換文字列を変更せずに、{command} を実行する。
==============================================================================
2. コマンドラインの補完 *cmdline-completion*
コマンドラインの編集をしているとき、いくつかのコマンドを使ってカーソル前の単語
を補完できる。補完は以下のものに対して有効である。
- コマンド名: コマンドラインの先頭で使われる。
- |++opt| の値。
- タグ: コマンド ":tag" の後でのみ使われる。
- ファイル名: ファイル名を取るコマンドの後、またはファイル名に対して設定される
オプションの設定時のみ使われる。これはファイル名補完と呼ばれる。
- シェルコマンド名: ":!cmd"、":r !cmd"、":w !cmd" の後で使われる。$PATHが考慮
される。
- オプション: コマンド ":set" の後でのみ使われる。
- マッピング: ":map" や類似コマンドの後でのみ使われる。
- 変数/関数名: ":if", ":call" や類似コマンドの後でのみ使われる。
マッチするヘルプ項目の個数には上限がある(現在のところは 300)。非常に多くのマッ
チがあったとき、遅くなるのを避けるためである。
補完に使えるコマンドは以下の通り。
*c_CTRL-D*
CTRL-D カーソルより前のパターンに一致する名前を一覧表示する。ファイル
名を表示しているときには、ディレクトリは強調表示される (オプショ
ン 'highlight' を参照)。オプション 'suffixes' の値がマッチした
名前は、末尾の方に移動される。
'wildoptions' を "tagfile" にセットすると、マッチするタグを含
むファイル名をリストすることができる。
*c_CTRL-I* *c_wildchar* *c_<Tab>*
オプション 'wildchar' で指定したキー
カーソルより前のパターンに対してマッチの検索が行われる。マッチ
(いくつかあるなら、最初のもの) が、そのパターンの位置に挿入さ
れる。( Note: これはマクロの中では機能しない。なぜなら <Tab>
と <Esc> は大抵 'wildchar' として使われ、またいくつかのマクロ
の中ではこれらが特別な意味を持つからである) このキーを再び入力
すると、複数のマッチがあるときは、次のマッチが挿入される。最後
のマッチの後には、最初のマッチが再び使われる (繰り返し)。
この動作は、オプション 'wildmode' で変更できる。
*c_<S-Tab>*
<S-Tab> 'wildchar' または <Tab> のようだが最後のマッチから始まり前の
マッチに移動する。
あちこちで <S-Tab> は機能しない。
*c_CTRL-N*
CTRL-N 'wildchar' を使ったら複数のマッチがあったとき、その後に使うと
次のマッチが挿入される。それ以外のときには、より最近使ったコマ
ンドラインを履歴から呼び出す。
*c_CTRL-P*
CTRL-P 'wildchar' を使ったら複数のマッチがあったとき、その後に使うと
前のマッチが挿入される。それ以外のときには、より昔に使ったコマ
ンドラインを履歴から呼び出す。
*c_CTRL-A*
CTRL-A カーソルより前のパターンに一致する、全ての名前が挿入される。
*c_CTRL-L*
CTRL-L カーソルより前のパターンに対してマッチの検索が行われる。マッチ
が1個のときは、それがパターンの位置に挿入される。複数個のマッ
チがあったときは、最も長い共通部分がパターンの位置に挿入される。
その結果がパターンより短い場合には、補完は行われない。
*/_CTRL-L*
'incsearch' がセットされていると、"/" や "?" で検索パターンを
入力するとき現在のマッチが表示され、CTRL-Lを押すと現在のマッチ
の末尾から1文字追加する。'ignorecase' と 'smartcase' がセット
されていてコマンドラインに大文字が含まれていないときは、追加さ
れた文字は小文字に変換される。
*c_CTRL-G* */_CTRL-G*
CTRL-G 'incsearch' が設定され "/" や "?" にパターンを入力して現在のマ
ッチが表示されている時に、CTRL-G を押すと次のマッチに移動する(
|search-offset| は考慮しない)。CTRL-T を押すと前のマッチに移動
する。ヒント: 通常のキーボードでは、T は G より上にある。
*c_CTRL-T* */_CTRL-T*
CTRL-T 'incsearch' が設定され "/" や "?" にパターンを入力して現在のマ
ッチが表示されている時に、CTRL-T は前のマッチに移動する(
|search-offset| は考慮しない)。CTRL-G を使うと次のマッチに移動
する。ヒント: 通常のキーボードは、T は G より上にある。
オプション 'wildchar' の既定値は <Tab> である (Vi互換モードの場合は CTRL-E で
ある。以前のバージョンでは <Esc> が使われていた)。パターンがファイル名に対して
適用されるときは標準の |wildcards| が使用できる。
'wildchar' または CTRL-N を繰り返すとマッチしたものの始めから終わりまでを循環
して、最終的には入力されたものに戻る。最初のマッチが望むものでないなら、入力し
たものにまっすぐに戻るために <S-Tab> または CTRL-P を使うことができる。
オプション 'wildmenu' を設定するとコマンドラインのすぐ上にマッチしたものを表示
する。
'wildoptions' オプションは、'wildmenu' にポップアップメニューを使用したり、あ
いまい一致を使用したりするための追加構成を提供する。
オプション 'wildignorecase' を設定するとファイル名の大文字と小文字を区別しない
ようにできる。他のテキスト (例: コマンド名) を補完させる場合は、代わりに
'ignorecase' オプションが使用される (ただし、あいまい一致では常に大文字と小文
字が無視される)。
tcshのautolist補完が好みなら、このマッピングが使える: >
:cnoremap X <C-L><C-D>
(ここで X は使いたいコマンドキー。<C-L> は CTRL-L, <C-D> は CTRL-D のこと)
これは最長のマッチを見つけ、マッチしたファイルを全て一覧表示する。
tcshのautolist補完が好みなら、オプション 'wildmode' を使ってその動作をエミュ
レートできる。例えば、次の設定は autolist=ambiguous という設定を真似る: >
:set wildmode=longest,list
これは、最初の 'wildchar' で最長のマッチを見つけ、次はマッチするファイルを全て
一覧表示する。
*complete-script-local-functions*
ユーザー関数名を補完した時、スクリプトローカル関数では "s:" を先頭に追加する。
*suffixes*
ファイル名補完では、オプション 'suffixes' を使い、ほぼ同じ名前のファイル名に優
先度を設定できる。複数のマッチがあったとき、あるファイルの拡張子が 'suffixes'
の値に含まれていると、そのファイルは無視される。既定値は
".bak,~,.o,.h,.info,.swp" であり、これは ".bak", "~", ".o", ".h", ".info",
".swp" で終わるファイルが無視されることがあるということである。
空の項目(つまり2つの連続するコンマ)は "." を含まないファイル名(つまり拡張子を
持たない)にマッチする。これは "prog" を無視させ、かつ "prog.c" にマッチさせた
いときに便利である。
例:
パターン: 存在するファイル: マッチ: ~
test* test.c test.h test.o test.c
test* test.h test.o test.h and test.o
test* test.i test.h test.c test.i and test.c
2つのドットを持つ拡張子を無視することはできない。
(オプション 'suffixes' による除外が行われた後で) マッチするファイルが複数個あ
るときは、最初のファイル名が挿入される。'wildchar' のキーを2度打ち込んでも補完
されたマッチが同じだったら、マッチが1つしかないことが分かる。他のマッチは、
'wildchar' のキーまたは CTRL-N, CTRL-P を入力することで得られる。それには
'suffixes' に設定された拡張子にマッチするものも含め、全てのファイルが含まれる。
ある拡張子のファイルを完全に無視するにはオプション 'wildignore' を使うこと。
入力されたテキストで終わるファイルにのみマッチさせるには、"$" をつけること。例
として、".c" で終わるファイルにのみマッチさせるには: >
:e *.c$
これは ".cpp" で終わるファイルにはマッチしない。"$" をつけないとマッチする。
xtermで <S-Tab> を CTRL-P として使いたいときは、このコマンドをユーザーの
.cshrc に加えること。 >
xmodmap -e "keysym Tab = Tab Find"
そして次を .vimrc に加えること。 >
cmap <Esc>[1~ <C-P>
< *complete-set-option*
|:set=| を使用してオプションを設定する場合、オプションの古い値は、'=' の後で
'wildchar' のキーを打ち込むことで得られる。例えば、":set dir=" の後で
'wildchar' のキーを打ち込むと、'dir' の現在の値が挿入される。この動作は、ファ
イル名を取るオプションに対するファイル名補完より優先する。
|:set=|、|:set+=|、または |:set^=| を使用する場合、事前に定義された名前または
構文を持つ文字列オプション ('diffopt'、'listchars' など)、または 1 文字のフラ
グのリスト ('shortmess' など) は、'wildchar' を使用する場合に補完に使用できる
値のリストも表示する。
|:set-=| を使用する場合、'diffopt' や 'backupdir' などのコンマ区切りのオプショ
ンは各項目を個別に表示する。'shortmess' のようなフラグリストのオプションでは、
古い値全体と個々のフラグの両方が表示される。それ以外の場合は、古い値全体が補完
されるだけである。
==============================================================================
3. Exコマンドライン *cmdline-lines*
Exコマンドはいくつかの特徴を持っている。
*:quote* *:comment*
行の最初に '"' があると、その行全てが無視される。'"' がコマンドの後にあると、
その行の残りの部分が無視される。これはコメントを加えるために使われる。例: >
:set ai "set 'autoindent' option
シェルコマンド ":!cmd", コマンド ":map" とその他いくつかのコマンド (主に式を期
待するコマンド) にはコメントを付けることができない。これらのコマンドは '"' を
引数の一部として認識するからである:
:argdo
:autocmd
:bufdo
:cexpr (と類似コマンド)
:cdo (と類似コマンド)
:command
:cscope (と類似コマンド)
:debug
:eval
:display
:echo (と類似コマンド)
:elseif
:execute
:folddoopen
:folddoclosed
:for
:grep (と類似コマンド)
:help (と類似コマンド)
:if
:let
:make
:map (と :abbrev を含む類似コマンド)
:menu (と類似コマンド)
:mkspell
:normal
:ownsyntax
:popup
:promptfind (と類似コマンド)
:registers
:return
:sort
:syntax
:tabdo
:tearoff
:vimgrep (と類似コマンド)
:while
:windo
*:bar* *:\bar*
'|' を使ってコマンドを区切ることができる。これにより一行に複数のコマンドを書き
込める。引数に '|' を使いたいときは、'\' を前に置くこと。
以下のコマンドは '|' を引数として認識するため、後に他のコマンドを続けることは
できない。
:argdo
:autocmd
:bufdo
:cdo
:cfdo
:command
:cscope
:debug
:folddoopen
:folddoclosed
:function
:global
:help
:helpfind
:helpgrep
:lcscope
:ldo
:lfdo
:lhelpgrep
:make
:normal
:perl
:perldo
:promptfind
:promptrepl
:pyfile
:python
:registers
:read !
:scscope
:sign
:tabdo
:tcl
:tcldo
:tclfile
:terminal
:vglobal
:windo
:write !
:[range]!
引数 "-bar" なしで定義されたユーザーコマンド |:command|
加えて以下の |Vim9-script| キーワード:
:abstract
:class
:enum
:interface
Note: (Viから継承されたのだが) 次の点は混乱を招きやすいので注意: '|' は ":g"
と共に使うとコマンドの引数に含まれるが、":s" ではコマンドの区切りになる。
どうしても他のコマンドを使いたいときは、コマンド ":execute" を使うこと。
例 (バッファに外部コマンド "ls" の出力を追加し、最初の行にジャンプする): >
:execute 'r !ls' | '[
例外が1点ある: オプション 'cpoptions' にフラグ 'b' が含まれるときは、":map",
":abbr" またはその類似コマンドの引数に '|' を使うとき、'\' の代わりに CTRL-V
を使う必要がある。代わりに "<Bar>" を使うこともできる。|map_bar| も参照。
例: >
:!ls | wc 2つのコマンドの出力を見る
:r !ls | wc その出力をテキストに挿入する
:%g/foo/p|> 一致した全ての行をshiftwidth1個分ずらす
:%s/foo/bar/|> 1つの行をshiftwidth1個分ずらす
:map q 10^V| "q" に "10|" をマッピングする
:map q 10\| map \ l "q" に "10\" を、"\" に "l" をマッピングする
('b' が 'cpoptions' に含まれるとき)
<
<NL> を使って、'|' と同様にコマンドを区切ることができる。<NL> を挿入するには
CTRL-V CTRL-J を使うこと。すると "^@" が表示される。'|' を使う方が好ましいが、
外部コマンドに対しては、'|' が外部コマンドに含まれてしまうため、<NL> を使わな
ければならない。<NL> の特別な作用を避けるためには、前に '\' を置く必要がある。
例: >
:r !date<NL>-join
これは現在の日時をファイルに読み込み、それを前の行につなげる。
Note: '|' の前のコマンドがエラーを起こしたときは、以降のコマンドは実行されない
ことに注意。
Viとの互換性のために、以下の奇妙なコマンドがサポートされている。 >
:| 現在行を表示する (":p" と同様)
:3| 3行目を表示する (":3p" と同様)
:3 3行目に移動する
範囲とコマンド名の間にコロンを入れることができる。このコロンは無視される (これ
はVi互換の動作である)。例: >
:1,$:s/パターン/文字列
ファイル名が入るべき場所に、文字 '%' または '#' が使われているときは、それらは
カレントファイル名、代替ファイル名に展開される ("ファイルの編集" の章を参照
|:_%| |:_#|)。
Amigaでは、引数がファイル名1個になるはずのとき、空白を含むファイル名が使用でき
る。ファイル名末尾の空白は、'\' や CTRL-V でエスケープされていない限り無視され
る。NOTE: コマンド ":next" では、ファイル名の区切りに空白を使うことに注意。ファ
イル名に空白を含むには、エスケープすること。例: >
:next foo\ bar goes\ to school\
こうすると3個のファイル "foo bar", "goes to", "school " の編集を開始する。
コマンドで特別な文字 '"', '|' を使いたいとき、あるいはファイル名に '%', '#' を
使いたいときは、'\' を前に置く。範囲指定やコマンド ":substitute" では '\' は必
要ない。|`=| も参照のこと。
*:_!*
Exコマンドの後に文字 '!' (bang) を置くと、コマンドの動作方法が変わる。'!' はコ
マンドの直後に置かなければならず、間に空白を入れてはならない。空白を挿入すると、
'!' はコマンドの引数と見なされ、違った意味を持つことになる。例: >
:w! name 現在のバッファをファイル "name" に保存し、ファイルがす
でに存在していると上書きする
:w !name 現在のバッファを、標準入力からの入力としてコマンド
"name" に送る
==============================================================================
4. Exコマンドラインの範囲 *cmdline-ranges* *[range]* *E16*
Exコマンドには、その前に行単位の範囲を指定できるものがある。これは [range] と
表記される。それは ',' か ';' で区切られた、1個以上の行指定子から成る。
基本事項はユーザーマニュアルの |10.3| 章で説明されている。
|Vim9| script では継続行の曖昧さを避けるため、範囲にはコロンが接頭辞として必要
となる。例として、"+" は範囲として使えるが式の継続でもある: >
var result = start
+ print
"+" が範囲の場合はコロンが接頭辞として必要になる: >
var result = start
:+ print
<
*:,* *:;*
区切りに ';' を使うと、次の行指定子を解釈する前にカーソル位置がその行に移動
する。',' ではこうならない。例: >
4,/この行/
< 4行目から、カーソルより後の、"この行" がマッチする行まで。 >
5;/あの行/
< 5行目から、5行目より後の、"あの行" がマッチする行まで。
ほとんどのコマンドでは、範囲の既定値はカーソルのある行である。しかしコマンド
":write", ":global" での既定値はファイル全体 (1,$) である。
コマンドに必要以上の行指定子が指定されたときは、先頭の方に指定されたものから順
に除外される。
行番号は以下の方法で指定できる: *:range* *{address}*
{number} 絶対的な行番号 *E1247*
. 現在の行 *:.*
$ ファイルの最終行 *:$*
% 1,$と同じ (ファイル全体) *:%*
't マーク tの位置 (小文字) *:'*
'T マーク Tの位置 (大文字); マーク位置が別ファイルにある
ときには範囲指定には使えない
/{pattern}[/] 次に {pattern} のマッチする行 (下向き) *:/*
以下の |:range-pattern| も参照
?{pattern}[?] 次に {pattern} のマッチする行 (上向き) *:?*
以下の |:range-pattern| も参照
\/ 次に直前の検索パターンのマッチする行 (下向き)
\? 次に直前の検索パターンのマッチする行 (上向き)
\& 次に直前の置換元パターンのマッチする行 (下向き)
*:range-offset*
これらの後に '+' または '-' と数値を付けてもよい (複数も可)。この数は直前の行
番号に加算または減算される。数が省略された場合は 1 が指定されたと見なされる。
もし '+' や '-' の前に何も無い場合は現在行が使われる。
*:range-closed-fold*
コンマの後の行番号が閉じた折り畳みにある場合、折り畳みの最後の行に調整されるた
め、折り畳み全体が含まれる。
数値を追加する場合は、折り畳みの最後の行を調整した後に追加される。これは、これ
らの行が範囲に追加で含まれることを意味する。例えば: >
:3,4+2print
このテキスト上だと:
1 one ~
2 two ~
3 three ~
4 four FOLDED ~
5 five FOLDED ~
6 six ~
7 seven ~
8 eight ~
4 行目と 5 行目が閉じた折り畳みである場合、最終的に 3 行目から 7 行目が表示さ
れる。7 は範囲内の "4" から来ており、閉じた折り畳みの終わりである 5 に調整さ
れ、オフセット 2 が追加される。
減算の例 (あまり役に立たない): >
:2,4-1print
このテキスト上だと:
1 one ~
2 two ~
3 three FOLDED ~
4 four FOLDED ~
5 five FOLDED ~
6 six FOLDED ~
7 seven ~
8 eight ~
3 行目から 6 行目が閉じた折り畳みである場合、最終的に 2 行目から 6 行目が表示
される。6 は範囲内の "4" から来ており、閉じた折り畳みの終わりである 6 に調整さ
れ、1 が減算される。この場合、これはまだ閉じた折り畳みにあり、その折り畳みの最
後の行である 6 が使用される。
*:range-pattern*
{pattern} の後の "/" と "?" は、パターンとその後の項目とを区別するために必要と
なる。
"/" と "?" は別の場所指定の後に付くことがある。すると検索はそこから始まる。';'
との違いは、カーソルが移動しない点である。例: >
/pat1//pat2/ "pat1" を含む行より後の、"pat2" を含む行を見つける。こ
のときカーソルは移動しない。
7;/pat2/ 7行目より後の、"pat2" を含む行を見つける。このときカー
ソルは7行目に留まる。
{number} は 0 からファイルの行数までの数でなければならない。0 (零) を使うと、
コマンドの大半では 1 と解釈される。その数をカウントとして使うコマンド (|:tag|,
|:pop| 等) では確かに 0 として使われる。0 を「先頭行の前」として解釈するコマン
ドもある (|:read|, 検索パターン等)。
例: >
.+3 カーソルの3行下
/that/+1 次行より下の、"that" を含む行
.,$ 現在行からファイル末尾まで
0;/that "that" を含む最初の行 (第1行にもマッチ可能)
1;/that 第1行より下の、"that" を含む行
いくつかのコマンドには、後にカウントを指定できる。そのコマンドは、最後の行指定
子で指定された行 (既定値はカーソルの行) から始まる、そのカウントの行数の範囲に
使われる。カウントを取ることができるのは、範囲指定は取るがファイル名の引数を取
らないコマンドである (ファイル名は数字でもよいから)。カウントは負数にはならな
い。
例: >
:s/x/X/g 5 現在行から始まる5行で 'x' を 'X' に置換
:23d 4 第23, 24, 25, 26行を削除
折り畳みと範囲指定
折り畳みがアクティブなときは、閉じられた折り畳み全体を含むように範囲が切り上げ
/切り下げられる。|fold-behavior| を参照。
逆向きの範囲指定 *E493*
範囲には小さい行番号を先に指定しなければならない。そうでないときは、Vimはその
行番号を入れ替えてよいかを尋ねる。
Backwards range given, OK to swap ~
ただしグローバルコマンド ":g" では尋ねない。
コマンドの前に ":silent" をつけるとこの質問が出ないようになる。そのときは常に
範囲が入れ替えられる。
カウントと範囲指定 *N:*
":" を入力する前にカウントを指定すると、次のように変換される: >
:.,.+(count - 1)
言葉にすると: カーソル位置以降の "count" 行。例: 3行削除する場合: >
3:d<CR> は .,.+2d<CR> に変換される
<
ビジュアルモードと範囲指定
*v_:*
{Visual}: ビジュアルに選択された行を範囲として、コマンドライン入力を始め
る。この範囲指定にはコード `:'<,'>` が使われるので、コマンドラ
イン履歴から同様のコマンド行を呼び出して、別のビジュアル選択行
にコマンドを繰り返すことができる。
:* *:star* *:star-visual-range*
ビジュアルモードがすでに終了しているときは、`:*` を使うことで
簡単にビジュアル選択を範囲指定できる。これには、"*" が 'cpo'
に含まれないことが必要である (|cpo-star| 参照)。もしくは、
`:'<,'>` を使う必要がある。
"*" が 'cpo' に含まれる場合は |:star-compatible| を参照。
==============================================================================
5. Ex コマンドラインのフラグ *ex-flags*
以下のフラグがExコマンドの選択においてサポートされている。
これらはコマンドを実行した後にカーソルが移動する位置の行を表示する:
l |:list|のように表示する
# 行番号をつける
p |:print|のように表示する
これらのフラグは組み合わせることができる。つまり "l#" とすると行番号をつけて
":list" のスタイルで表示する。
==============================================================================
6. Exコマンド用の特別な文字 *cmdline-special*
Note: 以下はコマンドラインの実行における特別な文字である。CTRL-Rコマンドを使う
とこれらの特別な文字列を挿入することができる。例えば "%" は現在のファイル名を
表す。CTRL-R %とするとその場に現在のファイル名を挿入する。|c_CTRL-R|を参照。
Note: Vim script 内で特別な文字をエスケープするには |fnameescape()| を使うとよ
いかもしれない。|`=| も参照のこと。
Exコマンドの、ファイル名が使えるところでは、以下の文字は特別な意味を持つ。これ
らは式や関数 |expand()| 内でも使うことができる。
% カレントファイル名に置き換えられる。 *:_%* *c_%*
# 代替ファイル名に置き換えられる。 *:_#* *c_#*
これはウィンドウごとに記憶される。
#n (ここで n は数) バッファ n のファイル名に置き *:_#0* *:_#n*
換えられる。"#0" は "#" と同じ。 *c_#n*
## 引数リスト内の全てのファイル名を、空白で区切って *:_##* *c_##*
列挙したものに置き換えられる。ファイル名の中の空白には、
全て前に '\' が付けられる。
#<n (n は > 0 の数値)。 *:_#<* *c_#<*
n 番目の old file 名に置き換えられる。
この番号については |:oldfiles| や |v:oldfiles| を参照。
*E809*
{|+eval| と |+viminfo| 機能つきでコンパイルされたときのみ有効}
|Vim9-script| では # がコメントの開始に使われるため、%% を代替ファイル名として
使う:
% カレントファイル名に置き換えられる。
%% 代替ファイル名に置き換えられる。 *:_%%* *c_%%*
%%n (ここで n は数) バッファ n のファイル名に置き *:_%%0* *:_%%n*
換えられる。"%%0" は "%%" と同じ。 *c_%%n*
%%% 引数リスト内の全てのファイル名を、空白で区切っ *:_%%%* *c_%%%#*
て列挙したものに置き換えられる。
%%<n (n は > 0 の数値)。 *:_%%<* *c_%%<*
n 番目の old file 名に置き換えられる。
Note: "#<n" 以外は、ユーザーに打ち込まれた通りのファイル名を与えることに注意
{訳注: 普通、カレントディレクトリのファイルは、パスを付けずにファイル名のみを
打ち込んで編集を始めるはずだが、その形でファイル名が呼び出される}。絶対パスが
必要なとき(違うディレクトリのファイル名を使うとき) は、":p" を付け加える必要が
ある。|filename-modifiers|を参照。
"#<n" は絶対パスを返す。ただしホームディレクトリ以下のファイルに対しては "~/"
で始まる。
コマンドが適切に解釈できるように、スペースの前にはバックスラッシュがつく。しか
しシェルコマンドに対してはこれは行われない。シェルコマンドに対しては、引用符を
使うとよいかもしれない(しかしこれは引用符とワイルドカードを含む文字列に対して
は失敗する): >
:!ls "%"
:r !spell "%"
'%' と '#' の特別な意味を避けるためには、その前に '\' を挿入する。
詳細: これらの文字の特別な意味は、'\' がその前に置かれれば、それがいくつあるか
にかかわらず、常にエスケープ (無効化) される。
打ち込むキー: 結果 ~
# 代替ファイル名
\# #
\\# \#
|`=| も参照のこと。
*E499* *E500*
Note: これらは文字通りに打ち込まれる、これらは特別なキーではない!
*:<cword>* *<cword>*
<cword> カーソル下の word に置き換えられる (|star| と同様)
*:<cWORD>* *<cWORD>*
<cWORD> カーソル下の WORD に置き換えられる (|WORD| を参照)
*:<cexpr>* *<cexpr>*
<cexpr> カーソル下の word に置き換えられるが、C 言語の式を構成する
ためにより多くを含む。例えばカーソルが "ptr->arg" の "arg"
上にある時、結果は "ptr->arg" となる。カーソルが "list[idx]"
の "]" 上にある時、結果は "list[idx]" となる。これは
|v:beval_text| のために使われる。
*:<cfile>* *<cfile>*
<cfile> カーソル下のパス名に置き換えられる (|gf| が使うものと同様)
*:<afile>* *<afile>*
<afile> 自動コマンドの実行時、操作されているバッファのファイル名ま
たは読み書き用のファイル名に置き換えられる。 *E495*
*:<abuf>* *<abuf>*
<abuf> 自動コマンドの実行時、カレントバッファの番号に置き換えられ
る。すべてのイベントに設定されるわけではない。|bufnr()| も
参照すること。":r file" および ":so file" の場合、これはカ
レントバッファであり、読み込まれるファイルはバッファ内にな
い。 *E496*
*:<amatch>* *<amatch>*
<amatch> 自動コマンドの実行時、この自動コマンドが実行されたときのマッ
チに置き換えられる。 *E497*
ファイル名がマッチに使われていないとき <afile> と違う値にな
る (イベント FileType, Syntax, SpellFileMissing 用)。
ファイル名としてマッチした時、フルパスに展開される。
*:<sfile>* *<sfile>*
<sfile> コマンド `:source` の実行時、読み込まれたファイルのファイル
名に置き換えられる。 *E498*
旧来の関数の実行時は、<stack> と同様にコールスタックに置き
換えられる(これは後方互換性のためであり、<stack> か
<script> を使うのが望しい)
Vim9 script では関数で <sfile> を使うとエラーとなる。 *E1245*
Note: スクリプト内で <sfile> が使われていない場合、ファイル
名修飾子は無効になることに注意。
*:<stack>* *<stack>*
<stack> コールスタックに置き換えられ、"function {関数名}[{行番号}]"
が関数行としてまた "script {ファイル名}[{行番号}]" がスクリ
プト行として、そして要素間は ".." が使われる。例:
"function {関数名1}[{行番号}]..{関数名2}[{行番号}]"
コールスタックがない場合は、 *E489* エラーになる。
*:<script>* *<script>*
<script> コマンド `:source` の実行時、読み込まれたファイルのファイル
名に置き換えられる。関数の実行時、定義のあるスクリプトのファ
イル名に置き換えられる。
ファイル名が決定できないときは *E1274* エラーになる。
*:<slnum>* *<slnum>*
<slnum> コマンド `:source` の実行時、行番号に置き換えられる。 *E842*
関数の中では、関数の先頭からの相対的な行番号になる。
*:<sflnum>* *<sflnum>*
<sflnum> スクリプトを実行すると、行番号に置き換えられる。<slnum> と
異なる点は、<sflnum> がどのような状況でもスクリプト行番号で
置き換えられることである。 *E961*
*:<client>* *<client>*
<client> |server2client()| 内の最後に受信したメッセージの {clinetid}
に置き換えられる
*filename-modifiers*
*:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs* *::S*
*%:8* *%:p* *%:.* *%:~* *%:h* *%:t* *%:r* *%:e* *%:s* *%:gs* *%:S*
ファイル名修飾子は "%", "#", "#n", "<cfile>", "<sfile>", "<afile>", "<abuf>"
の後で使うことができる。これらは関数 |fnamemodify()| と使うこともできる。
これらの修飾子は次の順で指定できる。
:p ファイル名を完全パスにする。最初の修飾子でなければならない。