所以在我的.vimrc文件中,我有以下内容:
let g:syntastic_python_pylint_post_args="--max-line-length=80"
我想要类似的东西
let g:syntastic_python_pylint_post_args="$(cat .line_length.txt)"
而且我希望这个cat
命令在我打开vim时运行。
例如,如果我在项目中有文件
myproject/.line_length.txt
例如,.line_length.txt的内容为120
,我运行
vim
在该目录中,它应该读取该文件并将文件内容设置为变量。
...
这有可能吗?
我尝试使用项目特定的.vimrc文件,但似乎无法读取
let g:syntastic_python_pylint_post_args="--max-line-length=120"
尽管它将读取set ...
行,但不会读取let g: ...
行。
答案 0 :(得分:3)
您尝试的$(...)
语法的字面翻译如下:
let g:syntastic_python_pylint_post_args = substitute(system('cat .line_length.txt'), '\n\+$', '', '')
但是实际上不需要为此运行外部命令。 Vim具有底层:help readfile()
功能:
let g:syntastic_python_pylint_post_args = readfile('.line_length.txt')[0]
filereadable()
作为条件,或者只是忽略:silent!
的任何错误。~/.vimrc
中运行,但可能会影响您在运行时“重新加载”另一个项目的能力(请参见下文)。您的解决方案取决于Vim在“项目目录”中启动。您还提到了特定于项目的vimrc作为替代方案。这是一些选择:
如果可以集中配置特定的命令/本地异常,则可以将此类autocmd放入~/.vimrc
:
:autocmd BufRead,BufNewFile /path/to/dir/* setlocal ts=4 sw=4
使用:setlocal
代替:set
,同样使用:map <buffer> ...
和:command! -buffer ...
很重要。
另一方面,如果您希望将特定配置与项目一起存储(并且不想通过 modelines 将其嵌入所有文件中),则可以使用以下两个选项:>
如果您总是从项目根目录启动Vim,则内置
:set exrc
启用从当前目录读取.vimrc
文件的功能。您可以在其中放置:set ts=4 sw=4
命令。
否则,您需要插件的帮助; vim.org上有几个;我可以推荐localrc plugin(尤其是my own enhancements),它甚至允许本地文件类型特定的配置。
请注意,从文件系统读取配置具有安全隐患。您可能要:set secure
。