Faça com que o vim ignore erros de conversão ao ler o arquivo

Faça com que o vim ignore erros de conversão ao ler o arquivo

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 :editexatamente como o++enc=...

Se você realmente deseja suprimir todos os erros de conversão, terá que escrever um :EditBadcomando personalizado:

:command! -bar -bang -nargs=* -complete=file EditBad edit<bang> ++bad=? <args>

informação relacionada