viコマンドはどのアプリケーションを開きますか?


9

あなたが入力するとvi、端末では、次の出力が表示され

~                             VIM - Vi IMproved                                
~                                                                             
~                               version 7.3.547                                 
~                           by Bram Moolenaar et al.                            
~           Modified by pkg-vim-maintainers@lists.alioth.debian.org             
~                 Vim is open source and freely distributable                   
~                                                                               
~                        Help poor children in Uganda!                                                                             

したがって、これによると、vi起動する必要がありますVIm
しかし、タイプ vimすると

aditya@aditya-desktop:~$ vim
The program 'vim' can be found in the following packages:
 * vim
 * vim-gnome
 * vim-tiny
 * vim-athena
 * vim-gtk
 * vim-nox
Try: sudo apt-get install <selected package>

これは、vimがインストールされていないことを示しています。
特に、同じmanページman viman vim起動します。

では、viコマンドは実際には何を起動するのでしょうか?

回答:


18

それはvim-tiny「Vi IMproved-Enhanced vi editor-compact version」です。

13.10にこれを行いました。

user@ubuntu:~$ which vi
/usr/bin/vi
user@ubuntu:~$ which vim
user@ubuntu:~$ ls -l /usr/bin/vi
lrwxrwxrwx 1 root root 20 ago 13  2013 /usr/bin/vi -> /etc/alternatives/vi
user@ubuntu:~$ ls -l /etc/alternatives/vi
lrwxrwxrwx 1 root root 17 dic 20 04:39 /etc/alternatives/vi -> /usr/bin/vim.tiny
user@ubuntu:~$ apt-cache search vim.tiny
vim-common - Vi IMproved - Common files
vim-tiny - Vi IMproved - enhanced vi editor - compact version
user@ubuntu:~$ dpkg --get-selections | grep vim
vim-common                  install
vim-tiny                    install

ご覧のとおり、vimはインストールされていません(空の出力)。viは/ etc / alternatives / vi(代替メカニズムを参照)へのシンボリックリンクです。これは、パッケージvimに属する/usr/bin/vim.tinyへのシンボリックリンクです。 -小さな。


これを見つけるための短い方法は次のようになりますdpkg -S $(which vi)
psusi

@psusi dpkg-queryパスが見つかりません。
Avinash Raj 14年

3
dpkg -Sシンボリックリンクでは機能しません。
Avinash Raj 2014

8

あなたがする場合type vi

➜  ~  type vi
vi is /usr/bin/vi

バイナリがどこにあるかがわかります。

➜  ~  ls -l /usr/bin/vi 
lrwxrwxrwx. 1 root root 20 jun 22  2013 /usr/bin/vi -> /etc/alternatives/vi

これは、次の方法viで認識できる代替によって提供されます。

➜  ~  update-alternatives --display vi
vi - auto mode
  link currently points to /usr/bin/vim.basic
/usr/bin/vim.basic - priority 30
  slave vi.1.gz: /usr/share/man/man1/vim.1.gz
  slave vi.fr.1.gz: /usr/share/man/fr/man1/vim.1.gz
  slave vi.it.1.gz: /usr/share/man/it/man1/vim.1.gz
  slave vi.ja.1.gz: /usr/share/man/ja/man1/vim.1.gz
  slave vi.pl.1.gz: /usr/share/man/pl/man1/vim.1.gz
  slave vi.ru.1.gz: /usr/share/man/ru/man1/vim.1.gz
Current 'best' version is '/usr/bin/vim.basic'.

したがって、私の場合、viviによって提供される代替へのシンボリックリンクvim.basicです。

行う場合は、viが提供するパッケージを変更できます。 sudo update-alternatives --config vi


2

@ignisの回答に似ていますが、手順を減らしました。ファイルが別のファイルへのシンボリックリンクである場合にのみ機能します。パスに数千のシンボリックリンクがある場合は、元のファイルパスを簡単に取得できます。

symlnk-> symlnk-> symlnk-> symlnk-> symlnk-> symlnk-> symlnk-> symlnk-> symlnk-> symlnk-> symlnk-> symlnk-> symlnk- -> symlnk-> symlnk-> symlnk-> symlnk-> .................-->元のファイル

$ which vi
/usr/bin/vi
$ ls -l $(which vi)
lrwxrwxrwx 1 root root 20 Feb 22 20:14 /usr/bin/vi -> /etc/alternatives/vi  # So /usr/bin/vi is an symlink to /etc/alternatives/vi
$ dpkg -S $(readlink -f $(which vi))    
vim-tiny: /usr/bin/vim.tiny

したがってvi、パッケージに属していますvim-tiny

readlink -fファイルの正規パスを提供します(元のファイルパス)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.