我注意到,大多数时候,当使用“标准英语”以外的一些编码时,vim不能正确识别和显示字符。这是最容易看到打开一些ascii图形,或类似的文件关闭网络,其中使用cp437代码页。有没有办法让vim在打开文件时检查编码,并用正确的编码打开它?你使用什么编码,作为最“可移植”的(最多的用户将有最少的问题)?
pcww981p1#
Vim需要检测编码,这将是一个问题,因为文件通常不会显式地声明它们的编码(一个明显的例外是标头中带有编码属性的XML文件)。您可以强制Vim重新加载一个具有不同编码的文件,例如:
:e ++enc=cp437
并且如果需要,您可以在.vimrc中设置默认编码。这个页面有更多的信息和链接,特别是wrt. editing Unicode。UTF-8是最广泛使用的编码,也是你应该使用的默认编码。
db2dz4w82#
你可以使用一个vim modeline来设置文件的编码,这只是一个注解,在文件的前五行中,以vi: set fileencoding=cp437开头。您也可以以“vim:”开头,而不是“vi:set ',但后者使它与更多的编辑器兼容。您肯定需要在这些前缀和' fileencoding '之间留有空格,或者您想要设置的任何选项。不过,fileencoding选项应该可以解决您的问题。所以,在Python或.rc文件中,你可以把这个放在文件的顶部:
vi: set fileencoding=cp437
fileencoding
# vi: set fileencoding=cp437
在Java、C、C++、JavaScript等语言中,可以这样写:
// vi: set fileencoding=cp437
如需详细信息,请在vim中输入:help modeline。
:help modeline
zte4gxcn3#
您可以在. vimrc中设置变量“fileencodings”。这是一个字符编码列表,在开始编辑一个已有文件时,Vim会尝试使用第一个提到的字符编码。如果检测到错误,则会尝试列表中的下一个。如果找到一个有效的编码,则会将'fileencoding'设置为该编码。如果所有编码都无效,则会将'fileencoding'设置为空字符串,这意味着使用'encoding'的值。请参阅:help filencodings如果您经常使用cp437或cp1252,则可以在此处添加:
:help filencodings
set fileencodings=ucs-bom,utf-8,cp1252,default,latin9
wfveoks04#
你可以使用unicode对文件进行编码,并在文件中设置一个Byte Order Mark(BOM)。这将使vim正确地处理它,但一些编译器和程序可能会遇到麻烦。甚至像cat这样的基本shell命令在某些情况下也可能会出现错误。为此,请在vim中键入以下内容:
cat
:set fileencoding=utf-8 :set bomb :w
如需详细信息,请键入:
:help bomb
6ioyuze25#
在.vimrc的末尾添加:(如果需要,可以用“latin 1”替换“utf-8”)
if len(&fenc) == 0 silent! exe "e! ++enc=utf-8" endif
5条答案
按热度按时间pcww981p1#
Vim需要检测编码,这将是一个问题,因为文件通常不会显式地声明它们的编码(一个明显的例外是标头中带有编码属性的XML文件)。
您可以强制Vim重新加载一个具有不同编码的文件,例如:
并且如果需要,您可以在.vimrc中设置默认编码。
这个页面有更多的信息和链接,特别是wrt. editing Unicode。UTF-8是最广泛使用的编码,也是你应该使用的默认编码。
db2dz4w82#
你可以使用一个vim modeline来设置文件的编码,这只是一个注解,在文件的前五行中,以
vi: set fileencoding=cp437
开头。您也可以以“vim:”开头,而不是“vi:set ',但后者使它与更多的编辑器兼容。您肯定需要在这些前缀和' fileencoding '之间留有空格,或者您想要设置的任何选项。不过,
fileencoding
选项应该可以解决您的问题。所以,在Python或.rc文件中,你可以把这个放在文件的顶部:
在Java、C、C++、JavaScript等语言中,可以这样写:
如需详细信息,请在vim中输入
:help modeline
。zte4gxcn3#
您可以在. vimrc中设置变量“fileencodings”。
这是一个字符编码列表,在开始编辑一个已有文件时,Vim会尝试使用第一个提到的字符编码。如果检测到错误,则会尝试列表中的下一个。如果找到一个有效的编码,则会将'fileencoding'设置为该编码。如果所有编码都无效,则会将'fileencoding'设置为空字符串,这意味着使用'encoding'的值。
请参阅
:help filencodings
如果您经常使用cp437或cp1252,则可以在此处添加:
wfveoks04#
你可以使用unicode对文件进行编码,并在文件中设置一个Byte Order Mark(BOM)。这将使vim正确地处理它,但一些编译器和程序可能会遇到麻烦。甚至像
cat
这样的基本shell命令在某些情况下也可能会出现错误。为此,请在vim中键入以下内容:
如需详细信息,请键入:
6ioyuze25#
在.vimrc的末尾添加:(如果需要,可以用“latin 1”替换“utf-8”)