autocmd проверить имя файла в vim?

Я хочу написать некоторые autocmd, которые проверяют, является ли имя файла тем или иным..

Я старалась:

autocmd VimEnter * if % is "preamble" | Explore | endif
autocmd VimEnter * if %=="preamble" | Explore | endif
autocmd VimEnter * if &filename == "preamble" | Explore | endif

но ничего из этого не работает?

Что делать?

(этот пример чрезмерно упрощен, обратите внимание, что я также хотел бы иметь оператор else).

4 ответов


вы должны получить текущее имя файла @%. Например, echo @% даст вам имя файла, тогда как echo % не будет. Однако для действий с файлом используйте %, например,source %.

это, вероятно, должно работать для того, что вы хотите сделать:

autocmd VimEnter * if @% == 'preamble' | echo 'hello' | else | echo 'world' | endif

autocmd BufRead,BufNewFile preamble Explore

есть две проблемы с примерами в исходном посте:

  1. ни %, ни &filename вернет имя файла, как вы их использовали.
    Посмотри в справке


дополнительная информация с помощью '@%' с autocmd

некоторые autocmd событий не поддерживают на @% именем Register для чтения текущего имени файла. В этих случаях лучше использовать :

expand('<afile>')