Как я могу изменить кодировку файла с помощью vim? - PullRequest
223 голосов
/ 22 апреля 2009

Я привык использовать vim для изменения концов строк в файле:

$ file file
file: ASCII text, with CRLF line terminators
$ vim file
:set ff=mac
:wq
$ file file
file: ASCII text, with CR line terminators

Можно ли использовать аналогичный процесс для изменения кодировки файла в юникоде? Я пытаюсь следующее, которое не работает:

$ file file.xml
file.xml: Unicode text, UTF-16, little-endian
$ vim file
:set encoding=utf-8
:wq
$ file file.xml
file.xml: Unicode text, UTF-16, little-endian

Я видел, кто-то сказал , что он может "установить fileencoding = utf-8, затем обновить и записать файл, и это работает", но мне кажется, что-то что-то не хватает, иначе он запутался. Я не знаю, что он имел в виду под «тогда обнови».

Ответы [ 5 ]

239 голосов
/ 22 апреля 2009

Из документа :

: написать ++ enc = utf-8 russian.txt

Таким образом, вы сможете изменить кодировку как часть команды записи.

155 голосов
/ 22 сентября 2009

Обратите внимание, что есть разница между

<a href="http://vimhelp.appspot.com/options.txt.html#%27encoding%27" rel="noreferrer">set encoding</a>

и

<a href="http://vimhelp.appspot.com/options.txt.html#%27fileencoding%27" rel="noreferrer">set fileencoding</a>

В первом случае вы измените выходную кодировку, отображаемую в терминале. Во втором случае вы измените выходную кодировку записанного файла.

77 голосов
/ 22 сентября 2009

Хотя использование vim делает это совершенно возможным, почему бы вам просто не использовать iconv? Я имею в виду - загрузка текстового редактора только для того, чтобы выполнить преобразование кодировки, похоже на использование слишком большого молотка для слишком маленького ногтя.

Просто:

iconv -f utf-16 -t utf-8 file.xml > file.utf8.xml

И все готово.

51 голосов
/ 01 мая 2009

Как и ваши шаги, настройка fileencoding должна работать. Тем не менее, я хотел бы добавить одну «set бомбу», чтобы помочь редактору рассматривать файл как UTF8.

$ vim file
:set bomb
:set fileencoding=utf-8
:wq
4 голосов
/ 22 ноября 2016

Может быть полезно изменить кодировку только в командной строке перед чтением файла:

rem On MicroSoft Windows
vim --cmd "set encoding=utf-8" file.ext
# In *nix shell
vim --cmd 'set encoding=utf-8' file.ext

См. начиная с , --cmd.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...