2014-11-08 68 views
1

我在笔记本电脑上记录了控制台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文件突出显示它们,因为 我不知道文件类型是什么。

有没有更好的方法来解决这个问题?

回答

0

而不是使用旧的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的配置,虽然。