Eu tenho um arquivo UTF-16 com uma BOM. Eu configurei codificações de arquivo para:
set fencs=ucs-bom,utf-16le,utf-8,default,latin1
No entanto, devido a um caractere em uma linha, o vim não detecta automaticamente o UTF-16 e o padrão é latin1, com todos os ^@
marcadores nulos. Ao forçar o vim a ler o arquivo como UCS ( :e ++enc=ucs-bom
), ele lê o arquivo com sucesso, mas relata "ERRO DE CONVERSÃO na linha {nn}", mas além daquele caractere, o restante do arquivo foi convertido corretamente. Se o caractere incorreto for removido, o arquivo será interpretado e exibido corretamente.
Existe alguma maneira de fazer com que o vim ignore erros de conversão? Forçar a codificação sempre que houver uma lista técnica válida é um pouco chato.
Responder1
Um erro de conversão significa que os dados estão corrompidos (ou corrompidos após a gravação do arquivo), portanto, não há configuração global para ignorá-los. No seu caso, pode ser apenas um caractere único e inconsequente, mas pode tornar silenciosamente o arquivo completo inútil em outro caso.
Você pode suprimir o erro de conversão por meio do ++bad=...
argumento (cp. :help ++bad
), que é anexado :edit
exatamente como o++enc=...
Se você realmente deseja suprimir todos os erros de conversão, terá que escrever um :EditBad
comando personalizado:
:command! -bar -bang -nargs=* -complete=file EditBad edit<bang> ++bad=? <args>