遠(yuǎn)程登錄linux服務(wù)器用vim在終端下編輯查看文件經(jīng)常會遇見各種中文亂碼問題。
做如下設(shè)置可基本解決vim中文亂碼問題
首先查看系統(tǒng)對中文的支持
locale -a | grep zh_CN
輸出樣例如下
zh_CN.gbk
zh_CN.utf8
vim 只能正確識別列表中的中文編碼文件,如需識別其他編碼類型的中文文件,則需要做系統(tǒng)升級
vi ~/.bash_profile
文件末尾添加
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
在線視頻教程推薦:linux視頻教程
vim與編碼相關(guān)的參數(shù):
1、eencoding,用于配置打開文件和保存文件的編碼,但只能有一個(gè)值,只適合少數(shù)文件都是同種編碼的環(huán)境,所以一般不使用
2、fileencodings, 從名字上看就知道是fileencoding的增強(qiáng)版,可以配置多種不同的編碼,常見的配置為,配置好之后,列表中的文本編碼只要合法,都能被vim正確 的讀取,建議配置:set fileencodings=utf-bom,utf-8,gbk,gb2312,gb18030,cp936,latin1
3、encoding,vim內(nèi)部編碼,vim讀取文件之后,但并不以讀取文件的編碼來處理,而是會轉(zhuǎn)換成內(nèi)部編碼的格式,這個(gè)編碼一般與操作系統(tǒng)相關(guān),linux下utf-8居多,中文windows下則是gdk,建議配置:set encoding=utf-8
4、termencoding,vim輸出的編碼,輸出指輸出到操作系統(tǒng)或命令終端等,默認(rèn)與操作系統(tǒng)的語言編碼一致,如果使用linux命令終端,建議終端和linux系統(tǒng)配置相同的編碼,然后配置相同的termencoding,否則顧全了vim就顧不上shell,不過如果shell不存在中文名文件,則配置終端和 termencoding一致即可,對于windows,能自動的識別gbk和utf-8,不用特殊配置,建議配置:set termencoding=utf-8
5、fileformats,用于區(qū)分操作系統(tǒng),主要是回車rn的區(qū)別,建議配置:set fileformats=unix,dos
常見的亂碼有以下幾種情形:
(1)將windows環(huán)境下的文件rz到linux下時(shí)文件出現(xiàn)亂碼
解決方案:
1、在rz之前使用notepad++將文件格式轉(zhuǎn)化為UTF-8無BOM格式或者ANSI編碼格式;
2、set encoding=utf-8;
(2)secureCRT或者xterm2編輯環(huán)境中出現(xiàn)亂碼,只需在會話選項(xiàng)中調(diào)節(jié)字符編碼為GB2312或者UTF-8
(3)當(dāng)對日志文件進(jìn)行vim編輯時(shí)出現(xiàn)亂碼,大多數(shù)情況下是因?yàn)槿罩疚募母袷綖镚B2312。
解決方案:1.set encoding=GB2312;2如果方案1不起作用的話,調(diào)整secureCRT或者xterm2的編輯環(huán)境為GB2312
(4)wget下載文件名亂碼
解決方案:一般情況下加上–restrict-file-names=nocontrol,例如wget –restrict-file-names=nocontrol -m www.xxx.com/
(5)cat文件正常,vim文件不正常
解決方案:直接寫入/etc/vim/vimrc ,最后一行加上
set fileencodings=gb2312,utf-8
set fileencoding=gb2312
set termencoding=utf-8