我想使用 MacVim 控制台应用程序而不是标准 vim。为了实现这一点,我尝试设置别名:
alias vim="/usr/local/Cellar/macvim/8.0-119_1/MacVim.app/Contents/MacOS/Vim"
但由于某些原因,alias
命令不起作用,每次执行时which vim
它都不会改变,并且始终显示'/usr/local/bin/vim'
为路径。这是怎么回事?
安装 Macvim
brew install macvim --with-override-system-vim
对我来说不起作用,因为它还需要安装太大(~5Gb)的 XCode 的 GUI 版本
答案1
是mvim
的通用启动 (bash) 脚本MacVim
。它根据自己的名称工作,例如,如果名称以m
或开头g
,将启动 GUI 版本,否则将启动控制台版本。
您可以在mvim
源代码中看到这一点:
case "$name" in m*|g*|rm*|rg*) gui=true ;; esac
任何其他名称都将启动主机版。因此,只需创建与原始的硬链接即可mvim
。例如,如果您的mvim
位于/usr/local/bin/mvim
然后
sudo ln /usr/local/bin/mvim /usr/local/bin/tvim
将创建tvim
并且该tvim
命令将启动 的控制台版本MacVim
。当然,您也可以创建链接vim
以
sudo ln /usr/local/bin/mvim /usr/local/bin/vim
/usr/local/bin
只是必须确保前在/usr/bin
你的$PATH
。
现在回答你的问题:
使用别名来隐藏命令并不是最佳做法。无论如何,它有效。因此,你的
alias vim="/usr/local/Cellar/macvim/8.0-119_1/MacVim.app/Contents/MacOS/Vim"
将开始MacVim 的 vim。which
命令没有显示别名。你可以自己测试一下,直接在终端中输入:
alias bubu=/bin/date
什么which bubu
都不会显示,但如果你运行bubu
命令,你会得到日期。
您可以使用 检查将运行哪个命令type
。例如
type bubu
#bubu is alias /bin/date
相似地
type vim
#will show the /usr/local/Cellar/macvim/8.0-119_1/MacVim.app/Contents/MacOS/Vim
另外,您可以直接从运行中检查当前变量vim
,只需使用:set runtimepath
或:set helpfile
将显示默认值,/usr/bin/vim
例如:
... /usr/share/vim/vimfiles,/usr/share/vim/vim74,/usr/share/vim/vimfiles/after
但对于你的 MacVim(在控制台模式)将显示如下:
... /usr/local/Cellar/macvim/8.0-119_1/MacVim.app/Contents/Resources/vim/vimfiles
因此,最后:
- 你的别名可能有效,只是
which
没有显示出来 - 您可以使用提供的链接
mvim
将其硬链接到另一个名称