Ответ 1
Добавление имени кодировки в 'fileencodings'
должно выполнить трюк:
:set fencs=ucs-bom,utf-16le,utf-8,default,latin1
В качестве альтернативы существуют плагины, такие как AutoFenc и fencview.
Я редактирую все виды файлов с помощью Vim (как я уверен, большинство пользователей Vim). Одна ошибка, которую я имею, это то, что делает Vim, когда я сталкиваюсь с файлом с нечетной кодировкой. Большинство редакторов (в наши дни) делают хороший удар по обнаружению кодировок файлов. Однако Vim обычно этого не делает. И вы должны ввести, например:
:e ++enc=utf-16le
Чтобы перечитать файл в UTF-16 (в противном случае вы получите массу знаков @)
Я искал вокруг и видел сценарии типа set_utf8.vim
, которые могут обнаружить определенную кодировку файла. Однако существует ли более общее решение? Мне немного надоедает необходимость вручную определять, что такое кодировка файлов, и обращаться к ней каждый раз, когда я открываю необычный файл.
Добавление имени кодировки в 'fileencodings'
должно выполнить трюк:
:set fencs=ucs-bom,utf-16le,utf-8,default,latin1
В качестве альтернативы существуют плагины, такие как AutoFenc и fencview.
У вас есть байтовый порядок? Vim должен обнаружить это и работать соответствующим образом. Из doc - раздел 45.4:
Когда вы начинаете редактировать этот 16-разрядный Unicode файл, и у него есть спецификация, Vim обнаружит это и преобразует файл в utf-8 при его чтении. Параметр "fileencoding" (без s в конце) устанавливается на обнаруженный стоимость. В этом случае это "utf-16le". Это означает, что Unicode, 16-бит и мало-endian. Этот формат файла распространен в MS-Windows (например, для файлов реестра).
Добавьте этот код в свой .vimrc:
if has("multi_byte")
if &termencoding == ""
let &termencoding = &encoding
endif
set encoding=utf-8
setglobal fileencoding=utf-8
"setglobal bomb
set fileencodings=ucs-bom,utf-8,latin1
endif