Którą aplikację otwiera polecenie vi?

9

Po wpisaniu viterminala wyświetlane są następujące dane wyjściowe

~                             VIM - Vi IMproved                                
~                                                                             
~                               version 7.3.547                                 
~                           by Bram Moolenaar et al.                            
~           Modified by [email protected]             
~                 Vim is open source and freely distributable                   
~                                                                               
~                        Help poor children in Uganda!                                                                             

Więc zgodnie z tym, vimusi być uruchomienie VIm.
Ale kiedy piszesz vim, daje

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>

To pokazuje, że vimnie jest zainstalowany.
Zwłaszcza man vii man vimuruchom te same strony podręcznika.

Co viwłaściwie uruchamia polecenie?

zarejestrowany użytkownik
źródło

Odpowiedzi:

18

Jest to vim-tiny: „Vi IMproved - ulepszony edytor vi - wersja kompaktowa”.

Zrobiłem to 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

Jak widać, vim nie jest zainstalowany (puste wyjście), vi jest dowiązaniem symbolicznym do / etc / alternatives / vi (patrz mechanizm alternatyw ), który jest dowiązaniem symbolicznym do /usr/bin/vim.tiny, który należy do pakietu vim -malutki.

ignis
źródło
Krótsza droga, aby znaleźć to byłobydpkg -S $(which vi)
psusi
@psusi dpkg-query nie znaleziono ścieżki.
Avinash Raj
3
dpkg -Snie będzie działać dla dowiązań symbolicznych.
Avinash Raj
8

Jeśli to zrobisz type vi:

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

Będziesz wiedział, gdzie jest plik binarny, teraz, jeśli:

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

Zapewnia to alternatywa vi, którą mogą poznać:

➜  ~  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'.

Tak więc w moim przypadku vijest to symboliczny link do alternatywy, viktórą zapewnia vim.basic.

Jeśli tak, możesz zmienić pakiet pod warunkiem vi sudo update-alternatives --config vi

Braiam
źródło
2

Jest podobny do odpowiedzi @ignis, ale zmniejszyłem liczbę kroków. Działa to tylko wtedy, gdy plik jest dowiązaniem symbolicznym do innego. Możesz łatwo uzyskać oryginalną ścieżkę do pliku, jeśli na ścieżce znajdują się tysiące dowiązań symbolicznych.

symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk- -> symlnk -> symlnk -> symlnk -> symlnk -> .................--> oryginalny plik

$ 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

Tak więc vinależy do pakietu vim-tiny.

readlink -fdaje kanoniczną ścieżkę do pliku ( Oryginalna ścieżka do pliku ).

Avinash Raj
źródło