如何讓 .vimrc 從外部檔案讀取?

如何讓 .vimrc 從外部檔案讀取?

我想修改我的.vimrc以從外部文件讀取變數的值。我怎樣才能做到這一點?

具體來說,我和一個朋友與我們的.vim文件共用一個 git 儲存庫,但我們想要的配置有一些細微的差異。因此文件的大部分內容都是通用的,但我們使用 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

自從提出這個問題以來,我提出了加載外部文件的另一個用例:特定於機器的調整。

由於我可能需要也可能不需要在給定的機器上進行調整,所以我使用 atry/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

或無論您的登入名稱是什麼

相關內容