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

Как я могу заставить vim распознавать кодировку файла?

Я заметил, что большую часть времени, когда используется некоторая кодировка, отличная от "стандартного английского", vim не распознает и не отображает символы правильно.
Это наиболее легко увидеть, открыв некоторые графики ascii или похожие файлы из сети, которые используют кодовую страницу cp437.

Есть ли способ сделать проверку vim для кодирования при открытии файла и открыть его с правильным?

Какие кодировки вы используете, как самые "портативные" (те, с которыми наибольшее количество пользователей будет иметь наименьшие проблемы)?

4b9b3361

Ответ 1

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

Вы можете заставить Vim перезагрузить файл с другим кодированием, таким образом:

:e ++enc=cp437

и вы можете установить кодировку по умолчанию в своем .vimrc, если хотите.

Эта страница содержит больше информации и ссылок, особенно wrt. редактирование Юникода. UTF-8 является наиболее широко используемой кодировкой, и по умолчанию вы, вероятно, должны пойти.

Ответ 2

Вы можете использовать модель моделирования vim для установки кодировки файла. Это просто комментарий в первых пяти строках файла, который начинается с vi: set fileencoding=cp437.

Вы также можете начать с "vim:" вместо "vi: set", но последнее делает его совместимым с большим количеством редакторов. Вам определенно нужно пространство между любым из этих префиксов и "fileencoding", или любой другой параметр, который вы хотите установить. Опция fileencoding должна решить вашу проблему.

Итак, в Python или в файле .rc вы можете поместить это в начало файла:

# vi: set fileencoding=cp437

В Java, C, С++, JavaScript и т.д. поставьте это:

// vi: set fileencoding=cp437

Для получения дополнительной информации в vim введите :help modeline.

Ответ 3

Вы можете закодировать свои файлы с помощью юникода и установить в файле "Оценка байта" (BOM). Это заставит vim относиться к нему соответствующим образом, но некоторые компиляторы и программы могут иметь проблемы с этим. Даже базовые команды оболочки, такие как cat, могут ошибочно работать в некоторых случаях использования.

Чтобы сделать это, введите это в vim:

:set fileencoding=utf-8
:set bomb
:w

Для получения дополнительной информации введите:

:help bomb