带字符串连接的Vim Set选项

时间:2018-05-07 09:00:33

标签: 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'

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

1 个答案:

答案 0 :(得分:9)

设置使用特殊语法。您为它们设置的值实际上不是表达式。这给了他们不需要引号或转义的好处,但是在使用程序化表达式时它们的灵活性会降低。

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

exe 'set backupdir = ' . g:base_data_folder . '/backup'

也就是说,对于设置,有一种专用语法(:help :let-& )我建议改为:

let &backupdir = g:base_data_folder . '/backup'

基本上,这允许将设置视为各种“变量”。我建议你阅读所有关于“让”的文档,以便更好地理解其工作方式,以及其他特殊情况。