许多 Vim 插件的设置都是由 let g:something = value 指定的。我需要设置一些变量的局部缓冲区值(实际上是使用 vim-localvimrc)
我知道有一种方法可以通过使用条件 (Setting buffer specific variables in Vim) 来取胜。但并非所有这些自动命令都在我的控制之下,因为有些是由其他插件设置的。全局变量有setlocal之类的吗?
最佳答案
有很多方法可以实现您真正想要的(某些项目去除尾随空格),但我认为无论如何都不能用本地缓冲区来遮蔽全局变量(这就是您所要求的)。
一种方法是添加
autocmd BufWritePre /path/to/project/* call StripTrailingWhitespace()
将以下内容添加到您的 vimrc 中。这将为 /path/to/project
(包括子目录)下的任何文件调用函数 StripTrailingWhitespace
。 StripTailingWhitespace
在 spf13 中定义。
您可能可以通过查看本地 vimrc 文件的路径来动态生成项目的路径。
另一种方法是更改 spf13 用于调用 StripTrailingWhitespace
spf13 中的StripTrailingWhitespace
autocmd 定义如下。 (我添加了换行符,所以我不确定这是否可行。)
autocmd FileType c,cpp,java,go,php,javascript,python,twig,xml,yml,perl
\ autocmd BufWritePre <buffer>
\ if !exists('g:spf13_keep_trailing_whitespace') |
\ call StripTrailingWhitespace() |
\ endif
因此,您可以将其更改为 !exists('g:spf13_keep_trailing_whitespace')
以用于某些其他条件,例如检查是否在白名单项目中或检查缓冲区局部变量。
一般建议是摆脱任何 vim 发行版。刚开始时很难理解其中的内容。然后就很难修改它们。通常最好从头开始,当您发现缺少某些东西时添加插件和映射。这将花费更长的时间,但您会了解 vim 配置中的所有内容。
关于vim - 全局变量的缓冲区局部值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25235000/