【问题标题】:Apple's vim always used instead of homebrew苹果的 vim 总是使用而不是 homebrew
【发布时间】:2015-10-24 01:51:39
【问题描述】:

我看到了一些非常奇怪的东西,老实说我很难过。

mac 自带的 vim 版本已经过时了(7.3 而不是 7.4)。我正在尝试从 homebrew 安装 vim,我想使用那个而不是默认的苹果版本。

我跑了“brew install vim”。它在/usr/local/bin/vim 中正确安装。都很好。

当我运行“which vim”时,它会打印“/usr/local/bin/vim”。 Apple 版本的 vim 安装在 /usr/bin/vim。所以 which 命令告诉我我正在使用自制版本的 vim。

但是,当我实际运行 vim 时,它仍然运行 Apple 版本

$ vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jul  9 2015 23:58:42)
Compiled by root@apple.com
...

如果我明确运行自制版本,我会看到:

$ /usr/local/bin/vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Oct 23 2015 18:16:35)
MacOS X (unix) version
Included patches: 1-898
Compiled by Homebrew
...

我什至尝试将/usr/bin/vim 移动到/usr/bin/vim73 以尝试强制使用自制版本。但是,当我这样做时,这是我在尝试运行 vim 时看到的:

$ vim --version
-bash: /usr/bin/vim: No such file or directory
$

发生了什么事?如何让它运行自制版本的 vim?

【问题讨论】:

  • 你有别名吗?使用type 而不是which 进行检查。在 bash 中 which 不是内置的 shell,但 type 是。
  • 另一个明显的问题是哈希表,如果你还没有重新启动你的 shell:hash -l 在 bash 中显示了哈希表的内容。
  • 啊,谢谢!当我输入“type vim”时,我看到“vim is hashed (/usr/bin/vim)”。当我输入“hash -l”时,我确实在列表中看到了 vim。
  • 为了解决这个问题,我在我的 .bash_profile 中添加了 'alias vim="/usr/bin/local/vim"'。这似乎行得通。有更好的方法吗?
  • 不要添加别名,不需要修改.bash_profile。让路径为您完成。一个新的 shell 会得到一个新的哈希表,或者只是做hash -r 来清除哈希表并让它重新构建。

标签: macos vim path homebrew osx-yosemite


【解决方案1】:

启动一个新的 shell 会话,它会工作。

Bash 缓存可执行文件的路径,因此当您运行 vim 时,它会查看您的 PATH 以找到第一个具有此名称的可执行文件。它会缓存它,第二次运行 vim 它会记住 vim 实际上是 /usr/bin/vim 并运行它。

由于您尚未重新启动 Bash 会话,因此它的缓存仍然相同;因此您看到的错误。与你安装vim的方式无关。

如果您不想启动新的 shell 会话,可以运行 hash -r 告诉 Bash 清除其可执行文件内存。

【讨论】:

  • 这为我解决了。谢谢@bfontaine - 你才是真正的 MVP。
  • 完美。正是我需要在 OSX 上修复我的 vim +剪贴板!
  • 如果您想留在同一个窗口/选项卡/其他任何地方,exec bash 是在同一个地方获取新的 shell 会话的简单方法。
  • @jeremysprofile 你也可以运行hash -r 来清除缓存,同时保持相同的会话。
【解决方案2】:

你忘记了一个论点:

$ brew install vim --override-system-vi

【讨论】:

猜你喜欢
  • 2022-01-06
  • 2011-10-10
  • 2016-04-21
  • 1970-01-01
  • 2011-03-09
  • 2022-11-06
  • 2013-12-07
  • 2014-09-15
  • 2015-10-18
相关资源
最近更新 更多