vimdiffコマンドがviコマンドとvimコマンドと同じバージョンのVimを使用するにはどうすればよいですか?

vimdiffコマンドがviコマンドとvimコマンドと同じバージョンのVimを使用するにはどうすればよいですか?

私は私のコンピュータにArchlinuxをインストールすることを心配する必要はありませんでしたvimdiffので、一般的にすべてが最新の状態なので、それを使用するだけで大​​丈夫です。結局、、、またはを実行しても:version同じ出力が提供されます。vivimvimdiff

しかし、マイワークコンピュータ(Debian 10)でvimdiff開かれるVimのバージョンはnewerviまたはoldですvim

/etc/alternatives私の考えでは、これはVimのインストールや他のものと関係があるようです。長い間プレイしていたので(おそらくきちんと理解できないまま)記憶があまり出ません。


フィードバック回答そしてコメント

ls -lF /etc/alternatives/ | grep bin/vim | sed 's/.*-> //' | sort -u

1つの結果のみを生成します。/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/を実行したときに実行されるバージョンより古いバージョンです。vimvi

答え1

でエイリアスとしてとを使用しましたvi。おそらくエイリアスも使用できます。vim/home/me/vim-dist/binvimdiff

正しく機能するには、vimdiff「vim」ではなく「vimdiff」で実行する必要があるため、「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.

答え2

ああ? vimdiffただシンボリックリンクですvim。特にDebianには、好みのバージョンのvimへのシンボリックリンクである/usr/bin/vimdiffシンボリックリンクがあります。/etc/alternatives/vimdiff

たとえば、私のデフォルトのデスクトップで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のサポートは本当に必要ありません。私が使用する唯一のケースは、gvimGUIアプリケーションまたはファイルブラウザで実行するときです。

関連情報