В ответ на this question на суперпользователя, я написал небольшую vimscript, которое будет детектировать тип файла символической ссылки и изменить подсветку синтаксиса:Как настроить .vimrc свой собственный тип файла?
а.е. BufNewFile, BufRead * если & синтаксис == «» | молчать! execute (': set filetype ='. matchstr (resolve (@%), '. [^.] * $') [1:]) | endif
Так что, если я открою символическую ссылку без расширения, она рассмотрит расширение файла, на который указывает.
Это работает, но непреднамеренным последствием является то, что теперь подсветка синтаксиса моего файла .vimrc
исчезла. По умолчанию мой .vimrc-файл имеет подсветку синтаксиса vim (:echo &syntax
возвращает vim
).
Но когда я добавляю вышеприведенную строку, :echo &syntax
возвращает vimrc
(недопустимый тип).
Я не знаю, почему это происходит. Должно ли &syntax==''
оценить значение false, и, таким образом, сохранить &syntax==vim
? Я подозреваю, что мой код выполняется до выделения синтаксиса vim
. Но как (и когда) точно подсветка синтаксиса установлена на vim
для .vimrc
? Кроме того, как я могу заставить свой скрипт вести себя так, как должен?
Я просто отвечал на ваш вопрос - как установить файл .vimrc's filetype. Если это не ваш вопрос, возможно, вы должны отредактировать его или изменить его. Я подозреваю, что ваш autocmd работает первым, так что да, синтаксис равен нулю. – jszakmeister
Ах, извините, я неправильно понял - это отвечает на первую часть моего вопроса. – Jeff
Я обновил свой ответ. Я думаю, вам нужно поместить ваш autocmd в '~/.vim/after/filetype.vim', поэтому он будет вызван после тех, что во время выполнения Vim. – jszakmeister