Ответ 1
Используйте режим 'binary'
:
:edit ++bin file
или
vim -b file
От :help 'binary'
:
Параметры 'fileencoding' и 'fileencodings' не будут использоваться, файл читается без преобразования.
Я не хочу, чтобы vim никогда не интерпретировал мои данные каким-либо конкретным способом кодирования. Другими словами, когда я нахожусь в vim, я хочу, чтобы символ, на котором мой курсор включен, соответствовал фактическому байту, а не utf * (и т.д.) Представление этого байта.
Мне нужно использовать vim для анализа проблем, вызванных ошибками преобразования Unicode, сделанными другими людьми (с использованием другого программного обеспечения), поэтому важно, чтобы я увидел, что на самом деле там.
Например, в Cygwin vim я смог видеть спецификации UTF-8 как
ï "¿[НАЧАЛО ДАННЫХ ФАЙЛА]
Это прекрасно. Я признаю это как спецификацию UTF-8, и если я хочу знать, что такое hex для каждого символа, я могу поместить курсор на символы и использовать "ga".
Недавно я получил подходящую машину Linux (Fedora). В /etc/vimrc эта строка существует
set fileencodings = ucs-bom, utf-8, latin1
Когда я смотрю на спецификацию UTF-8 на этом компьютере, спецификация полностью скрыта.
Когда я добавляю следующую строку в ~/.vimrc
set fileencodings = latin1
Я вижу
Ä "¿
Первые 3 символа - спецификация (когда ga используется против них). Я не знаю, что такое последние 3 персонажа.
В какой-то момент я даже видел спецификацию UTF-8, представленную как "feff" - спецификацию UTF-16.
В любом случае, вы видите мою проблему. Мне нужно точно посмотреть, что находится в моем файле, без того, чтобы vim интерпретировал байты для меня. Я знаю, что могу использовать xxd, od и т.д., Но vim всегда был очень удобным инструментом анализа. Кроме того, я хочу иметь возможность редактировать файлы и сохранять их без каких-либо проблем с преобразованием.
Спасибо за вашу помощь.
Используйте режим 'binary'
:
:edit ++bin file
или
vim -b file
От :help 'binary'
:
Параметры 'fileencoding' и 'fileencodings' не будут использоваться, файл читается без преобразования.
Последовательность 
на самом деле является U + FEFF (BOM) кодированной UTF-8, декодированной латинской 1, кодированной UTF-8 и снова декодированной латинской. 
- U + FEFF (BOM), кодированный как UTF-8 и декодированный как latin1. Вы не можете уйти от кодировок. Это не фактические байты, они являются латинскими символами, отображаемыми из-за неправильного декодирования. Если вы хотите использовать байты, используйте шестнадцатеричный редактор; в противном случае используйте правильное декодирование.
Я получаю хороший пробег от выполнения :e ++enc=latin1
после загрузки файла (предварительное предположение VIm о кодировании на данном этапе не важно).