[英]autocmd check filename in vim?
我想寫一些autocmd來檢查文件名是否是這個或那個..
我一直在努力:
autocmd VimEnter * if % is "preamble" | Explore | endif
autocmd VimEnter * if %=="preamble" | Explore | endif
autocmd VimEnter * if &filename == "preamble" | Explore | endif
但這一切都不起作用?
我該怎么辦?
(這個例子過於簡化,請注意我也想要一個else語句)。
您應該將當前文件名稱設為@%
。 例如, echo @%
將為您提供文件名,而echo %
則不會。 但是,對於文件上的操作,請使用%
,例如source %
。
這可能適用於您想要做的事情:
autocmd VimEnter * if @% == 'preamble' | echo 'hello' | else | echo 'world' | endif
autocmd BufRead,BufNewFile preamble Explore
原帖中的示例有兩個問題:
%
和&filename
都不會返回您使用過的文件名。
查看expand()
函數的幫助以了解如何獲取文件名:h expand()
您忽略了autocmd中通常指定文件匹配模式的插槽。 autocmd中的第三個插槽(版本中的*
)實際上是一個匹配文件名的模式。 請參閱:h autocmd-patterns
。 如果你想忽略模式槽,它應該可以正常工作,但如果是這樣,你必須解決上面第1段中的問題。 例如,
autocmd BufRead,BufNewFile * if expand('%') =~ "preamble" | Explore | endif
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.