Як я можу використовувати vim для перетворення свого файлу в utf8?


Відповіді:


179

Якщо ви редагуєте файл, закодований як latin1, ви побачите, що для файлу буфера 'fileencoding' встановлено значення latin1. Тому вам потрібно буде вручну встановити кодування файлів перед збереженням файлу.

:set fileencoding=utf8
:w myfilename

Також зауважте, що файли UTF8 часто починаються з позначки порядку в байтах (BOM), що вказує на витривалість. BOM НЕ є обов'язковим , але деякі програми використовують його виключно для визначення кодування файлу. За певних умов Vim напише BOM, але іноді не буде. Щоб явно встановити BOM, зробіть це:

:set bomb

Для отримання додаткової інформації :help mbyte-optionsта :help utf8та :help bomb.


Інструкції виявляються працюють нормально, але: 1) UTF-8 не має порядку байтів (наприклад , пояснює ВІМ допомогу , то UTF-8 BOM просто вказує , що файл є UTF-8); 2) Коли ви знову відкриєте файл пізніше, вам потрібно мати його set fileencoding=utf-8знову вперед. Vim навіть не помічає BOM, якщо ви сказали йому написати один (і він справді його пише). Щоб робота utf-8 працювала, вам це потрібно або set encoding=utf-8в налаштуваннях запуску. Принаймні, це історія в моїй системі.
Штейн

35
:w ++enc=utf-8 %

записати файл на кодування utf-8 на диск.


5
Хоча це правильно, ваша відповідь не повинна була зібрати стільки результатів порівняно з Еріком Джонсоном. Причина полягає в тому, що якщо ви не встановите fileencoding, значення :w ++enc=utf-8є дійсним один раз, але наступного разу, коли ви запустите :w, значення 'fileencoding'буде використано, і якщо ви не змінили його (явно під час редагування чи перезавантаження файлу, сподіваючись що 'fencs'встановлено відповідним чином і фактичне кодування добре виявлено), старе кодування повернеться.
Бенуа

1
@ MichaelKrelin-хакер, зміна fileencodingтакож є вагомою відповіддю на питання, яке не призводить до того, що ІМО спричиняє шкідливі звички. Але гаразд, це лише питання настрою.
Бенуа

3
@ Бенуа, я не мав на увазі, що відповідь Еріка не вірна! Якщо я знаходжу щось дивне у його відповіді, це не зміст, а навпаки, чому він швидко та послідовно розмістив питання та відповідь на власне питання :)
Майкл Крелін - хакер

3
@Michael Krelin - хакер: перевірте FAQ. Насправді рекомендується відповісти на власне запитання. Вся суть сторінки Q&A, як ця. Не має значення хто відповідає.
0xC0000022L

2
@ 0xC0000022L, востаннє, коли я перевіряв (не перевіряв зараз), було щось про те, щоб знайти рішення після проведення досліджень, а не про те, щоб розмістити запитання та відповіді за хвилину . Тим не менш, я говорив лише про те, що дивно відповідає його відповіді, а не те, що робить його недійсним чи щось.
Майкл Крелін - хакер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.