将vim语法文件保存在与文档相同的目录中
问题描述:
我在笔记本电脑上记录了控制台vim中的笔记,并且 我想按照 的顺序向笔记添加语法高亮显示以加强它们。然而,我不想为每个知识领域 添加一个 百万不同的文件类型(例如我的编译器笔记将有不同的 关键字比我在FHS上的笔记),我也想 可以很容易地分享这些笔记。在做了一些 研究后,我发现我可以得到我想要的行为,但它看起来不是一个非常优雅的解决方案。 添加以下行到我的.vimrc
:将vim语法文件保存在与文档相同的目录中
if (filereadable("./.custom_syntax.vim")
let mysyntaxfile = "./.custom_syntax.vim"
syntax enable
else
syntax enable
endif
我真的不喜欢这个方案,因为它仍然 要求我要求他们修改其.vimrc
,但我 怀疑,有没有办法做到这一点而不会在其系统上更改任何内容。此外,如果我在目录中有任何 文件不是注释,vim仍然会 使用.custom_syntax.vim
文件突出显示它们,因为 我不知道文件类型是什么。
有没有更好的方法来解决这个问题?
答
而不是使用旧的mysyntaxfile
变量,我只是:syntax enable
(一次),然后:source
语法文件。您可以定义一个:autocmd
,看起来一个同名的文件Vimscript中除了原始的:
" Automatically source an eponymous <file>.vim or <file>.<ext>.vim if it exists, as a bulked-up
" modeline and to provide file-specific customizations.
function! s:AutoSource()
let l:testedScripts = [expand('<afile>') . '.vim']
if expand('<afile>:e') !=# 'vim'
" Don't source the edited Vimscript file itself.
call add(l:testedScripts, expand('<afile>:r') . '.vim')
endif
for l:filespec in l:testedScripts
if filereadable(l:filespec)
execute 'source' fnameescape(l:filespec)
endif
endfor
endfunction
augroup AutoSource
autocmd! BufNewFile,BufRead * call <SID>AutoSource()
augroup END
你确实需要这样或这样的事情在你的vim的配置,虽然。