vi/vim/view /etc/alternatives 循环

vi/vim/view /etc/alternatives 循环

我想了解可执行文件vi和之间的区别vimwhich这让我找到了/usr/bin/,在那里我发现了以下符号链接:

/usr/bin/vi -> /etc/alternatives/vi
/usr/bin/vim -> /etc/alternatives/vim

转到/etc/alternatives/,我看到这些名称链接回/usr/bin/

/etc/alternatives/vi -> /usr/bin/vim.gnome
/etc/alternatives/vim -> /usr/bin/vim.gnome

在好奇了为什么会这样之后,我得出的结论是,两者都指向同一个可执行文件,因此它们完全相同。

然而,那一刻一些东西引起了我的注意;这个链接:

/etc/alternatives/view -> /usr/bin/vim.gnome

附有此链接:

/usr/bin/view -> /etc/alternatives/view

现在,这很奇怪,因为我知道运行时view它与运行时不同vim;它打开作为参数给出的文件的只读模式。vim.gnome二进制是否以某种方式知道执行时链接到它的内容?

(顺便说一下,也有同样的问题vimdiff

你对此有什么解释吗?

答案1

解释如下man vim

Vim 的行为有所不同,具体取决于命令的名称(可执行文件可能仍然是同一个文件)。

vim:
“正常”方式,一切都是默认的。

前任:
从 Ex 模式开始。使用“:vi”命令进入普通模式。也可以使用“-e”参数。

看法:
以只读模式启动。您将无法写入文件。也可以使用“-R”参数来完成。

gvim gview:
GUI 版本。启动一个新窗口。也可以使用“-g”参数。

evim eview:
简易模式下的 GUI 版本。启动一个新窗口。也可以使用“-y”参数。

rvim rview rgvim rgview
与上述类似,但有限制。无法启动 shell 命令或暂停 Vim。也可以使用“-Z”参数来实现。

换句话说,vim 将检测它被调用时的名称并采取相应的行动。另一个根据它被运行的名称而行为不同的程序示例是,bash如果被调用,它将充当最小的 POSIX shell sh(请参阅 中的 INVOCATION man bash)。

相关内容