簡體   English   中英

在vim中autocmd檢查文件名?

[英]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

原帖中的示例有兩個問題:

  1. %&filename都不會返回您使用過的文件名。
    查看expand()函數的幫助以了解如何獲取文件名:h expand()

  2. 您忽略了autocmd中通常指定文件匹配模式的插槽。 autocmd中的第三個插槽(版本中的* )實際上是一個匹配文件名的模式。 請參閱:h autocmd-patterns 如果你想忽略模式槽,它應該可以正常工作,但如果是這樣,你必須解決上面第1段中的問題。 例如,

    autocmd BufRead,BufNewFile * if expand('%') =~ "preamble" | Explore | endif

附加信息使用'@%'和autocmd

某些autocmd事件不支持 @% 命名寄存器來讀取當前文件名。 在這些情況下,最好使用<afile>

expand('<afile>')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM