linux默认编辑器需三处同步配置:editor环境变量(影响crontab -e、sudoedit等)、update-alternatives系统链(影响/usr/bin/editor调用)、工具专属设置(如~/.selected_editor和git config --global core.editor)。

Linux 默认编辑器不是单一配置项,改一个地方往往不生效——必须同时处理 EDITOR 环境变量、update-alternatives 系统链、以及特定工具(如 crontab、git)的独立设置。
设置 EDITOR 环境变量(影响最广)
这是绝大多数命令行工具(crontab -e、sudoedit、visudo 用 sudoedit 时)实际读取的配置。它只对当前用户生效,且依赖 shell 启动方式。
- 先确认
nano是否已安装并可用:which nano,输出应为类似/usr/bin/nano - 临时生效(当前终端):
export EDITOR=nano - 永久生效:把
export EDITOR=nano追加到~/.bashrc(bash 用户)或~/.zshrc(zsh 用户),然后运行source ~/.bashrc -
visudo默认忽略EDITOR,但换成sudoedit就会尊重它——这点常被忽略
运行 update-alternatives --config editor(系统级覆盖)
这个命令修改的是 Debian/Ubuntu 系发行版中 /usr/bin/editor 这个符号链接指向的目标,影响调用该路径的程序(比如某些桌面环境“右键 → 编辑”动作),但对 crontab -e 无效——它优先看 EDITOR。
- 执行:
sudo update-alternatives --config editor - 如果列表里没有
nano,说明它没注册进 alternatives:先运行sudo update-alternatives --install /usr/bin/editor editor /usr/bin/nano 40 - 选中
nano对应的编号后回车,系统级默认就变了 - 注意:这个设置会被用户的
EDITOR覆盖,所以两者要配平
检查 crontab 和 git 的特殊逻辑
即使你设好了 EDITOR 和 update-alternatives,crontab -e 第一次运行时仍会弹出交互式选择,并把结果写进 ~/.selected_editor;而 git 根本不看 EDITOR,得单独配。
- 查
crontab实际用哪个:cat ~/.selected_editor,如果内容不是nano,直接编辑该文件,把SELECTED_EDITOR行改成SELECTED_EDITOR="/usr/bin/nano" - 给
git单独设:git config --global core.editor "nano -w",-w关闭自动换行,避免破坏 commit message 格式 - 某些老发行版(如 CentOS Stream)默认只有
vim-tiny,但没装nano—— 先sudo dnf install nano或sudo apt install nano
真正麻烦的不是改哪一项,而是不同工具各自认一套规则;~/.selected_editor 和 git config 这两个点最容易漏掉,一重启终端就回退到 vi。











