Skip to content

Commit 7cd4cf4

Browse files
authored
Merge pull request #280 from mnishz/autocmd_for_Vim_8.1
Update autocmd from Vim 8.0 to 8.1
2 parents 4d7d7f1 + 5fbc94e commit 7cd4cf4

File tree

2 files changed

+249
-29
lines changed

2 files changed

+249
-29
lines changed

doc/autocmd.jax

Lines changed: 125 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
*autocmd.txt* For Vim バージョン 8.0. Last change: 2017 Jan 14
1+
*autocmd.txt* For Vim バージョン 8.1. Last change: 2018 May 03
22

33

44
VIMリファレンスマニュアル by Bram Moolenaar
55

66

7-
自動コマンド *autocommand*
7+
自動コマンド *autocommand* *autocommands*
88

99
基本的な説明については、ユーザーマニュアルの |40.3| 章を参照。
1010

@@ -21,7 +21,6 @@
2121
11.自動コマンドを無効にする |autocmd-disable|
2222

2323
{Vi にはこれらのコマンドはない}
24-
{only: |+autocmd| の機能は、コンパイル時に有効にされていなければ使えない。}
2524

2625
==============================================================================
2726
1. はじめに *autocmd-intro*
@@ -33,7 +32,7 @@
3332
ることができる。圧縮ファイルを編集するといったような機能だ (|gzip-example|
3433
参照)。こういった自動コマンドはファイル .vimrc かファイル .exrc に書き込む。
3534

