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

我习惯于使用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 

我看到有人说他可以“设置fileencoding = UTF-8,然后更新和写入文件,它的工作原理”,但我似乎失去了一些东西,否则他感到困惑。 我不知道他是什么意思,然后“更新”。

从文档 :

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

所以你应该能够改变编码作为写命令的一部分。

请注意,有一个区别

 set encoding 

 set fileencoding 

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

使用vim来做这件事是完全可能的,为什么不简单地使用iconv呢? 我的意思是 – 加载文本编辑器只是做编码转换,似乎使用太大的锤子太小的指甲。

只是:

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

你完成了。

就像你的步骤,设置fileencoding应该工作。 不过,我想添加一个“set bomb”来帮助编辑将文件视为UTF8。

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

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

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

请参阅开始 --cmd