Получить Vim игнорировать ошибки преобразования при чтении файла

1

У меня есть файл UTF-16 с спецификацией. Я установил fileencodings для:

set fencs=ucs-bom,utf-16le,utf-8,default,latin1    

Однако из-за одного символа в одной строке vim не обнаруживает UTF-16 автоматически и по умолчанию использует latin1 со всеми ^@нулевыми маркерами. Вынуждая vim прочитать файл как UCS ( :e ++enc=ucs-bom), он успешно читает файл, но сообщает "ОШИБКА КОНВЕРСИИ в строке {nn}", но кроме этого символа, остальная часть файла была преобразована правильно. Если плохой символ удаляется, файл правильно интерпретируется и отображается.

В любом случае vim игнорирует ошибки конвертации? Принудительное кодирование каждый раз, когда есть действительная спецификация, немного раздражает.

Крис Дж
источник

Ответы:

0

Ошибка преобразования означает, что данные повреждены (или повреждены после записи файла), поэтому глобальных настроек для их игнорирования не существует. В вашем случае это может быть только один, несущественный символ, но он может молча сделать весь файл бесполезным в другом случае.

Вы можете подавить ошибку преобразования через ++bad=...аргумент (cp. :help ++bad), Который добавляется так :editже, как++enc=...

Если вы действительно хотите подавить все ошибки преобразования, вам нужно написать собственную :EditBadкоманду:

:command! -bar -bang -nargs=* -complete=file EditBad edit<bang> ++bad=? <args>
Инго Каркат
источник
Это не так сильно подавляет, но имеет поведение, которое :e ++encимеет - то есть, читает файл, но предупреждает об ошибке преобразования (то есть, я хочу знать, что это там, чтобы я мог решить относительно файла). Я попробую и посмотрю, что я получу.
Крис Дж