让 vim 在读取文件时忽略转换错误

让 vim 在读取文件时忽略转换错误

我有一个带 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>

相关内容