如何使用vim更改文件的编码?

时间:2009-04-22 16:16:35

标签: vim unicode

我习惯使用vim来修改文件的行结尾:

$ file file
file: ASCII text, with CRLF line terminators
$ vim file
:set ff=mac
:wq
$ file file
file: ASCII text, with CR line terminators

是否可以使用类似的过程来更改文件的unicode编码?我正在尝试以下方法,但这不起作用:

$ file file.xml
file.xml: Unicode text, UTF-16, little-endian
$ vim file
:set encoding=utf-8
:wq
$ file file.xml
file.xml: Unicode text, UTF-16, little-endian

我看到someone say他可以“设置fileencoding = utf-8,然后更新并编写文件,它可以正常工作”,但我似乎错过了一些东西,否则他很困惑。我不知道他的意思是“然后更新。”

5 个答案:

答案 0 :(得分:238)

来自doc

  

:写++ enc = utf-8 russian.txt

因此,您应该能够在编写命令时更改编码。

答案 1 :(得分:155)

请注意

之间存在差异
set encoding

set fileencoding

在第一种情况下,您将更改终端中显示的输出编码。在第二种情况下,您将更改所写文件的输出编码。

答案 2 :(得分:77)

虽然使用vim完全可以,但为什么不简单地使用iconv?我的意思是 - 加载文本编辑器只是为了进行编码转换,似乎使用太大的锤子来制作太小的钉子。

只需:

iconv -f utf-16 -t utf-8 file.xml > file.utf8.xml

你已经完成了。

答案 3 :(得分:51)

就像您的步骤一样,设置fileencoding应该可行。但是,我想添加一个“set bomb”来帮助编辑将文件视为UTF8。

$ vim file
:set bomb
:set fileencoding=utf-8
:wq

答案 4 :(得分:4)

在读取文件之前,仅在命令行上更改encoding可能很有用:

rem On MicroSoft Windows
vim --cmd "set encoding=utf-8" file.ext
# In *nix shell
vim --cmd 'set encoding=utf-8' file.ext

请参阅starting--cmd