Ubuntu 預設命令列編輯器為 Nano,對習慣 Vim 的開發者極不友好。每次執行 crontab -e、visudo、git commit 等指令都會啟動 Nano,嚴重影響效率。本文提供三種修改預設編輯器為 Vim 的方法,依推薦程度排序。
sudo update-alternatives --config editor
輸出範例:
There are 4 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
* 0 /bin/nano 40 auto mode
1 /bin/nano 40 manual mode
2 /usr/bin/vim.basic 30 manual mode
3 /usr/bin/vim.tiny 15 manual mode
4 /usr/bin/vim.nox 25 manual mode
Press to keep the current choice[*], or type selection number: 2
輸入 2 選擇 vim.basic,即完成系統級切換。此法修改 /usr/bin/editor 符號連結,影響所有使用 editor 命令的程式(crontab、visudo、git 等)。
# Bash
echo 'export EDITOR=vim' >> ~/.bashrc
echo 'export VISUAL=vim' >> ~/.bashrc
source ~/.bashrc
# Zsh
echo 'export EDITOR=vim' >> ~/.zshrc
echo 'export VISUAL=vim' >> ~/.zshrc
source ~/.zshrc
# Fish
set -Ux EDITOR vim
set -Ux VISUAL vim
export EDITOR=vim
export VISUAL=vim
優先序:VISUAL > EDITOR > /usr/bin/editor。大多數程式遵循此順序。
sudo apt-get remove nano
移除 Nano 後,update-alternatives 會自動選擇下一優先級的編輯器(通常是 Vim)。缺點:移除系統預設套件可能破壞相依性、影響系統更新、移除針對 Nano 的安全性修補。
# 測試 crontab
crontab -e
# 測試 visudo
sudo visudo
# 測試 git
git config --global core.editor vim
git commit # 不加 -m 觸發編輯器
# 直接查看 editor 連結
ls -l /usr/bin/editor
# 應指向 /etc/alternatives/editor -> /usr/bin/vim.basic
# 僅 Git 使用 Vim
git config --global core.editor vim
# 僅 crontab 使用 Vim(透過別名)
alias crontab='EDITOR=vim crontab'
# systemd 編輯單元檔
export SYSTEMD_EDITOR=vim
systemctl edit nginx.service
| 套件 | 特性 | 適用場景 |
|---|---|---|
| vim-tiny | 極精簡,無語法高亮、無插件支援 | 極小容器、嵌入式 |
| vim.basic / vim | 標準版,含語法高亮、基本插件 | 通用推薦 |
| vim.nox | 無 GUI 依賴,支援腳本語言(Python、Lua、Perl) | 伺服器、無圖形環境 |
| vim-gtk3 / vim-gnome | 含 GUI(gvim)、剪貼簿整合 | 桌面環境 |
伺服器環境建議安裝 vim-nox 或 vim.basic。
修改 Ubuntu 預設編輯器為 Vim,**首選 update-alternatives --config editor 系統級配置**,次選環境變數 EDITOR=vim 使用者級配置,**不建議移除 Nano**。驗證以 crontab -e 為準。配合 git config --global core.editor vim,即可在所有命令列編輯場景享受 Vim 高效操作。