Que aplicativo o comando vi abre?

9

Quando você digita vi no terminal, a seguinte saída é mostrada

~                             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!                                                                             

Então, de acordo com isso, vi deve estar iniciando VIm .
Mas quando você digita vim , ele dá

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>

Isso mostra que vim não está instalado.
Notavelmente, man vi e man vim lançam as mesmas páginas man.

Então, o que o comando vi realmente inicia?

    
por Registered User 15.03.2014 / 15:41

3 respostas

18

vim-tiny : "Vi IMproved - editor vi melhorado - versão compacta".

Eu fiz isso no 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

Como você pode ver, o vim não está instalado (saída vazia), o vi é um link simbólico para / etc / alternatives / vi (veja alternatives mechanism ), que é um link simbólico para /usr/bin/vim.tiny, que pertence ao pacote vim-tiny.

    
por ignis 15.03.2014 / 15:48
8

Se você fizer type vi :

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

Você saberá onde está o binário, agora se você fizer isso:

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

É fornecido pela alternativa vi , que pode ser conhecida por:

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

Portanto, no meu caso, vi é um link simbólico para a alternativa vi , que é fornecida por vim.basic .

Você pode alterar qual pacote fornecido vi se você fizer sudo update-alternatives --config vi

    
por Braiam 15.03.2014 / 15:47
2

É semelhante à resposta @ignis, mas reduzi as etapas. Ele só funciona, se o arquivo for um link simbólico para outro. Você pode obter o caminho do arquivo original facilmente, se ele tiver milhares de links simbólicos em seu caminho. / p>

symlnk - > symlnk - > symlnk - > symlnk - > symlnk - > symlnk - > symlnk - > symlnk - > symlnk - > ; symlnk - > symlnk - > symlnk - > symlnk - > symlnk - > symlnk - > symlnk - > symlnk - > ......... ........-- > arquivo original

$ 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

Portanto, vi pertence ao pacote vim-tiny .

readlink -f fornece o caminho canônico do arquivo ( caminho do arquivo original ).

    
por Avinash Raj 16.03.2014 / 05:33

Tags