rom*_*ovs 9 vim if-statement autocmd
我想写一些autocmd来检查文件名是否是这个或那个..
我一直在努力:
autocmd VimEnter * if % is "preamble" | Explore | endif
autocmd VimEnter * if %=="preamble" | Explore | endif
autocmd VimEnter * if &filename == "preamble" | Explore | endif
Run Code Online (Sandbox Code Playgroud)
但这一切都不起作用?
我该怎么办?
(这个例子过于简化,请注意我也想要一个else语句).
abc*_*bcd 12
您应该获取当前文件名@%.例如,echo @%会给你文件名,而echo %不会.但是,对于文件上的操作,请使用%,例如source %.
这可能适用于您想要做的事情:
autocmd VimEnter * if @% == 'preamble' | echo 'hello' | else | echo 'world' | endif
Run Code Online (Sandbox Code Playgroud)
原帖中的示例存在两个问题:
或 都%不会&filename返回您使用过的文件名。
查看该expand()函数的帮助,了解如何获取文件名::h expand()
您忽略了 autocmd 中通常指定文件匹配模式的插槽。autocmd 中的第三个槽(*在您的版本中)实际上是匹配文件名的模式。看:h autocmd-patterns。如果您想忽略模式槽,它应该可以正常工作,但如果是这样,您必须解决上面第 1 段中的问题。例如,
autocmd BufRead,BufNewFile * if expand('%') =~ "preamble" | Explore | endif