從 Ubuntu 遷移至 CentOS 後發現 Vim 無法正常顯示/輸入中文。經查證,預設編譯缺少 +multi_byte 與 +iconv 兩項特性。本文記錄完整編譯參數與設定檔配置。
vim --version | grep -E "multi_byte|iconv"
# 輸出:-multi_byte -iconv (負號表示未啟用)
# 1. 安裝建構依賴
yum install -y gcc make ncurses-devel libacl-devel gpm-devel
# 2. 取得原始碼
wget https://github.com/vim/vim/archive/v9.0.0000.tar.gz
tar xzf v9.0.0000.tar.gz
cd vim-9.0.0000
# 3. 關鍵配置參數
./configure --prefix=/usr \
--with-features=huge \
--enable-multibyte \
--enable-gui=auto \
--with-x
# 4. 編譯安裝
make -j$(nproc)
make install
關鍵參數說明:
--with-features=huge:啟用最大功能集 (含 multi_byte、iconv、python3、lua 等)--enable-multibyte:明確啟用多位元組編碼支援 (UTF-8、GBK、Big5 等)--enable-gui=auto:偵測 GTK2/3、Motif 自動啟用 GUI 版本vim --version | grep -E "multi_byte|iconv"
# 輸出:+multi_byte +iconv (正號表示已啟用)
" 放在檔案最前面
set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
set fileencodings=utf-8,ucs-bom,cp936,gb18030,big5,euc-jp,euc-kr,latin1
| 選項 | 作用 |
|---|---|
encoding | Vim 內部字符編碼 (核心設定,必為 utf-8) |
termencoding | 終端機編碼 (SSH 連線時通常同 encoding) |
fileencoding | 當前檔案儲存編碼 |
fileencodings | 自動偵測優先順序 (讀取檔案時嘗試) |
set termencoding:e ++enc=cp936 強制以 GBK 重讀,再 :set fileencoding=utf-8 存檔iocharset=utf8# CentOS/RHEL 8+
dnf install -y vim-enhanced # 預設已啟用 +multi_byte +iconv
# Ubuntu/Debian
apt install -y vim-gtk3 # 含 GUI 與完整特性
自行編譯適用於:需要最新版本、自訂功能組合、嵌入式環境裁剪。日常使用發布版預編譯套件即可滿足中文需求。