Когда вы набираете 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
?
Это vim-tiny
: "Vi IMproved - улучшенный редактор vi - компактная версия".
я сделал это на 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
, Как Вы видите, энергия не установлена (пустой вывод), vi является символьной ссылкой на/etc/alternatives/vi (см. механизм альтернатив ), который является символьной ссылкой на/usr/bin/vim.tiny, который принадлежит для упаковки крошечный энергией.
Если Вы делаете 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
.
можно измениться, какой пакет, обеспеченный vi, если Вы делаете sudo update-alternatives --config vi
Это подобно ответу @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
дает Вам канонический путь файла ( Исходный путь к файлу ).