У меня есть файл UTF-16 с BOM. Я установил кодировки файлов следующим образом:
set fencs=ucs-bom,utf-16le,utf-8,default,latin1
Однако из-за одного символа в одной строке vim не определяет UTF-16 автоматически и по умолчанию использует latin1 со всеми ^@
нулевыми маркерами. При принудительном чтении файла как UCS ( :e ++enc=ucs-bom
) vim успешно его читает, но сообщает "CONVERSION ERROR in line {nn}", но за исключением этого одного символа остальная часть файла была преобразована правильно. Если удалить неверный символ, файл будет правильно интерпретирован и отображен.
Можно ли как-то заставить vim игнорировать ошибки конвертации? Принудительная кодировка каждый раз, когда есть допустимый BOM, немного раздражает.
решение1
Ошибка преобразования означает, что данные повреждены (или повреждаются после записи файла), поэтому нет глобальной настройки для их игнорирования. В вашем случае это может быть просто один несущественный символ, но он может молча сделать весь файл бесполезным в другом случае.
Вы можете подавить ошибку преобразования с помощью ++bad=...
аргумента (cp. :help ++bad
), который добавляется :edit
так же, как и++enc=...
Если вы действительно хотите подавить все ошибки преобразования, вам придется написать специальную :EditBad
команду:
:command! -bar -bang -nargs=* -complete=file EditBad edit<bang> ++bad=? <args>