我从来没有担心过安装了archlinux的我自己的计算机上的vimdiff
,所以总的来说,所有的东西都是最新的;我通常只是使用它,而且我对它很满意。毕竟,无论我启动vi
、vim
还是vimdiff
,D2
都会提供相同的输出。
然而,在我的工作计算机(Debian 10)上,vimdiff
会打开一个比vi
或vim
更老的Vim版本。
我想这可能与我如何安装Vim和/或/etc/alternatives
之类的东西有关。我花了很长时间玩这些东西(很可能还没有真正理解),所以我不记得太多了。
Feedback on 答案与注释(S)
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
时运行的版本要早。
发布于 2022-03-18 11:52:50
您已经将vi
和vim
化名为/home/me/vim-dist/bin
中的别名;想必您也可以对vimdiff
进行别名。
要使vimdiff
正常工作,需要以"vimdiff“而不是"vim”的形式执行,因此不能将"vimdiff“别名为/home/me/vim-dist/bin/vim
。
但是,/home/me/vim-dist/bin
中可能已经有一个名为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
。
发布于 2022-03-18 03:14:50
嗯?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 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
),我真的不需要高级GUI或perl/python/ruby/tcl内置到vi中的支持。我使用gvim
的唯一一次是在很少的情况下,我从GUI应用程序或文件浏览器运行它。
https://unix.stackexchange.com/questions/695918
复制