From 7f15e0b8277ac8b101b4f71ce57c1c5442927141 Mon Sep 17 00:00:00 2001
From: nsfisis
- この記事は Qiita から移植してきたものです。 元 URL:https://qiita.com/nsfisis/items/79ab4db8564032de0b25
+ この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/79ab4db8564032de0b25
違いはない。ただのエイリアス。
- Vim の autocmd events には似通った名前のものがいくつかある。大抵は:helpに説明があるが、この記事のタイトルにある2つを含めた以下のイベントには、その違いについて説明がない。
+ Vim の autocmd events には似通った名前のものがいくつかある。大抵は :help に説明があるが、この記事のタイトルにある2つを含めた以下のイベントには、その違いについて説明がない。
BufRead/BufReadPost
BufWrite/BufWritePre
BufAdd/BufCreate
- このうち、BufAdd/BufCreateに関しては、:help BufCreateに
+ このうち、BufAdd/BufCreate に関しては、:help BufCreate に
- +The BufCreate event is for historic reasons.
- とあり、おそらくはBufAddのエイリアスであろうということがわかる。他の2組も同様ではないかと予想されるが、確認のため vim と neovim のソースコードを調査した。
+ とあり、おそらくは BufAdd のエイリアスであろうということがわかる。他の2組も同様ではないかと予想されるが、確認のため vim と neovim のソースコードを調査した。
- +- ソースコードへのリンクvim (調査時点での master branch)neovim (上に同じ) + ソースコードへのリンク vim (調査時点での master branch) neovim (上に同じ)
以下は、autocmd events の名前と内部で使われている整数値とのマッピングを定義している箇所である。見ての通り、上でエイリアスではないかと述べた3組には、それぞれ同じ内部値が使われている。
- +https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L85-L86
- + {"BufAdd", EVENT_BUFADD},
{"BufCreate", EVENT_BUFADD},
-
+
https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L95-L97
- + {"BufRead", EVENT_BUFREADPOST},
{"BufReadCmd", EVENT_BUFREADCMD},
{"BufReadPost", EVENT_BUFREADPOST},
-
+
https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L103-L105
- + {"BufWrite", EVENT_BUFWRITEPRE},
{"BufWritePost", EVENT_BUFWRITEPOST},
{"BufWritePre", EVENT_BUFWRITEPRE},
- neovim の場合でも同様のマッピングが定義されているが、こちらの場合は Lua で書かれている。以下にある通り、はっきりaliasesと書かれている。
+ neovim の場合でも同様のマッピングが定義されているが、こちらの場合は Lua で書かれている。以下にある通り、はっきり aliases と書かれている。
aliases = {
BufCreate = 'BufAdd',
BufRead = 'BufReadPost',
BufWrite = 'BufWritePre',
FileEncoding = 'EncodingChanged',
},
-
+
- ところで、上では取り上げなかったFileEncodingだが、これは:help FileEncodingにしっかりと書いてある。
+ ところで、上では取り上げなかった FileEncoding だが、これは :help FileEncoding にしっかりと書いてある。
*FileEncoding*
FileEncoding Obsolete. It still works and is equivalent
to |EncodingChanged|.
記事タイトルについて言えば、どちらも変わらないので好きな方を使えばよい。あえて言えば、次のようになるだろう。
- +BufAdd/BufCreate
+ BufAdd/BufCreate
BufCreateは歴史的な理由により ("for historic reasons") 存在しているため、新しい方 (BufAdd) を使う
+ → BufCreate は歴史的な理由により ("for historic reasons") 存在しているため、新しい方 (BufAdd) を使う
BufRead/BufReadPost
+ BufRead/BufReadPost
BufReadPreとの対称性のため、あるいはBufWritePostとの対称性のためBufReadPostを使う
+ → BufReadPre との対称性のため、あるいは BufWritePost との対称性のため BufReadPost を使う
BufWrite/BufWritePre
+ BufWrite/BufWritePre
BufWritePostとの対称性のため、あるいはBufReadPreとの対称性のためBufWritePreを使う
+ → BufWritePost との対称性のため、あるいは BufReadPre との対称性のため BufWritePre を使う
FileEncoding/EncodingChanged
+ FileEncoding/EncodingChanged
FileEncodingは`Obsolete'' と明言されているので、`EncodingChangedを使う
+ → FileEncoding は `Obsolete'' と明言されているので、`EncodingChanged を使う
- ところでこの調査で知ったのだが、BufReadとBufWriteは上にある通り発火するタイミングが「後」と「前」で対称性がない。可能ならPre/Post付きのものを使った方が分かりやすいだろう。
+ ところでこの調査で知ったのだが、BufRead と BufWrite は上にある通り発火するタイミングが「後」と「前」で対称性がない。可能なら Pre/Post 付きのものを使った方が分かりやすいだろう。