Відповіді:
Параметр кодування файлів показує кодування поточного буфера:
:set fileencoding
fileencoding=utf8
Насправді не існує загального способу визначення кодування файлу в простому тексті, оскільки ця інформація не зберігається у самому файлі - крім файлів UTF-8, де у вас є так звана BOM, яка вказує на кодування. Ось чому файли xml та html мають метатеги шаблону.
Ви можете застосувати певне кодування за допомогою параметра "кодування". Див. :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.