Vim и кодировки
Тут на самом деле всё просто. Храните все тексты в Unicode и будет вам счастье (при условии правильно установленной опции 'encoding' конечно) В ином случае (у вас куча текстов в национальных кодировках) придется дочитать топик до конца)
За кодировки в Vim отвечают следующие опции:
'encoding' — кодировка, в которой Vim хранит все данные. То есть текст буфферов, строки в выражениях, содержимое регистров и т.д. По-умолчанию это либо «latin1» либо что-то, соответствующее переменной окружения $LANG. Если вы не пользуетесь такой штукой, как langmap, настоятельно рекомендуется установить 'encoding' в «utf-8». Это позволит редактировать любые тексты, в том числе и сохраненные в одной из Unicode кодировок без потерь.
'fileencoding' — кодировка файла в текущем буфере. Она либо определяется автоматически (для этого используется опция 'fileencodings', о ней ниже), либо задаётся явно при открытии файла с помощью модификатора ++enc. Например, чтобы открыть файл foo.txt в кодировке KOI8-R нужно написать:
и нажать Enter. А теперь внимание, тонкий момент. Если вы откроете файл без модификатора ++enc опция 'fileencoding' будет установлена Vim'ом в то, что он посчитает нужным. Например, он может неправильно определить кодировку и установить 'fileencoding' в «latin1». Если вы после этого напишете:
Vim не переоткроет файл в этой кодировке, он перекодирует его из текущей в KOI8-R! Для открытия файла в правильной кодировке обязательно используйте ++enc. А вот если вы хотите сохранить файл в кодировке, отличной от той, в которой он записан — меняйте опцию 'fileencoding'. Например, у вас есть файл foo.txt в кодировке KOI8-R, а вы хотите сохранить его в CP-1251. Для этого, вы открываете его:
меняете кодировку:
и сохраняете:
Последние два действия можно объединить в одно применив известный нам модификатор ++enc вот так:
'fileencodings' — это список кодировок, которые Vim будет перебирать при открытии файла. Про имена кодировок читать в :help encoding-names.
Есть ещё опция 'termencoding', которая отвечает за кодировку терминала, но в большинстве случаев вам не придется её настраивать.
Источник
За кодировки в Vim отвечают следующие опции:
'encoding' — кодировка, в которой Vim хранит все данные. То есть текст буфферов, строки в выражениях, содержимое регистров и т.д. По-умолчанию это либо «latin1» либо что-то, соответствующее переменной окружения $LANG. Если вы не пользуетесь такой штукой, как langmap, настоятельно рекомендуется установить 'encoding' в «utf-8». Это позволит редактировать любые тексты, в том числе и сохраненные в одной из Unicode кодировок без потерь.
'fileencoding' — кодировка файла в текущем буфере. Она либо определяется автоматически (для этого используется опция 'fileencodings', о ней ниже), либо задаётся явно при открытии файла с помощью модификатора ++enc. Например, чтобы открыть файл foo.txt в кодировке KOI8-R нужно написать:
:e ++enc=koi8-r foo.txt
и нажать Enter. А теперь внимание, тонкий момент. Если вы откроете файл без модификатора ++enc опция 'fileencoding' будет установлена Vim'ом в то, что он посчитает нужным. Например, он может неправильно определить кодировку и установить 'fileencoding' в «latin1». Если вы после этого напишете:
:set fileencoding=koi8-r
Vim не переоткроет файл в этой кодировке, он перекодирует его из текущей в KOI8-R! Для открытия файла в правильной кодировке обязательно используйте ++enc. А вот если вы хотите сохранить файл в кодировке, отличной от той, в которой он записан — меняйте опцию 'fileencoding'. Например, у вас есть файл foo.txt в кодировке KOI8-R, а вы хотите сохранить его в CP-1251. Для этого, вы открываете его:
:e ++enc=koi8-r foo.txt
меняете кодировку:
:set fileencoding=cp-1251
и сохраняете:
:w
Последние два действия можно объединить в одно применив известный нам модификатор ++enc вот так:
:w ++enc=cp-1251
'fileencodings' — это список кодировок, которые Vim будет перебирать при открытии файла. Про имена кодировок читать в :help encoding-names.
Есть ещё опция 'termencoding', которая отвечает за кодировку терминала, но в большинстве случаев вам не придется её настраивать.
Источник
Комментарии (6)
RSS свернуть / развернутьТы, кстати, не знаешь как в Vim ^M убрать? Ну, переводы строки, которые из виндовых файлов приходят? Чтобы не \r\n, а просто \n было?
yababay
iconv почему-то на некоторых файлах обламывается кривых —
видать какие-то в них спец символы проскакивают
Sergei_T
Sergei_T
— это чтобы убрать из текста ^M, т.е. превратить \r\n прлосто в \n.
— в обратную сторону.
yababay
случаи жизни (под ДОС-Виндос). Страшненькие такие… Но Работает.
Markony
FREExLOADER
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.