对于最小化安装的 Debian11.7 ,起初有一个问题给我造成了困扰:那就是当我使用 vi 编辑文本文件时,我无法通过键入“i”来切换到输入模式,或者说,其实的确进入了输入模式,但是底部行并没有显式进行提示,另外,我无法使用 Backspace 键来删除字符,Delete 键是可以删除字符的,不过这不符合我正常使用 vi 的编辑习惯。我所说的我正常使用的 vi 实际上包含在 vim 中(我不确定这样描述是否恰当),至少在 CentOS7.6/7.8/7.9 是这样的,在 CentOS7.8 中,执行vi -h
得到的返回首行是:”VIM – Vi IMproved 7.4 (2013 Aug 10, compiled Dec 15 2020 16:43:23)”,在 Debian11.7 中,返回是类似的,不一样的是,Debian11.7 中 /usr/bin/vi 是指向 /etc/alternatives/vi 的软链接,而 /etc/alternatives/vi 又是指向 /usr/bin/vim.tiny 的软链接,不过这不重要,重要的是,vim.tiny 的配置文件 /etc/vim/vimrc.tiny 中设置了兼容模式,也就是说,该 vim.tiny 兼容了 vi,这使得其原本的某些特性不能被使用,这包括了我在开头所说的。为了关闭兼容模式,可以在/etc/vim/vimrc.tiny 文件中添加set nocompatible
,这样会解决一部分问题,但是并没有完全解决我的问题,情况是这样的:再次编辑文件时,我仍然无法按照我的心意使用 Backspace 键进行无限制的删除,我不太好精确地描述这种限制,但是它确实存在。想要解除这种限制,需要在/etc/vim/vimrc.tiny 文件中添加set backspace=2
总结来说,对于最小化安装的 Debian11.7,想要以与 CentOS7.6/7.8/7.9 相同的方式使用 vi,可以在 /etc/vim/vimrc.tiny 中添加两条配置:
set nocompatible
set backspace=2
可以用 echo 的方式添加:
echo "set nocompatible" >> /etc/vim/vimrc.tiny
echo "set backspace=2" >> /etc/vim/vimrc.tiny
或者如果你的 apt 源是可用的,你可以安装 vim,这样 /usr/bin/vi 的最终指向的文件会被更改,上面所述的问题同样可以得到解决。
我认为这属于一个历史遗留问题,如果你没有特别的兴趣,完全没必要探究这究竟是怎么一回事。只需要了解解决办法就足够了。
参考资料
[1] Vim 编辑器的兼容模式.https://linux.cn/article-8224-1.html
[2] Debian11.7 的镜像下载链接.https://cdimage.debian.org/cdimage/archive/11.7.0/amd64/iso-cd/debian-11.7.0-amd64-netinst.iso