当您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!
Run Code Online (Sandbox Code Playgroud)
所以根据这个,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>
Run Code Online (Sandbox Code Playgroud)
这说明vim没有安装。
值得注意的是man vi并man vim启动相同的手册页。
那么该vi命令实际上启动了什么?
ign*_*nis 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
Run Code Online (Sandbox Code Playgroud)
如您所见,vim 未安装(空输出),vi 是 /etc/alternatives/vi 的符号链接(请参阅替代机制),它是 /usr/bin/vim.tiny 的符号链接,属于包 vim -微小的。
如果你这样做type vi:
? ~ type vi
vi is /usr/bin/vi
Run Code Online (Sandbox Code Playgroud)
你会知道二进制文件在哪里,现在如果你这样做:
? ~ ls -l /usr/bin/vi
lrwxrwxrwx. 1 root root 20 jun 22 2013 /usr/bin/vi -> /etc/alternatives/vi
Run Code Online (Sandbox Code Playgroud)
它由替代提供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'.
Run Code Online (Sandbox Code Playgroud)
因此,就我而言,vi是指向vi由vim.basic.
如果您这样做,您可以更改提供 vi 的包 sudo update-alternatives --config vi