Подтвердить что ты не робот

Можно ли автоматически устанавливать кодировку UTF16 при открытии файла такого типа?

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

:e ++enc=utf-16le

Чтобы перечитать файл в UTF-16 (в противном случае вы получите массу знаков @)

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

4b9b3361

Ответ 1

Добавление имени кодировки в 'fileencodings' должно выполнить трюк:

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

В качестве альтернативы существуют плагины, такие как AutoFenc и fencview.

Ответ 2

У вас есть байтовый порядок? Vim должен обнаружить это и работать соответствующим образом. Из doc - раздел 45.4:

Когда вы начинаете редактировать этот 16-разрядный Unicode файл, и у него есть спецификация, Vim обнаружит это и преобразует файл в utf-8 при его чтении. Параметр "fileencoding" (без s в конце) устанавливается на обнаруженный стоимость. В этом случае это "utf-16le". Это означает, что Unicode, 16-бит и мало-endian. Этот формат файла распространен в MS-Windows (например, для файлов реестра).

Ответ 3

Добавьте этот код в свой .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