首选update-alternatives --config editor,因其通过/usr/bin/editor符号链接统一调度系统命令(如visudo),不受editor环境变量影响;再配合editor=vim设置用户级变量,实现双重覆盖。

直接改系统级默认编辑器,用 update-alternatives 最稳妥;只改当前用户,设 EDITOR 环境变量就行。别只改 .bashrc 就以为万事大吉——很多系统命令(比如 visudo、git commit)根本不看它。
为什么 update-alternatives --config editor 是首选
Ubuntu 用 /usr/bin/editor 这个符号链接统一调度所有需要调用编辑器的系统命令。这个链接由 update-alternatives 管理,不是靠环境变量驱动的。哪怕你 export EDITOR=vim,sudo visudo 还是可能掉进 nano 里。
- 运行
sudo update-alternatives --config editor,会列出所有已注册的编辑器选项(常见有/usr/bin/vim.basic、/usr/bin/vim.tiny、/bin/nano) - 选中
vim.basic(不是vim.tiny,后者缺语法高亮、多窗口等关键功能) - 确认后,
/usr/bin/editor会指向/etc/alternatives/editor→ 最终指向/usr/bin/vim.basic - 验证:执行
ls -l /usr/bin/editor,输出应含vim.basic;再试sudo visudo,应该直接进 vim
EDITOR 环境变量该设成什么
设 EDITOR 只影响部分命令(如 git commit、crontab -e),但它的值必须是可执行文件路径或命令名,且不能带参数。设错会导致命令静默失败或回退到 nano。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 正确写法:
export EDITOR=vim或export EDITOR=/usr/bin/vim(推荐前者,依赖$PATH查找) - 错误写法:
export EDITOR="vim -u ~/.vimrc"(带参数会被忽略)、export EDITOR=/usr/bin/vim.basic(路径硬编码易出错) - 生效范围:仅当前 shell 及其子进程;要永久生效,追加到
~/.bashrc或~/.profile,然后source ~/.bashrc - 注意:root 用户的
EDITOR是独立的,sudo -i后需单独设置
如果 vim.basic 不在 update-alternatives 列表里
说明 vim 完整版没被注册进 alternatives 系统,常见于只装了 vim-tiny 或手动编译安装的 vim。
- 先确认是否装了完整版:
apt list --installed | grep vim,确保有vim或vim-runtime - 若没装:
sudo apt install vim(自动注册vim.basic) - 若已装但未注册:手动注册
sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim.basic 100 - 注册后仍不显示?检查路径是否准确:
ls /usr/bin/vim*,可能是vim.gtk或vim.nox,对应调整路径
别漏掉 /etc/environment 这个坑
某些服务(如 systemd 用户单元、GUI 应用启动的终端)不读 .bashrc,也不走 update-alternatives,只认全局环境变量。这时候 /etc/environment 就起作用了。
- 编辑该文件:
sudo nano /etc/environment - 添加一行:
EDITOR=vim(注意:这里不写export,也不用引号,格式是KEY=VALUE) - 保存后需重启或重新登录才生效;对 GUI 环境尤其重要
- 风险提示:改这里会影响所有用户,包括 root;若 vim 未全局可用(比如只装在某用户 home 下),会导致系统命令崩溃
真正麻烦的不是改哪一项,而是不同命令走不同路径:有的查 /usr/bin/editor,有的读 EDITOR,有的甚至硬编码调用 nano。先用 update-alternatives 拿下系统级,再补 EDITOR 覆盖用户级,最后按需填 /etc/environment —— 三者不是替代关系,是叠加生效的。










