当我vi
在终端中输入内容时,它会显示以下内容:
请注意,它说 vim 不是 vi,我确信我还没有下载 vim,这实际上是 vi 不是 vim:例如箭头键打印 ABCD 而不是移动。
答案1
虽然原作vi
是仍然可用,我认为它在当前的 linux 或 BSD 发行版上用得不多;1显然它在十年前被封存后于 2000 年被重新推出,最后一次发布是在 2005 年。
有各种实施vi 周围,这实际上是现在POSIX规范。其中包括nvi
和elvis
,但最流行的可能是vim
。
在使用 vim 的系统上,vi
将只是一个到它的软链接,当以这种方式调用时,它应该以 vi 兼容模式启动,因此系统具有符合 POSIX 规范的东西。但是,这不会改变程序的实际名称,即 vim,这就是您在标题屏幕上看到的内容。
1.虽然是可在 Arch 上使用, 至少。您也可能在其他地方找到它。
答案2
如果您使用的是 Debian,则由于in的条目vi
而打开。让我为你打破这个局面。vim
vi
/etc/alternatives
当你这样做时ls -l /usr/bin/vi
:
lrwxrwxrwx 1 root root 20 Jul 1 2014 /usr/bin/vi -> /etc/alternatives/vi
正如您所看到的,vi
二进制文件是到 的符号链接/etc/alternatives/vi
。
现在如果你这样做ls -l /etc/alternatives/vi
:
lrwxrwxrwx 1 root root 18 Jul 1 2014 /etc/alternatives/vi -> /usr/bin/vim.basic
它是到二进制文件的符号链接vim.basic
。
所以,简而言之:/usr/bin/vi
→→/etc/alternatives/vi
/usr/bin/vim.basic
因此,如果您输入vi
shell,vim.basic
就会打开。
/etc/alternatives
您可以通过命令检查和更改中的值update-alternatives
,但我认为您原来的问题已经得到解答。
答案3
在许多 Linux 系统上,默认版本vi
实际上是 Vim 的一个版本,通常是使用比安装 Vim 软件包所获得的选项更少的选项(没有内置 perl 和 python 支持、没有 GUI 等)进行编译的版本。
例如,箭头键打印 ABCD 而不是移动。
这是由于终端仿真器和 Vim 对所使用的 terminfo/termcap 条目的理解不一致造成的。一般来说,这是由于 Vim 发送了“启用”箭头键的代码(实际上将它们置于发送而不是 的t_ks
模式),但预期的键用于其他模式(例如向上箭头)。尝试更改 TERM 环境变量或 vim 选项(或在 vimrc 中可能有效,尽管它可能会禁用颜色),使用不同的终端,或者作为最后的手段添加到文件中以禁用此模式切换。这是 vim 帮助文件中建议的解决方案,位于.<1b>OA
<1b>[A
t_ku=<1b>[A
set term=builtin_ansi
builtin_xterm
set t_ks= t_ke=
.vimrc
:help cs7-problem
这种行为是不是无论如何,这表明它“实际上是 vi 而不是 vim”——大多数现代“正版”版本的 vi 或 nvi 也支持箭头键。
答案4
请注意,在几个基于 Debian 的发行版中,/bin/vi 中的符号链接是“busybox”,而不是 vim。在某些情况下,这可能没问题,但 busybox 提供的功能只是最低限度的集合,并且由于某些原因似乎会因 busybox 的编译方式而异。
如果安装了 vim,它通常会替换 busybox 链接——但有时并非如此——busybox 可能仍然链接到 /bin/vi,而 vim 链接到 /usr/bin/vi——所以这取决于 PATH 环境变量首先找到的。典型的用户可能会得到“vim”,但当以“root”身份登录时,会得到 busybox vi。
最好检查并查看您正在使用哪个 vi 链接(哪个 vi)以及它链接到的内容。