我有一个带 BOM 的 UTF-16 文件。我已将文件编码设置为:
set fencs=ucs-bom,utf-16le,utf-8,default,latin1
但是由于一行中有一个字符,vim 不会自动检测 UTF-16,而是默认使用 latin1,并带有所有^@
空标记。强制 vim 将文件读取为 UCS ( :e ++enc=ucs-bom
) 时,它会成功读取文件,但会报告“第 {nn} 行出现转换错误”,但除了该字符之外,文件的其余部分都已正确转换。如果删除了坏字符,则文件将被正确解释和显示。
有没有办法让 vim 忽略转换错误?每次出现有效的 BOM 时强制编码有点烦人。
答案1
转换错误意味着数据已损坏(或在写入文件后损坏),因此没有全局设置来忽略这些错误。 在您的例子中,这可能只是一个无关紧要的字符,但在另一种情况下,它可能会默默地使整个文件变得无用。
++bad=...
您可以通过参数 (cp. )来抑制转换错误:help ++bad
,该参数:edit
就像++enc=...
如果您确实想抑制所有转换错误,您必须编写自定义:EditBad
命令:
:command! -bar -bang -nargs=* -complete=file EditBad edit<bang> ++bad=? <args>