我从来没有担心过vimdiff
在我自己的计算机上安装了 archlinux,所以一般来说一切都是最新的;我一般只是用它,而且我觉得还好。毕竟,无论我启动、 、、 或 ,:version
都会给出相同的输出。vi
vim
vimdiff
然而,在我的工作计算机 (Debian 10) 上,vimdiff
打开的 Vim 版本比vi
或旧版本vim
。
/etc/alternatives
我想这可能与我安装 Vim 和/或其他东西有关。我已经玩了很长一段时间了(可能没有真正理解它),所以我不记得太多了。
反馈答案和评论
ls -lF /etc/alternatives/ | grep bin/vim | sed 's/.*-> //' | sort -u
仅产生一个结果,即/usr/bin/vim.gtk*
.那么,怎么可能vimdiff
打开vim
不同的版本呢?或者我误解了答案?
的输出type -a vimdiff
是
vimdiff is /usr/bin/vimdiff
vimdiff is /bin/vimdiff
输出:type -a vim
vim is aliased to `/home/me/vim-dist/bin/vim'
vim is /usr/bin/vim
vim is /bin/vim
输出type -a vi
:
vi is aliased to `/home/me/vim-dist/bin/vim'
vi is /usr/bin/vi
vi is /bin/vi
和/bin/vim --version | head -n 1
都有/usr/bin/vim --version | head -n 1
相同的输出:
VIM - Vi IMproved 8.1 (2018 May 18, compiled Jun 15 2019 16:41:15)
这是我执行时运行的版本,比我执行/vimdiff
时运行的版本旧。vim
vi
答案1
您已为;中的别名使用了vi
和。想必您也可以使用别名。vim
/home/me/vim-dist/bin
vimdiff
为了vimdiff
正常工作,它需要作为“vimdiff”而不是“vim”执行,所以你不能只给“vimdiff”起别名/home/me/vim-dist/bin/vim
。
/home/me/vim-dist/bin
但是, named中可能已经存在符号链接vimdiff
。如果有则别名“vimdiff”。
如果没有,创建它可能会起作用。
cd /home/me/vim-dist/bin
ln -s vim vimdiff
然后将“vimdiff”别名为/home/me/vim-dist/bin/vimdiff
.
如果您不想或无法创建链接,则可以将“vimdiff”别名为/home/me/vim-dist/bin/vim -d
.
alias vimdiff="/home/me/vim-dist/bin/vim -d"
(在您的.bashrc
或.zshrc
或任何您保留别名的地方。)
所有别名的替代方法是将添加/home/me/vim-dist/bin
到您的$PATH
并确保它出现事先的到 /bin
和/usr/bin
。看这如果您不熟悉更改您的$PATH
.
答案2
啊? vimdiff
只是 的符号链接vim
。具体来说,在 debian 上,/usr/bin/vimdiff
有一个符号链接/etc/alternatives/vimdiff
,而该符号链接又是您首选的 vim 版本的符号链接。
例如,在我的主台式机上,使用vim.gtk3
我首选的 vim:
$ ls -lF /usr/bin/vimdiff
lrwxrwxrwx 1 root root 25 May 18 2018 /usr/bin/vimdiff -> /etc/alternatives/vimdiff*
$ ls -lF /etc/alternatives/vimdiff
lrwxrwxrwx 1 root root 17 Nov 8 2019 /etc/alternatives/vimdiff -> /usr/bin/vim.gtk3*
您可以通过以下方式查看可用的替代方案:
$ update-alternatives --list vimdiff
/usr/bin/vim.basic
/usr/bin/vim.gtk3
并将其更改为:
$ sudo update-alternatives --config vimdiff
There are 2 choices for the alternative vimdiff (providing /usr/bin/vimdiff).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/vim.gtk3 50 auto mode
1 /usr/bin/vim.basic 30 manual mode
2 /usr/bin/vim.gtk3 50 manual mode
Press <enter> to keep the current choice[*], or type selection number:
如果我安装了更多 vim 软件包(例如vim-tiny
),那么它们也会显示为选项。
可以为 vim 和 vimdiff (以及其他几个*vim*
程序 - 请参阅下面的一些二进制文件)选择不同的替代方案。我怀疑这就是你所做的。如果您希望它们相同,请使用update-alternatives
更改其中一个或两个。
$ ls -lF /etc/alternatives/ | grep bin/vim
lrwxrwxrwx 1 root root 17 Nov 8 2019 editor -> /usr/bin/vim.gtk3*
lrwxrwxrwx 1 root root 17 Nov 8 2019 eview -> /usr/bin/vim.gtk3*
lrwxrwxrwx 1 root root 17 Nov 8 2019 evim -> /usr/bin/vim.gtk3*
lrwxrwxrwx 1 root root 17 Nov 8 2019 gview -> /usr/bin/vim.gtk3*
lrwxrwxrwx 1 root root 17 Dec 24 2019 gvim -> /usr/bin/vim.gtk3*
lrwxrwxrwx 1 root root 17 Nov 8 2019 gvimdiff -> /usr/bin/vim.gtk3*
lrwxrwxrwx 1 root root 17 Nov 8 2019 rgview -> /usr/bin/vim.gtk3*
lrwxrwxrwx 1 root root 17 Nov 8 2019 rgvim -> /usr/bin/vim.gtk3*
lrwxrwxrwx 1 root root 17 Nov 8 2019 rview -> /usr/bin/vim.gtk3*
lrwxrwxrwx 1 root root 17 Nov 8 2019 rvim -> /usr/bin/vim.gtk3*
lrwxrwxrwx 1 root root 17 Nov 8 2019 vi -> /usr/bin/vim.gtk3*
lrwxrwxrwx 1 root root 17 Nov 8 2019 view -> /usr/bin/vim.gtk3*
lrwxrwxrwx 1 root root 17 Nov 8 2019 vim -> /usr/bin/vim.gtk3*
lrwxrwxrwx 1 root root 17 Mar 18 21:58 vimdiff -> /usr/bin/vim.gtk3*
(或者,你可以运行类似的东西grep -r bin/vim /var/lib/dpkg/alternatives/
)
其中每一个都可以独立设置为指向不同的 vim 替代版本。我可能应该安装vim-tiny
(或者至少将上面的大部分设置为vim.basic
),我真的不需要在我的 vi 中内置精美的 GUI 或 perl/python/ruby/tcl 支持。我唯一使用的时候gvim
是在极少数情况下从 GUI 应用程序或文件浏览器运行它。