使用vim转换文件编码
使用命令:set fileencoding=utf-8設置目標文件編碼,然后保存
附:vim編碼原理
?
Vim 有四個跟字符編碼方式有關的選項,encoding、fileencoding、fileencodings、termencoding (這些選項可能的取值請參考 Vim 在線幫助 :help encoding-names),它們的意義如下:
encoding: Vim 內部使用的字符編碼方式,包括 Vim 的 buffer (緩沖區)、菜單文本、消息文本等。用戶手冊上建議只在 .vimrc 中改變它的值,事實上似乎也只有在 .vimrc 中改變它的值才有意義。
fileencoding: Vim 中當前編輯的文件的字符編碼方式,Vim 保存文件時也會將文件保存為這種字符編碼方式 (不管是否新文件都如此)。
fileencodings: Vim 啟動時會按照它所列出的字符編碼方式逐一探測即將打開的文件的字符編碼方式,并且將 fileencoding 設置為最終探測到的字符編碼方式。因此最好將 Unicode 編碼方式放到這個列表的最前面,將拉丁語系編碼方式 latin1 放到最后面。
termencoding: Vim 所工作的終端 (或者 Windows 的 Console 窗口) 的字符編碼方式。這個選項在 Windows 下對我們常用的 GUI 模式的 gVim 無效,而對 Console 模式的 Vim 而言就是 Windows 控制臺的代碼頁,并且通常我們不需要改變它。
好了,解釋完了這一堆容易讓新手犯糊涂的參數,我們來看看 Vim 的多字符編碼方式支持是如何工作的。
Vim 啟動,根據 .vimrc 中設置的 encoding 的值來設置 buffer、菜單文本、消息文的字符編碼方式。
讀取需要編輯的文件,根據 fileencodings 中列出的字符編碼方式逐一探測該文件編碼方式。并設置 fileencoding 為探測到的,看起來是正確的 (注1) 字符編碼方式。
對 比 fileencoding 和 encoding 的值,若不同則調用 iconv 將文件內容轉換為 encoding 所描述的字符編碼方式,并且把轉換后的內容放到為此文件開辟的 buffer 里,此時我們就可以開始編輯這個文件了。注意,完成這一步動作需要調用外部的 iconv.dll (注2),你需要保證這個文件存在于 $VIMRUNTIME 或者其他列在 PATH 環境變量中的目錄里。
編輯完成后保存文件時,再次對比 fileencoding 和 encoding 的值。若不同,再次調用 iconv 將即將保存的 buffer 中的文本轉換為 fileencoding 所描述的字符編碼方式,并保存到指定的文件中。同樣,這需要調用 iconv.dll
由于 Unicode 能夠包含幾乎所有的語言的字符,而且 Unicode 的 UTF-8 編碼方式又是非常具有性價比的編碼方式 (空間消耗比 UCS-2 小),因此建議 encoding 的值設置為 utf-8。這么做的另一個理由是 encoding 設置為 utf-8 時,Vim 自動探測文件的編碼方式會更準確 (或許這個理由才是主要的 。 我們在中文 Windows 里編輯的文件,為了兼顧與其他軟件的兼容性,文件編碼還是設置為 GB2312/GBK 比較合適,因此 fileencoding 建議設置為 chinese (chinese 是個別名,在 Unix 里表示 gb2312,在 Windows 里表示 cp936,也就是 GBK 的代碼頁)。
總結
以上是生活随笔為你收集整理的使用vim转换文件编码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最佳vim技巧
- 下一篇: VIM 使用技巧(常用提取)