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
,以便首先获取它的命令。