刚装完 Ubuntu 或 CentOS,想改个配置文件,输入 vi /etc/hostname,结果一进去就懵了——按方向键没反应,想退出也卡住,最后只能关掉终端重来。很多人第一反应是:这破编辑器怎么这么难用?是不是系统出问题了?其实不是,只是你碰上了 Linux 里那个「看似古老、实则无处不在」的 vim(或 vi)。
Linux 发行版默认装的是 vi,但不一定是 vim
严格来说,POSIX 标准要求所有类 Unix 系统必须提供 vi 命令。所以几乎所有 Linux 发行版(包括 Debian、Ubuntu、CentOS、Fedora)在最小化安装时,都会预装一个符合标准的 vi 实现——但它未必是功能完整的 vim。
比如:Ubuntu 默认装的是 vim-tiny,它只包含基础 vi 功能,不支持语法高亮、多级撤销、鼠标操作;而 CentOS 7 默认装的是 vim-minimal,连 :set number 显示行号都不支持。它们都叫 vi 或 vim,但启动后输入 :version 就会看到一行写着 +tiny 或 +minimal。
那到底算不算「默认编辑器」?
从命令行为角度看,是的。当你执行 vi xxx、sudo nano 没装、或者运行 git commit 弹出编辑器时,系统调用的往往就是这个轻量版 vi/vim。它不挑环境、不依赖图形界面、小到能塞进嵌入式设备,几十年没换过核心逻辑——这才是它「默认」的真正原因。
不过注意:vim 和 vi 在很多系统里是同一个二进制文件的软链接:
$ ls -l /usr/bin/vi /usr/bin/vim
/usr/bin/vi -> vim
/usr/bin/vim -> /etc/alternatives/vim而 /etc/alternatives/vim 又可能指向 /usr/bin/vim.tiny 或 /usr/bin/vim.basic,取决于你装了哪个包。
想用完整版 vim?三步搞定
以 Ubuntu 为例:
sudo apt update
sudo apt install vim
sudo update-alternatives --config vim执行最后一行后,会列出几个选项(vim.tiny / vim.basic / vim.gtk 等),选编号 2(vim.basic)或 3(vim.gtk),回车确认。之后再敲 vim --version,就能看到 +clipboard +syntax +python3 这类特性了。
CentOS/RHEL 用户则用:
sudo yum install vim-enhanced或在新版中:
sudo dnf install vim-enhanced装完直接可用,无需切换,默认 vi 命令也会自动指向它。
顺手记个小技巧
如果你实在不想学 vim,又怕误操作,可以临时把默认编辑器换成 nano:
export EDITOR=nano
git commit # 这次就会弹 nano 了或者永久生效,加到 ~/.bashrc 里:
echo 'export EDITOR=nano' >> ~/.bashrc
source ~/.bashrc但别忘了:服务器没装 nano 的时候,vi/vim 依然是你唯一能靠得住的编辑器——毕竟,它连救援模式都能跑起来。