设置别名以在终端中使用 Macvim 而不是标准 Vim

设置别名以在终端中使用 Macvim 而不是标准 Vim

我想使用 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将其硬链接到另一个名称

相关内容