Когда вы печатаете 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
самом деле запускает команда?
dpkg -S $(which vi)
dpkg -S
не будет работать для символических ссылок.Если вы делаете
type vi
:Теперь вы будете знать, где находится бинарный файл:
Это обеспечивается альтернативой
vi
, которая может быть известна:Так, в моем случае,
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 -> .................--> оригинальный файл
Так что
vi
относится к пакетуvim-tiny
.readlink -f
дает вам канонический путь к файлу ( оригинальный путь к файлу ).источник