Vim如何在字符串中使用变量插值?

12
我有一个名为.zshrc.vimrc的文件。
在我的.zshrc文件中,我有syncfolder="$HOME/Google Drive/Dropbox"
现在我想在.vimrc文件中引用syncfolder,这可能吗(如果可以,如何实现)?
此外,在我的.vimrc文件中,我正在源码许多其他文件,并且我想使它更有效率。
下面的方法不起作用:
let vimfolder="~/Google Drive/Dropbox/Fresh Install/Shell/vim"

source "$vimfolder/settings.vim"
source $vimfolder/vundle.vim
source $vimfolder/mapping.vim
source $vimfolder/filetypes.vim
source $vimfolder/commands.vim

...我尝试了多个变体,其中vimfolder包括$HOME,在另一个变体中,我尝试从我的.zshrc文件导出一个变量,像这样...

export SYNCFOLDER=$syncfolder

我希望可以从我的.vimrc中访问它,但是没有成功。

有什么想法吗?


是的,只需创建符号链接并继续工作:$ ln -s /full/path/to/your/dropboxed/vim /full/path/to/your/home/.vim 所有这些源都没有太多意义。 - romainl
1个回答

13

在大多数Ex命令中,您需要使用:execute来评估变量。Vim变量没有$前缀,那些是环境变量(您也可以从Vimscript中引用它们):

execute 'source' vimfolder . '/settings.vim'

不过在这种情况下,我更愿意将位置添加到'runtimepath'中,然后使用:runtime命令:

set runtimepath+=~/Google\ Drive/Dropbox/Fresh\ Install/Shell/vim
runtime settings.vim

另一种选择是使用符号链接,这样你就不需要改变你的 Vim 设置。


Ingo Karkat,感谢您的帮助! :-) 所以如果我在我的zshrc文件中设置syncfolder="$HOME/Google Drive/Dropbox",那么我应该能够在我的vimrc中使用$syncfolder访问它,对吗?这是不需要导出(export ABC=$syncfolder)的吗?我只需像这样引用它:set runtimepath+=$syncfolder/Fresh\ Install/Shell/vim? - Integralist
别担心,我意识到我需要导出这个值,然后我就可以在我的vimrc中使用它,像这样:set runtimepath+=$SYNCFOLDER/Fresh\ Install/Shell/vim - Integralist
Vim是另一个进程,所以需要使用export。如果没有它,它只能直接在shell中使用。 - Ingo Karkat

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