1

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

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

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

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

1 ответ1

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .