如何从外部文件中读取.vimrc?


22

我想修改我的 .vimrc 从外部文件中读取变量的值。我怎样才能做到这一点?

具体来说,我和朋友分享了一个git repo .vim 文件,但在我们的配置中我们想要的东西有一些小的差异。因此大多数文件都很常见,但我们使用if语句来确定是否加载特定于用户的部分,如下所示:

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

检查了我们的共同点 .vimrc 出于源代码控制,我们每个人都要改变 let whoami 赋值所以我们自己的部分将被加载。相反,我想保留一个单独的文件,对于我们每个人来说可能是不同的,并且vim将从中加载该变量值。

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

Answers:


32

在主.vimrc文件中:

source otherVimScriptFilePath.vim

然后只需将您的变量语句放在该文件中:

" otherVimScriptFilePath.vim
let whoami = "user1"

2
仅供参考 - 在我看来,这样做很有帮助 let whoami = "" 就在之前 source 如果它无法加载外部文件,那么变量就存在了,我得到了我们之前为未设置的变量设置的错误消息。
Nathan Long

2
@GorillaSandwich:我使用它在我的Windows机器上获取我的vimrc,因为windows没有符号链接。我有一个SVN文件夹,其中包含此文件和所有其他点文件。所以我只有一个_vimrc来源svn文件夹中的真实的。
Robert S Ciaccio

@GorillaSandwich:看看我的回答 silent! source 部分
akira

5

要回答最后一个问题,请输入文件 ~/.vim 没有自动加载,但所有文件都在 ~/.vim/plugin 是。


2
以及〜/ .vim下面的其他一些地方( afterautoload
akira

5

使用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 

4

您可以使用〜/ .vimrc加载另一个文件 :source 命令。例如,您可以将每个命令放在〜/ .myvimrc中并加载这些命令

source ~/.myvimrc

或者,正如您所想的那样,您可以将您的名字放在该文件中,如下所示:

let user = "user1"

然后把它放在〜/ .vimrc中:

source ~/.myvimrc
if user == "user1"
    " do this
elseif user == "user2"
    " do that
else
    echo "Invalid user"
endif

但是,您可以使用$ USER作为akira建议或设置,而不是将您的名字放在文件中 user 运用 whoami, 像这样:

let user = substitute(system('whoami'), '\n', '', '')

需要substitute()函数,因为system()的输出通常在末尾加上'\ n'。


whoami 在Windows上不起作用
akira

@akira:是的,但GorillaSandwich使用的是Unix,而不是Windows。 $ USER也不适用于Windows,至少不适用于Windows XP。
garyjohn

只是说,在Windows上它的$ USERNAME。主要是: whoami 产生一个新的过程,当你打开你的编辑器时,它应该是快速的而不是(无用的)再次做几次工作。
akira

2

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

:echo $USER

所以,只需使用

execute "silent! source vimrc." . $USER

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

vimrc.joe

或者你的登录名是什么


0

我不确定你的vimrc是什么样的,所以这可能不太可行,但如果你和你的朋友分享了很多部分,你可能想把它们分成单独的插件。您可以将文件添加到 ~/.vim/plugin 在启动时加载它们的目录。 (它们按字母顺序加载 - 使用 :scriptnames 去检查。)

这样你就可以拥有一个完全独特的vimrc,但你所有的常见配置都在插件中。如果你在逻辑上分解它们,那么它也可以很容易地与他人分享。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.