Какое приложение открывает команду vi?

Когда вы набираете 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 vi и man vim запускают одни и те же страницы руководства.

Итак, что действительно запускает команда vi?

1
задан 15 March 2014 в 20:47

2 ответа

Если вы делаете 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'.

Итак, в моем случае vi является символической ссылкой на альтернативу vi, которая предоставляется vim.basic.

[d4 ] Вы можете изменить, какой пакет предоставлен vi, если вы sudo update-alternatives --config vi

8
ответ дан 24 May 2018 в 10:46

Это похоже на ответ @ignis, но я уменьшил шаги. Он работает только, если файл является символической ссылкой на другую. Вы можете легко получить исходный путь к файлу, если на нем есть тысячи символических ссылок. [ ! d0]

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 дает вам канонический путь к файлу (исходный путь к файлу).

2
ответ дан 24 May 2018 в 10:46

Другие вопросы по тегам:

Похожие вопросы: