我怎样才能让 .vimrc 从外部文件读取?

我怎样才能让 .vimrc 从外部文件读取?

我想修改我的代码.vimrc以从外部文件读取变量的值。我该怎么做?

具体来说,我和一位朋友共享一个 git repo,其中包含我们的.vim文件,但我们在配置中想要的内容有一些小差异。因此,文件的大部分内容都是通用的,但我们使用 if 语句来确定是否加载用户特定的部分,如下所示:

let whoami = "user2"
if whoami == "user1"
...

在检查了我们共同的.vimrc源代码控制之外的内容后,我们每个人都必须更改分配,let whoami以便加载我们自己的部分。相反,我想保留一个单独的文件,该文件对于我们每个人来说都可以是不同的,并且 vim 将从中加载该变量值。

也许另一个角度是:.vimvim 会自动读取我的目录中的所有文件吗?如果是这样,我们每个人都可以放置一个名为 username.vim 的符号链接,并将其链接到每个人不同的外部文件。

答案1

在你的主 .vimrc 文件中:

source otherVimScriptFilePath.vim

然后只需将变量语句放入该文件中:

" otherVimScriptFilePath.vim
let whoami = "user1"

答案2

使用 try/catch

自从问了这个问题以来,我想到了另一个加载外部文件的用例:特定于机器的调整。

因为我可能需要或不需要在给定的机器上进行调整,所以我使用它try/catch来加载外部文件;如果没有这样的文件,我会让它静默失败。

" If there are any machine-specific tweaks for Vim, load them from the following file.
try 
  source ~/.vimrc_machine_specific
catch
  " No such file? No problem; just ignore it.
endtry 

答案3

回答最后一个问题,中的文件~/.vim不会自动加载,但中的所有文件~/.vim/plugin都会自动加载。

答案4

登录用户的名称在 $USER 环境变量中可用。您可以轻松访问该变量:

:echo $USER

所以,只需使用

execute "silent! source vimrc." . $USER

在你的 vimrc 中并将你的用户特定设置放入

vimrc.joe

或者你的登录名

相关内容