ドキュメントは言います:
<afile> When executing autocommands, is replaced with the file name
for a file read or write.
<abuf> When executing autocommands, is replaced with the currently
effective buffer number (for ":r file" and ":so file" it is
the current buffer, the file being read/sourced is not in a
buffer).
<amatch> When executing autocommands, is replaced with the match for
which this autocommand was executed. It differs from
<afile> only when the file name isn't used to match with
(for FileType, Syntax and SpellFileMissing events).
それでも、私がこれを持っていた場合autocmd
:
autocmd BufNewFile * echo expand('<amatch>') expand('<afile>')
そして開かれた、と言う.zshrc
では/tmp
(cd /tmp; vim .zshrc
)、私が取得します:
/tmp/.zshrc .zshrc
彼らは同じではありません。どうしたの?
%
私が実際にタイプしたものに忠実です。上記に追加私を与えます:vim ./.zshrc
expand('%')
autocmd
/tmp/.zshrc .zshrc ./.zshrc
@ Nobe4はい、それは常にそれが判明する方法です。
—
muru 2015
%
しかし、私が実際に言及したことはすべて忠実です。しかし、%
ここで信頼できるかどうかはわかりません。:/
入力した場合
—
Martin Tournoij、2015
vim /tmp/.zshrc
、それらは同じ文字列です。cwdが/tmp
絶対パスと相対パスである場合、それらは同じ文字列ではありませんが、同じパスです。
@Carpetsmoker私は単純にタイプした
—
ムル
vim .zshrc
エキスパンドでは、:
—
nobe4 '
expand('<amatch>') == expand('%:p')
とexpand('<afile>') == expand('%')
。どう思いますか ?編集:エディションを見ただけで、expand('<afile>') == expand('%')
もう適用されません
<afile>
はファイル名だけであるのに対し、ファイル<amatch>
の完全なパスは違うと思いますか?