Параметр fileencoding показывает кодировку текущего буфера:
:set fileencoding
fileencoding=utf8
На самом деле не существует общего способа определения кодировки открытого текста, поскольку эта информация не сохраняется в самом файле - за исключением файлов UTF-8, где у вас есть так называемая спецификация, которая обозначает кодировку. Вот почему файлы xml и html имеют метатеги charset.
Вы можете применить определенную кодировку с помощью параметра «кодировка». Смотрите :help encoding
и :help fileencoding
в Vim о том, как редактор обрабатывает эти настройки. Вы также можете добавить несколько настроек кодирования файлов в ваш vimrc, чтобы vim попытался определить их на основе перечисленных.
Обратите внимание, что кодировка файлов явно не указана нигде в файле. Таким образом, VIM и другие приложения должны угадать кодировку. Канонический способ сделать это с
chardet
приложением, которое можно запустить из VIM следующим образом:Ответ, предоставленный 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 не смог определить правильную кодировку:
где
encoding
может бытьcp850, ISO-8859-1, UTF-8, ...
Вы можете использовать,
file yourfilename
чтобы найти кодировку илиchardetect
(предоставляемуюpython-chardet
илиuchardet
зависящую от вашего дистрибутива Linux) в соответствии с предложением dotancohen.источник