macos - 更新 Mac OS X 上的内置 vim

标签 macos vim

我知道这可能在 Ask Different 中更合适,但当我尝试在那里添加标签时,没有 vim 标签,只有 macvim。所以我想我可能会在这里获得更好的观众。

在终端中,我执行以下操作

$ vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Jan 31 2010 13:33:49)

当我浏览到http://www.vim.org时,我看到一条新闻

Vim 7.3 released!

如何更新我的内置 vim?我非常希望干净地完成(即没有重复安装,或任何额外的下载,没有 macports 等)

我考虑使用 Mercurial(因为我已经将它用于其他用途),按照说明 here .

$ hg clone https://vim.googlecode.com.hg/ vim
$ cd vim/src
$ make

但我认为这会导致重复安装。尽管我上面提到了“干净”的要求,但“不干净”的解决方案也是受欢迎的,因为也许真的没有其他办法。

最佳答案

如果我理解正确的话,你想在现有的 Vim 上安装,无论好坏 :-) 这是一个坏主意,而且它不是“干净”的方式去做吧。为什么?好吧,OS X 期望/usr/bin 中不会有任何不为人知的改变,因此任何时候你覆盖其中的内容时,你都会面临破坏某些复杂的相互依赖关系的风险。而且,假设您确实损坏了某些东西 - 没有办法“消除”这种损坏。你会感到悲伤和孤独。您可能需要重新安装 OS X。

第 1 部分:更好的想法

“干净”的方式是安装在单独的位置,并使新的二进制文件在 $PATH 中具有更高的优先级。我建议这样做:

$ # Create the directories you need
$ sudo mkdir -p /opt/local/bin
$ # Download, compile, and install the latest Vim
$ cd ~
$ hg clone https://bitbucket.org/vim-mirror/vim or git clone https://github.com/vim/vim.git
$ 
$ cd vim
$ ./configure --prefix=/opt/local
$ make
$ sudo make install
$ # Add the binary to your path, ahead of /usr/bin
$ echo 'PATH=/opt/local/bin:$PATH' >> ~/.bash_profile
$ # Reload bash_profile so the changes take effect in this window
$ source ~/.bash_profile

瞧!现在,当我们使用 vim 时,我们将使用新的 vim。但是,为了在出现巨大故障时恢复到旧配置,我们可以删除/opt 目录。

$ which vim
/opt/local/bin/vim
$ vim --version | head -n 2
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Aug 27 2011 20:55:46)
MacOS X (unix) version

看看这有多干净。

当您想要覆盖/usr/bin 中的二进制文件时,我建议不要安装在/usr/local/bin 中,因为默认情况下,OS X 在 $PATH 中将/usr/bin 的优先级高于/usr/local/bin,拧紧它会打开它自己的蠕虫 jar ......所以,这就是你应该做的。

第 2 部分:“正确”答案(但不是一个好主意)

假设您决心这样做,那么您肯定已经步入正轨。要在当前安装之上安装,您需要设置“前缀”目录。这样做是这样的:

hg clone https://bitbucket.org/vim-mirror/vim or git clone https://github.com/vim/vim.git
cd vim
./configure --prefix=/usr
make
sudo make install

如果您愿意,您也可以传递“配置”一些其他选项。执行“./configure --help”来查看它们。不过,我希望您在执行此操作之前已有备份,以防出现问题......

关于macos - 更新 Mac OS X 上的内置 vim,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7211820/

相关文章:

Vim 脚本 :execute command passing numeric prefix

vim - 在 vim 中插入类似行时,如何最大限度地减少击键次数?

ruby - vim自动缩进Ruby中没有分号的行

macos - 您无权访问此服务器上的/- Mac OS X Mojave 上的 Apache 2

swift - 在 OS X 中,如何正确获取窗口框架大小?

python - 从 Python 调用 Vowpal Wabbit (3.4)

ruby - "Execute and Update ' # => ' Markers"对于 VIM

c - Mac OS X 上由 pclose() 引起的 Valgrind 错误

macos - 有没有可以在配备 M1 芯片的 iPad Pro 2021 上使用 VS Code 程序?

syntax-highlighting - 仅 Vim 自定义语法高亮背景