带字符串连接的Vim Set选项

wei*_*ith 3 vim neovim


我想在我的下面做以下事情.vimrc:

if has('nvim')
  let g:base_data_folder = $HOME . '/.nvim'
else
  let g:base_data_folder = $HOME . '/.vim'
endif

set backupdir = g:base_data_folder . '/backup'
Run Code Online (Sandbox Code Playgroud)

不幸的是最后一行不起作用,我在启动Vim/NeoVim时遇到错误.
任何想法如何让这个工作?

And*_*dev 9

设置使用特殊语法.您为它们设置的值不是真正的表达式.这给了他们不需要引号或转义的好处,但是在使用程序表达式时它们的灵活性较低.

避免这种情况的一种方法是其他类型的Vim语法常见的是executecommand(:help :execute ):

exe 'set backupdir = ' . g:base_data_folder . '/backup'
Run Code Online (Sandbox Code Playgroud)

也就是说,对于设置,:help :let-& 我建议使用专用语法():

let &backupdir = g:base_data_folder . '/backup'
Run Code Online (Sandbox Code Playgroud)

基本上,这允许将设置视为各种"变量".对于其他特殊情况,我建议您阅读所有关于"让"的文档以更好地理解其工作原理.