我一直试图通过在$ HOME / .vimrc文件中写下以下行来更改vim的默认编码
set fileencodings=utf-8
set fileencoding=utf-8
据我所知,第一行使vim尝试使用utf-8编码读取文件,第二行使vim保存文件始终使用utf-8编码。但是当我写一个名为example.txt的文件并且没有写任何特殊字符时,我将其保存以验证
file -i example.txt
输出:
example.txt: text/plain; charset=us-ascii
如果我在example.txt上写了特殊字符,那么它会正确显示
example.txt: text/plain; charset=utf-8
但即使文件没有特殊字符,我仍希望编码为utf-8。为什么不起作用?
答案 0 :(得分:3)
file
查看文件的内容以确定其编码。如果它只找到ASCII字符,则只能断定该文件是ASCII。
ASCII是UTF-8的子集(许多其他编码的基础),任何程序都无法判断123abc
是否是除ASCII以外的任何内容。
当然,如果您向该文件添加UTF-8字符,file
会发现它们并采取相应的行动。
所以...在“问题”的Vim方面。
fileencodings
是Vim在阅读文件时考虑的编码列表。
fileencoding
是Vim在编写特定文件时使用的编码。
两个选项的默认值取决于encoding
的值,该值在启动时设置。
“理想”encoding
是utf-8
。有了这个,你就可以获得fileencodings
:ucs-bom,utf-8,default,latin1
的合理列表,以及fileencoding
utf-8
的合理值,只要你留在这里,它几乎可以保证顺畅的体验UTF-8的范围。
请参阅:
:help 'encoding'
:help 'fileencodings'
:help 'fileencoding'