覆盖一个目录下的文件的ftplugin

3
什么是覆盖某个项目下的ftplugin设置的最佳方法,即特定目录下的文件?
例如,我在我的~/.vim/ftplugin/javascript.vim中设置了setlocal tabstop=4,因为我们公司所有项目都有这个空格策略。
但在一个个人项目中,我想在我的.js文件中使用tabstop=2。
我知道我可以在该项目的目录中放置自定义的.vimrc文件,并启用vim的exrc选项,以使其读取该.vimrc文件。这是最好的方法吗?

1
你的问题是一个重复的问题:https://dev59.com/MnRB5IYBdhLWcg3w9Lzn?rq=1 - Luc Hermitte
这是吗?我在询问如何覆盖ftplugin的行为,而不仅仅是.vimrc文件。 - acksys
1
你正在询问如何覆盖特定目录下文件的vim设置。除非你想在激活某些设置之前检查文件类型,否则你会得到相同的答案。 其他讨论中唯一缺少的是.exrc仅限于一个目录,而插件解决方案可以更改整个目录层次结构中的设置。 覆盖.vimrc或ftplugin之间的区别很快就变得没有意义了:请参见此处的两个_vimrc_local * .vim文件:https://github.com/LucHermitte/Rasende。它们定义项目设置(项目目录、映射等)。 - Luc Hermitte
2个回答

4

set exrc命令会读取当前目录下的.vimrc文件,并且还会读取.vim目录下的结构。因此,你可以将

myproject/.vim/after/ftplugin/javascript.vim

添加到你的项目中;当你从myproject目录打开文件时,它会像这个文件在你的主目录中一样工作。


谢谢。我知道使用这种方法存在一些安全方面的担忧。您认为这是最安全的方式吗? - acksys
@acksys:说实话,我只在项目特定的语法高亮方面使用这种方法。 - Akobold
有一个“设置安全”选项,它试图防止更危险的代码从这些本地文件中执行,我想。 - MichaelJones

2

我使用localrc.vim - 为每个目录启用配置文件插件来实现此功能。它不仅允许使用“本地 .vimrc”文件,还为特定的子目录提供了特定的文件类型设置(默认情况下,文件名为.local.{filetype}.vimrc)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接