36-
*E203* *E204* *E143* *E855* *E937*
35+
*E203* *E204* *E143* *E855* *E937* *E952*
3736
警告: 自動コマンドは大変強力であるので、思いも寄らない副作用をもたらすことがあ
3837
る。テキストを壊さないように注意しなければならない。
3938
- 捨ててもよいようなファイルのコピーに対して、最初にテストしておくのがよい。例
@@ -56,6 +55,8 @@
5655
{pat} |autocmd-patterns| に一致するファイルで、{event}
5756
のときに自動的に実行するコマンドのリストに、{cmd} を加
5857
える。
58+
Note: クォートは :autocmd への引数と見なされ、コメント
59+
を開始しない。
5960
{cmd} は常に既存の自動コマンドの後に追加されるので、
6061
自動コマンドは指定された順に実行される。 [nested] につ
6162
いては|autocmd-nested| を参照。
@@ -67,7 +68,14 @@ Note: '|' が {cmd} の前にある場合、":autocmd" コマンドの後には
6768
けることができる。これは動作する: >
6869
:augroup mine | au! BufRead | augroup END
6970
しかし、これは定義されたコマンドの一部として "augroup" を見る: >
71+
:augroup mine | au! BufRead * | augroup END
7072
:augroup mine | au BufRead * set tw=70 | augroup END
73+
代わりにグループ名をコマンドの中に置くことができる: >
74+
:au! mine BufRead *
75+
:au mine BufRead * set tw=70
76+
もしくは `:execute` を使用する: >
77+
:augroup mine | exe "au! BufRead *" | augroup END
78+
:augroup mine | exe "au BufRead * set tw=70" | augroup END
7179
7280
Note ":autocmd" の引数の中の特別な文字 (例えば "%" や "<cword>" 等) は、
7381
自動コマンドが定義されたときに展開されるのではなく、イベントの発生が認識され、
@@ -83,7 +91,8 @@ Note ":autocmd" の引数の中の特別な文字 (例えば "%" や "<cword>"
8391
れを避けるには、グループ内に自動コマンドを定義することで、簡単にクリアできる:
8492
>
8593
augroup vimrc
86-
autocmd! " 「全ての」vimrcの自動コマンドを削除する
94+
" 「全ての」vimrcの自動コマンドを削除する
95+
autocmd!
8796
au BufNewFile,BufRead *.html so <sfile>:h/html.vim
8897
augroup END
8998
@@ -140,6 +149,8 @@ Note [group] はあらかじめ定義されていなければならないこと
140149
イトなどを壊すことがある。
141150

142151
:au[tocmd]! [group] 「全ての」自動コマンドを除去する。
152+
Note: クォートは :autocmd への引数と見なされ、コメント
153+
を開始しない。
143154
警告: 通常はグループなしでこれを行うべきではない。プラ
144155
グインや構文の強調表示などが壊れる。
145156

@@ -258,6 +269,7 @@ Vimは以下のイベントを認識する。イベント名が大文字か小
258269
|BufCreate| バッファリストにバッファを追加した直後
259270
|BufDelete| バッファリストからバッファを削除する前
260271
|BufWipeout| 完全にバッファを削除する前
272+
|TerminalOpen| 端末バッファが生成された後
261273

262274
|BufFilePre| カレントバッファの名前を変える前
263275
|BufFilePost| カレントバッファの名前を変えた後
@@ -286,7 +298,8 @@ Vimは以下のイベントを認識する。イベント名が大文字か小
286298
|GUIFailed| GUIの起動が失敗した後
287299
|TermResponse| |t_RV|に対する端末の反応を受け取った後
288300

289-
|QuitPre| `:quit` を使ったとき、本当に閉じるか決定する前
301+
|QuitPre| `:quit` を使ったとき、本当に終了するか決定する前
302+
|ExitPre| Vimを終了するコマンドを使ったとき
290303
|VimLeavePre| Vimを終了する前、viminfoファイルを書き出す前
291304
|VimLeave| Vimを終了する前、viminfoファイルを書き出した後
292305

@@ -295,6 +308,8 @@ Vimは以下のイベントを認識する。イベント名が大文字か小
295308
|FileChangedShellPost| 編集を始めた後にファイルが変更されたことに対処した後
296309
|FileChangedRO| 読み込み専用ファイルに対して最初に変更を加える前
297310

311+
|DirChanged| 作業ディレクトリが変更された後
312+
298313
|ShellCmdPost| シェルコマンドを実行した後
299314
|ShellFilterPost| シェルコマンドでフィルタをかけた後
300315

@@ -324,15 +339,24 @@ Vimは以下のイベントを認識する。イベント名が大文字か小
324339
|CmdwinEnter| コマンドラインウィンドウに入った後
325340
|CmdwinLeave| コマンドラインウィンドウから離れる前
326341

342+
|CmdlineChanged| コマンドラインのテキストに変更が加えられた後
343+
|CmdlineEnter| カーソルがコマンドラインに移動した後
344+
|CmdlineLeave| カーソルがコマンドラインを離れる前
345+
327346
|InsertEnter| 挿入モードを開始したとき
328347
|InsertChange| 挿入や置換モードで<Insert>をタイプしたとき
329348
|InsertLeave| 挿入モードを抜けるとき
330349
|InsertCharPre| 挿入モードで文字が入力されたとき、その文字が挿入される
331350
332351

333352
|TextChanged| ノーマルモードでテキストが変更された後
334-
|TextChangedI| 挿入モードでテキストが変更された後
353+
|TextChangedI| ポップアップメニューが表示されていないときに、挿入モー
354+
ドでテキストが変更された後
355+
|TextChangedP| ポップアップメニューが表示されているときに、挿入モード
356+
でテキストが変更された後
357+
|TextYankPost| テキストがヤンクもしくは削除された後
335358

359+
|ColorSchemePre| カラースキームを読み込む前
336360
|ColorScheme| カラースキームを読み込んだ後
337361

338362
|RemoteReply| Vimサーバーからの返答を受け取ったとき
@@ -455,6 +479,10 @@ BufWinEnter バッファがウィンドウ内に表示された後。これは
455479
まま使われるためである。しかし、カレントバッファ
456480
の名前を指定して ":split" をすると、そのバッファ
457481
を再読み込みすることになるので、発生する。
482+
端末ウィンドウでは発生しない。何故なら端末ジョ
483+
ブモードで開始され、ノーマルモードコマンドは機
484+
能しないからである。代わりに |TerminalOpen|
485+
使用すること。
458486
*BufWinLeave*
459487
BufWinLeave バッファがウィンドウから取り除かれる前。そのバッ
460488
ファが別のウィンドウ内で表示中ならば発生しない。
@@ -505,6 +533,28 @@ CmdUndefined ユーザー定義コマンドが使われたが、定義され
505533
マンドを常に定義するようにしてそのコマンドから
506534
autoload 関数を呼び出すようにするという方法も
507535
ある。|autoload| 参照。
536+
*CmdlineChanged*
537+
CmdlineChanged コマンドラインのテキストに変更が加えられた後。
538+
Vim が固まってしまう可能性があるので、コマンド
539+
ラインで間違いを起こさないよう注意すること。
540+
<afile> はコマンドラインの種類を示す 1 文字に
541+
設定される。
542+
|cmdwin-char|
543+
*CmdlineEnter*
544+
CmdlineEnter ユーザーがコマンドを入力もしくは文字列を検索で
545+
きるコマンドラインにカーソルが移動した後。
546+
<afile> はコマンドラインの種類を示す 1 文字に
547+
設定される。
548+
|cmdwin-char|
549+
*CmdlineLeave*
550+
CmdlineLeave カーソルがコマンドラインを離れる前。CTRL-C
551+
しくは <Esc> の入力によってコマンドラインを放
552+
棄する場合も同様。
553+
コマンドの結果がエラーとなる場合は、コマンドラ
554+
インは引き続き実行中となる。
555+
<afile> はコマンドラインの種類を示す 1 文字に
556+
設定される。
557+
|cmdwin-char|
508558
*CmdwinEnter*
509559
CmdwinEnter Command-lineウィンドウに入った後。この特殊な
510560
ウィンドウに対してのみオプションを設定するのに
@@ -525,6 +575,12 @@ ColorScheme カラースキームを読み込んだ後。 |:colorscheme|
525575
<afile> はこのオプションを設定したファイルの名
526576
前になる。<amatch> はカラースキーム名になる。
527577

578+
*ColorSchemePre*
579+
ColorSchemePre カラースキームを読み込む前。|:colorscheme|
580+
あるカラースキームが読み込まれる前に、それ以前
581+
に別のカラースキームによって追加されたものを取
582+
り除くのに便利。
583+
528584
*CompleteDone*
529585
CompleteDone 挿入モード補完が完了したとき。補完が実行されて
530586
も中止されても発行される。 |ins-completion|
@@ -608,14 +664,33 @@ FileChangedRO 読み込み専用ファイルに最初の変更を加える前
608664
*E881*
609665
行数が変化した場合 undo のための保存は失敗し、
610666
その変更は中止されるだろう。
667+
*DirChanged*
668+
DirChanged |:cd| もしくは |:lcd| コマンドによって、もしく
669+
'autochdir' オプションの結果として作業ディ
670+
レクトリが変更された後。
671+
パターンは以下のようになる:
672+
"window" `:lcd` により発生する
673+
"global" `:cd` により発生する
674+
"auto" 'autochdir' により発生する
675+
"drop" ファイルの編集により発生する
676+
<afile> は新ディレクトリ名に設定される。
677+
*ExitPre*
678+
ExitPre Vim を終了させる `:quit`, `:wq` もしくは
679+
`:qall` を使用したときで、|QuitPre| の直後。不
680+
必要なウィンドウを閉じるのに使うことができる。
681+
自動的に保存されない変更済みのバッファがある場
682+
合には、終了はまだキャンセルされる可能性があ
683+
る。本当に終了するときのためには |VimLeavePre|
684+
を使用すること。
611685
*FileChangedShell*
612686
FileChangedShell ファイルのタイムスタンプが、ファイルの編集が始
613687
まってから変更されたことを発見したとき。
614688
ファイルの属性やファイルサイズが変更されたとき
615689
にも使われる。|timestamp|
616690
大抵はシェルコマンドの実行後に発生する。またコ
617-
マンド |:checktime| の実行後や、Vimが入力フォー
618-
カスを一度失い、再び得たときにも発生する。
691+
マンド |:checktime| の実行後や、gvimが入力
692+
フォーカスを一度失い、再び得たときにも発生す
693+
る。
619694
このイベントは変更されたファイルそれぞれに対し
620695
て発生する。オプション 'autoread' がオンであり、
621696
かつバッファが変更されていないときには使われな
@@ -656,7 +731,8 @@ FileType オプション 'filetype' が設定されたとき。
656731
パターンはファイルタイプに対して照合される。
657732
<afile>'filetype' が設定されたファイルの名
658733
前として使える。<amatch>'filetype' の新し
659-
い値として使える。
734+
い値として使える。他のウィンドウもしくはバッ
735+
ファへの移動は許されていない。
660736
|filetypes| を参照。
661737
*FileWriteCmd*
662738
FileWriteCmd バッファ全体を書き込まない場合の、ファイルに書
@@ -733,7 +809,8 @@ InsertCharPre 挿入モードで文字が入力されたとき、その文字
733809
ま (literally) 挿入される。
734810
テキストを変更することはできない |textlock|
735811
このイベントは 'paste' がオンに設定されている
736-
ときは発行されない。
812+
ときは発行されない。{+eval 機能が有効な場合の
813+
み}
737814
*InsertEnter*
738815
InsertEnter 挿入モード・置換モード・仮想置換モードを開始す
739816
る直前。変数|v:insertmode|がモードを示す。
@@ -804,6 +881,7 @@ QuitPre `:quit`, `:wq`, `:qall` を使ったとき、カレント
804881
定する前に発行される。例えば、普通のウィンドウ
805882
がカレントウィンドウだけだったときに、他の余分
806883
なウィンドウを閉じることができる。
884+
|ExitPre| も参照。
807885
*RemoteReply*
808886
RemoteReply サーバーとして働くVimからの応答を受け取ったとき
809887
|server2client()|。パターンは{serverid}に対し
@@ -875,7 +953,7 @@ SwapExists ファイルの編集を始めようとしてスワップファイ
875953
*E812*
876954
ここでは他のバッファに切り替えること、バッファ
877955
名を変更すること、ディレクトリを変更することは
878-
許可されていない。
956+
許可されていない。{+eval 機能が有効な場合のみ}
879957
*Syntax*
880958
Syntax オプション 'syntax' が設定されたとき。
881959
パターンは構文名に対して照合される。
@@ -900,6 +978,11 @@ TermChanged オプション 'term' を変更した後。色やフォント等
900978
ターミナル依存の設定を更新するために構文定義ファ
901979
イルを再読み込みするのに便利である。読み込まれ
902980
たバッファ全てで発生する。
981+
*TerminalOpen*
982+
TerminalOpen `:terminal` もしくは |term_start()| により端末
983+
バッファが生成された直後。このイベントは、
984+
++hidden オプションによってウィンドウなしに
985+
バッファが生成された場合でも発生する。
903986
*TermResponse*
904987
TermResponse |t_RV| に対する応答をターミナルから受け取った
905988
とき。Vim変数 |v:termresponse| の値を使って、
@@ -922,10 +1005,36 @@ TextChangedI 挿入モードでカレントバッファのテキストが変
9221005
ポップアップメニューが表示されているときは発生
9231006
しない。
9241007
他は TextChanged と同じ。
1008+
*TextChangedP*
1009+
TextChangedP 挿入モードでカレントバッファのテキストに変更が
1010+
加えられた後で、ポップアップメニューが表示され
1011+
ている場合に限られる。そうでなければ
1012+
TextChanged と同じ。
1013+
*TextYankPost*
1014+
TextYankPost カレントバッファでテキストがヤンクもしくは削除
1015+
された後。|v:event| の以下の値は、この autocmd
1016+
を発生させた操作を特定するのに使用できる:
1017+
operator オペレーションが実行された。
1018+
regcontents 行のリストとしてレジスタに格納
1019+
されたテキスト、例: >
1020+
getreg(r, 1, 1)
1021+
< regname レジスタの名前、もしくは無名レ
1022+
ジスタの場合は空文字列。
1023+
regtype レジスタの種類、|getregtype()|
1024+
を参照。
1025+
|quote_| が使用された場合、もしくは再帰的に呼
1026+
び出された場合には発生しない。
1027+
バッファのテキストを変更することは許されていな
1028+
い、|textlock| を参照。
1029+
{+eval 機能付きでコンパイルされた場合のみ有効}
9251030
*User*
9261031
User 自動的に実行されることはない。コマンド
9271032
":doautocmd" によってのみ実行される
9281033
自動コマンドのために使用される。
1034+
Note: 該当する自動コマンドが存在しないときに
1035+
`:doautocmd User MyEvent` が使用された場合、エ
1036+
ラーが発生する。これを回避したい場合、ダミーの
1037+
自動コマンドを自身で定義すること。
9291038
*UserGettingBored*
9301039
UserGettingBored ユーザーが同じキーを 42 回押したとき。
9311040
ただの冗談! :-)
@@ -969,9 +1078,10 @@ WinEnter 別のウィンドウに入った後。Vimの開始直後、1個目
9691078
ウの高さを設定するのに便利である。
9701079
そのウィンドウで他のバッファを開いていたときは、
9711080
イベント WinEnter の後に BufEnter が発生する。
972-
Note: ":split fname" を実行したとき、WinEnter
973-
が発生するのは、ウィンドウ分割の後だがファイル
974-
"fname" が読み込まれる前の時点である。
1081+
Note: split と tabpage コマンドに関しては、
1082+
WinEnter イベントが発生するのは分割もしくはタ
1083+
ブコマンドの後だが、ファイルが読み込まれる前で
1084+
ある。
9751085
*WinLeave*
9761086
WinLeave ウィンドウを離れる前。次に入るウィンドウで他の
9771087
バッファを開いていたときは、イベント WinLeave

0 commit comments

Comments
 (0)