Ответы:
Параметр fileencoding показывает кодировку текущего буфера:
:set fileencoding
fileencoding=utf8
На самом деле не существует общего способа определения кодировки открытого текста, поскольку эта информация не сохраняется в самом файле - за исключением файлов UTF-8, где у вас есть так называемая спецификация, которая обозначает кодировку. Вот почему файлы xml и html имеют метатеги charset.
Вы можете применить определенную кодировку с помощью параметра «кодировка». Смотрите :help encodingи :help fileencodingв Vim о том, как редактор обрабатывает эти настройки. Вы также можете добавить несколько настроек кодирования файлов в ваш vimrc, чтобы vim попытался определить их на основе перечисленных.
Обратите внимание, что кодировка файлов явно не указана нигде в файле. Таким образом, VIM и другие приложения должны угадать кодировку. Канонический способ сделать это с chardetприложением, которое можно запустить из VIM следующим образом:
:!chardet %
Ответ, предоставленный jtimberman, показывает кодировку текущего буфера, которая может не совпадать с кодировкой файла на диске. Таким образом, вы заметите, что chardetиногда будет отображаться кодировка, отличная от VIM, особенно если VIM настроен на постоянное использование определенной кодировки (т. Е. UTF-8).
Хорошая вещь в chardetтом, что он дает оценку достоверности для своего предположения, тогда как VIM может (и часто ошибается) ошибаться в предположении кодировки, если не много символов над \ x7F (ASCII 127). Например, добавление одного אк длинному файлу кода PHP заставляет chardetдумать, что файл имеет ISO-8859-2достоверность 0,72, тогда как добавление немного более длинной фразы שלום, עולם!дает UTF-8 с показателем достоверности 0,99. В обоих случаях set fileencoding?показывалось UTF-8не потому, что файл на диске был UTF-8, а потому, что VIM настроен для внутреннего использования UTF-8.
chardet <file>. Тем не менее, хорошее предложение.
Я обнаружил, что: https://vim.fandom.com/wiki/Reloading_a_file_using_a_different_encoding
Вы можете перезагрузить файл, используя другую кодировку, если Vim не смог определить правильную кодировку:
:e ++enc=<encoding>
где encodingможет бытьcp850, ISO-8859-1, UTF-8, ...
Вы можете использовать, file yourfilenameчтобы найти кодировку или chardetect(предоставляемую python-chardetили uchardetзависящую от вашего дистрибутива Linux) в соответствии с предложением dotancohen.