针对 SuperUser 上的这个问题,我编写了一个小的 vimscript,它将检测符号链接的文件类型并更改语法突出显示:
au BufNewFile,BufRead * if &syntax == '' | 沉默的!执行 (':set filetype='.matchstr(resolve(@%),'.[^.]*$')[1:]) | 万一
因此,如果我打开一个没有扩展名的符号链接,它将查看它指向的文件的扩展名。
它可以工作,但一个意想不到的结果是,现在我的.vimrc
文件的语法高亮已经消失了。默认情况下,我的 .vimrc 文件具有 vim 语法高亮显示(:echo &syntax
返回vim
)。
但是当我添加上面的行时,:echo &syntax
返回vimrc
(无效类型)。
我不知道为什么会这样。不应该&syntax==''
评估为假,从而保持&syntax==vim
?我怀疑我的代码在语法高亮设置为vim
. 但是,语法高亮究竟是如何(以及何时)设置为vim
for 的.vimrc
?此外,我怎样才能让我的脚本按照它应该的方式运行?