vi命令打开哪个应用程序?


9

当您输入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 viman vim启动相同的手册页。

那么该vi命令实际启动了什么?

Answers:


18

它是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

如您所见,未安装vim(空输出),vi是/ etc / alternatives / vi的符号链接(请参见替代机制),这是/usr/bin/vim.tiny的符号链接,该符号链接属于软件包vim。 -小。


找到这个的更短方法是dpkg -S $(which vi)
psusi 2014年

@psusi dpkg-query找不到路径。
Avinash Raj

3
dpkg -S不适用于符号链接。
Avinash Raj

8

如果您这样做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

它是由Alternative提供的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


2

它类似于@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为您提供文件的规范路径(Original file path)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.