繁体   English   中英

Vim:从本地目录加载语法文件

[英]Vim: load syntax file from local directory

我希望能够为特定项目创建vim语法文件,以突出显示该项目唯一的标识符。 我当然可以在$HOME/.vim/after/syntax/*.vim安装语法文件,但是我想将其设置为每个文件夹的配置。 项目语法文件应添加到现有语法文件上,而不是替换它。 我还希望有一个通用的解决方案,如果存在的话,将自动加载本地文件,并且不需要为.vimrc或插件中的特定目录配置。

编辑:这类似于问题Vim:在目录中的文件上应用设置,但处理.vimrc中的设置,该文件在语法文件之前加载。 语法文件通常会擦除预定义的语法信息,因此在.vimrc中设置此信息无用,因此加载备用.vimrc文件的技术也无济于事。 我不知道一种触发其他“之后”文件加载的方法。 我已经看过这个问题,但是除了.vimrc以外,没有其他答案。

我已经使用:set exrc配置了本地.vimrc文件,并验证了是否已加载这些文件,但是.vimrc中的语法定义被以后加载的语法文件覆盖。 (我想将项目语法添加到标准语法中,而不是替换它。)

是否有可用于本地“之后”语法文件的类似功能(无论是vim功能还是插件)?

我根据以下答案调整了解决方案: https : //stackoverflow.com/a/13192721/2150289 虽然我仍然想探索其他选项(如果存在),但是可以。 由于.vimrc答案不适用,因此将其作为单独的问题和答案来解决,并且对于语法文件来说这不太可能。

在我的项目目录中,我有一个本地.vimrc来设置选项卡,依此类推。 这是通过set exrc或任何其他加载本地.vimrc的方法加载的。

要加载“ after”文件,您可以将它们以菊花链方式链接到一个“ after”文件,该文件将被加载到.vim / after目录中。 例如,我有一个.vim_syntax_cpp.vim,它具有特定于该项目的C ++语法。 我将其放置在项目目录中:

PROJECT/
  .vimrc           # gets loaded by set exrc
  .vim_syntax_cpp  # daisy chained from .vim/after/syntax/cpp.vim
  Makefile
  foo.cpp
  bar.cpp

在〜/ .vim / after / syntax / cpp.vim中,我放置以下代码:

" load syntax file if it exists in the
" current directory or parent directory
if filereadable(".vim_syntax_cpp.vim")
    source .vim_syntax_cpp.vim
elseif filereadable("../.vim_syntax_cpp.vim")
    source ../.vim_syntax_cpp.vim
endif

我已验证这将加载本地语法文件并将其添加到现有语法定义中。

这种方法有局限性。 请参阅链接答案中的评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM