【问题标题】:Vim use a variable interpolated within a String?Vim 使用在字符串中插值的变量?
【发布时间】:2013-11-13 10:01:52
【问题描述】:

我有一个.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 所有这些采购都没有多大意义。

标签: vim zshrc


【解决方案1】:

在大多数 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 吗?
  • 别担心,我意识到我必须导出该值,然后我可以像这样在我的 vimrc 中使用它:set runtimepath+=$SYNCFOLDER/Fresh\ Install/Shell/vim
  • Vim 是另一个进程,所以是的,需要export。没有它,它只能直接在 shell 中使用。
猜你喜欢
  • 2019-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
  • 1970-01-01
  • 2012-10-26
相关资源
最近更新 更多