vim
我在 macOS 上安裝了兩個版本:
- 預設版本
/usr/bin/vim
,, - 和 MacVim(透過 Homebrew)
/usr/local/bin/vim
,.
當我輸入 時vim
,將調用預設程式。我想每次打字時都使用 MacVim vim
。你知不知道怎麼?他們都使用同一個~/.vimrc
檔案嗎?
答案1
使用別名。
別名在您的 BASH RC 檔案之一中定義,例如~/.bashrc
.下面,如果/usr/local/bin/vim
是符號鏈接,則建立一個名為 的別名vim
。
if [ -h '/usr/local/bin/vim' ]; then
alias vim='/usr/local/bin/vim'
fi
可以應用相同的邏輯如下。
[ -h '/usr/local/bin/vim' ] && alias vim='/usr/local/bin/vim'
-h
測試文件是否是符號鏈接,使用 Homebrew 時可能會發生這種情況。-x
測試檔案是否為常規可執行檔。
ls -l
(當檔案權限的第一個字母顯示為字母 l 時,可以確定該檔案是鏈接我rwxr-xr-x。
人們可能還想設定一些程式用來呼叫預設編輯器的變數。
EDITOR='/usr/local/bin/vim'
VISUAL='/usr/local/bin/vim'
將定義新增至 shell 的 RC 檔案後,取得 RC 檔案以選擇新別名source ~/.bashrc
或適合您的 BASH 設定的檔案。命令command -v vim
,顯示別名已創建,其輸出如下。
alias vim=/usr/local/bin/vim
兩個版本的vim
.
指向符號連結而不是二進位執行檔的優點是,在每次升級 MacVim 時不需要更新別名,而這種情況經常發生。brew update && brew upgrade
例如,當使用 執行升級時,Homebrew 會保留指向正確的二進位執行檔的符號連結。
系統版本/usr/bin/vim
應該保留在原來的位置。如果沒有停用系統完整性保護 (SIP),則無論如何都無法刪除或變更它。仍然可以透過鍵入 來使用系統版本/usr/bin/vim
,但是,鍵入vim
invokes /usr/local/bin/vim
。
修改路徑。
另一種適用於透過 Homebrew 安裝的所有軟體的方法是修改 ,PATH
以便 Homebrew 安裝的所有軟體都位於PATH
.首先,需要知道哪個zsh
RC 檔案已經包含路徑的定義。
cd
grep path .z*
結果之一可能包括fpath
.這不是正確的變數。我們正在尋找一個名為 的小寫變數path
。推導出要編輯的文件的名稱(可能是~/.zshrc
或 )後~/.zprofile
,更改變數的值path
。例如,path
下面首先定義/usr/local/bin
和/usr/local/sbin
,然後是主目錄中的腳本或程序,最後是系統已定義的路徑的其餘部分。
path=(
/usr/local/{bin,sbin}
$HOME/bin
$path
)
由此產生的 UnixPATH
變數將定義如下。
/usr/local/bin:/usr/local/sbin:/Users/$username/bin:/usr/bin:/bin:/usr/sbin:/sbin
zsh
path
和 Unix變數PATH
透過 ”綁定在一起” typseset
,因此只需source
編輯修改變數的檔案path
:source ~/.zprofile
例如。然後查看該PATH
變數以了解它是否按預期進行了修改:echo $PATH
。
Homebrew 軟體包維護者非常擅長識別如果/usr/local/bin
是路徑中的第一個(在 之前)哪個軟體會導致 macOS 出現問題/usr/bin
。例如,如果 Homebrew 要安裝 GNU id
,那麼 中的軟體名稱/usr/local/bin
將是gid
為了避免id
中的BSD 問題/usr/bin
。
答案2
使用brew 的標準是像這樣放置/usr/local/bin
先前PATH
的系統目錄/usr/bin
,以便首先取得它的指令。