<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
					xmlns:content="http://purl.org/rss/1.0/modules/content/"
					xmlns:wfw="http://wellformedweb.org/CommentAPI/"
					xmlns:atom="http://www.w3.org/2005/Atom"
				  >
<channel>
<atom:link rel="self"  type="application/rss+xml"  href="http://rulinux.net/rss_from_sect_2_subsect_1_thread_42726"  />
<title>rulinux.net - Статьи - General - баян: vim и multibyte encoding</title>
<link>http://rulinux.net/</link>
<description><![CDATA[Портал о GNU/Linux и не только]]></description>
<image><title>rulinux.net - Статьи - General - баян: vim и multibyte encoding</title>
<link>http://rulinux.net/</link>
<url>http://rulinux.net/rss_icon.png</url>
</image>
<item>
<title>Re:баян: vim и multibyte encoding</title>
<link>https://rulinux.net/message.php?newsid=42726&amp;page=1#218408</link>
<guid>https://rulinux.net/message.php?newsid=42726&amp;page=1#218408</guid>
<pubDate>Sun, 06 Nov 2016 15:31:25 +0300</pubDate>
<description><![CDATA[<p><i>Я не знаю какие проблемы могут быть сейчас, везде utf.</i><br><br>&quot;.. а дальше, Петька, начинаются нюансы..&quot;(ц) как говаривал Чапай. два момента:<br /> - во-первых, постоянно сталкиваюсь с &quot;не юникодом&quot;. в основном это субтитры, оцифровки (причём не обязательно старые) и мыло. архивы e-mail-ов - просто праздник-праздник. особенно сегодня, когда 95% работает на принципе: &quot;нажми на Красную Кнопоську&quot; (если Зелёная Кнопоська не нажимаеццо). оно лежит себе архивами в бэкапах, и смысла переводить на utf нет. от слова вообще. utf-8 занимает по объёму кириллицы где-то в два раза больше места, чем 8-ми битная кодировка, а ucs-2le в полтора раза больше, чем utf-8. ну, ты понел, да?<br /> - во-вторых, Слава России! только KOI8-R спасёт Эту Страну! w3m, mutt, vim и koi8-r - жгут, остальное - сасёт! если серьёзно - не всякое getty поддерживает utf. если лазаешь ssh по всяко-разному, то пользуешь что есть, а не то, что хоцца.. </p>]]></description>
</item>
<item>
<title>Re:баян: vim и multibyte encoding</title>
<link>https://rulinux.net/message.php?newsid=42726&amp;page=1#218398</link>
<guid>https://rulinux.net/message.php?newsid=42726&amp;page=1#218398</guid>
<pubDate>Sun, 06 Nov 2016 11:04:31 +0300</pubDate>
<description><![CDATA[<p>Я не знаю  какие проблемы  могут быть сейчас, везде utf.<br><br>Много лет тому  в vim были проблемы с открытием  исходников  писаных под виндой, приходилось  подобные конфиги писать, хотя  давно такого не наблюдаю.<br><br></p>]]></description>
</item>
<item>
<title>Re:баян: vim и multibyte encoding</title>
<link>https://rulinux.net/message.php?newsid=42726&amp;page=1#218393</link>
<guid>https://rulinux.net/message.php?newsid=42726&amp;page=1#218393</guid>
<pubDate>Sun, 06 Nov 2016 10:23:31 +0300</pubDate>
<description><![CDATA[<p>скорее обратная сторона медали, а не гемор. плата за гибкость и функционал.<br><br>емнип сейчас используют что-то вроде &quot;libchardet&quot;, &quot;uchardet/libuchardet&quot; для автоматического подбора кодировки. помогает далеко не всегда. тот же &quot;mcedit&quot; (редактор для миднайта), равно как и многие другие, на автоопределение забивает болт и может работать с несколькими зашитыми внутрь кодировками. с одной стороны - это вроде как правильно: для перекодировки есть специальные утилиты. а с другой стороны - лютые фейлы на &quot;нестандартах&quot;.<br><br>собсно когда в менюшку запихиваешь опции командной строки - оно всегда выглядит страшно :) </p>]]></description>
</item>
<item>
<title>Re:баян: vim и multibyte encoding</title>
<link>https://rulinux.net/message.php?newsid=42726&amp;page=1#218390</link>
<guid>https://rulinux.net/message.php?newsid=42726&amp;page=1#218390</guid>
<pubDate>Sun, 06 Nov 2016 08:45:18 +0300</pubDate>
<description><![CDATA[<p>Ух, какой геморрой-то дикий...</p>]]></description>
</item>
<item>
<title>баян: vim и multibyte encoding</title>
<link>https://rulinux.net/message.php?newsid=42726&amp;page=1#218366</link>
<guid>https://rulinux.net/message.php?newsid=42726&amp;page=1#218366</guid>
<pubDate>Sat, 05 Nov 2016 16:17:28 +0300</pubDate>
<description><![CDATA[<p>жевание соплей по работе с различными кодировками файлов в vim. кто прошарен - идёт лесом или пишет Ъ камменты. остальным - можно пофтыкать, можно не фтыкать, можно аффтару стчку на телефон или обложить аффтара хуями. можно и не обкладывать, аффтар не абидицца.<br><br>цимес в том, что vim-у кодировка редактируемого файла не важна, а встречается всяко-разное. при сбое автоопределения единицы позволяют указывать кодировку файла вручную. соответственно задача редактирования файла в исходной кодировке порой требует наличия мозгов в межплечевой жопе. что не может не радовать.<br><br>типовые утилиты для работы с кодировками:<br><br>$ recode<br /> $ iconv<br /> $ enca<br /> $ chardet или же chardetect.py<br><br>последний позволяет &quot;угадывать&quot; возможные варианты кодировок. must have. <br><br>открываем vim, печатаем:<br /> <fieldset><legend>vim</legend><div class="highlight vim"><br />
<span class="sy0">:</span>h enc &nbsp;<br />
&nbsp;</div></fieldset> &quot; можно и нужно читать. читать не просто так, а пройти по всем &quot;ссылкам&quot;. даёт понять как vim работает с кодировками и что для этого использует. если очень грубо &quot;просуммировать&quot; - получим следующие четыре &quot;внутренних&quot; переменных vim, позволяющих худо-бедно оперировать кодировками. важно учитывать опции сборки vim (+multi_byte) и понимать, что: &quot;The conversion is done with iconv() or as specified with 'charconvert'.&quot;(ц)(vim). <br><br><fieldset><legend>vim</legend><div class="highlight vim"><br />
<span class="sy0">:</span>set encoding &nbsp;<span class="st0">&quot; &nbsp;показывает в какой кодировке vim работает по умолчанию (именно сейчас)<br />
:set termencoding &nbsp;&quot;</span> &nbsp;показывает в какой кодировке vim ожидает работу своего терминала<br />
<span class="sy0">:</span>set fileencoding &nbsp;<span class="st0">&quot; &nbsp;показывает в какой кодировке vim открыл рабочий файл<br />
:set fileencodings &nbsp;&quot;</span> &nbsp;показывает список кодировок, в которых vim ожидает найти соответствующую открываемому файлу<span class="sy0">.</span> первая <span class="st0">&quot;подходящая&quot;</span> принимается в работу<span class="sy0">.</span> следствие<span class="sy0">:</span> если первой стоит <span class="st0">&quot;latin1&quot;</span>, то про <span class="st0">&quot;угадывание&quot;</span> кодировок забываем<span class="sy0">.</span> именно тут корни многих ошибок в правильном определении кодировки рабочего файла<span class="sy0">.</span> <br />
&nbsp;</div></fieldset> допустим, что vim работает в UTF-8 окружении. пример записей в ~/.vimrc: <fieldset><legend>vim</legend><div class="highlight vim"><br />
<span class="co1">&quot; рабочая кодировка</span><br />
set encoding=utf<span class="sy0">-</span><span class="nu0">8</span><br />
<span class="co1">&quot; кодировка терминала</span><br />
set termencoding=utf<span class="sy0">-</span><span class="nu0">8</span><br />
<span class="co1">&quot; список кодировок файлов для автоопределения</span><br />
set fileencodings=ucs<span class="sy0">-</span>bom,utf<span class="sy0">-</span><span class="nu0">8</span>,cp1251,koi8<span class="sy0">-</span>r,iso<span class="sy0">-</span><span class="nu0">8859</span><span class="sy0">-</span><span class="nu0">5</span>,cp866,ucs<span class="sy0">-</span><span class="nu0">2</span>,ucs<span class="sy0">-</span>2le,utf<span class="sy0">-</span><span class="nu0">16</span>,utf<span class="sy0">-</span>16le,latin1<br />
&nbsp;</div></fieldset> fileencoding определяет сам vim, исходя из результатов записей в ~/.vimrc : UTF - лехко, а из 8-ми битных кодировок корректно отобразит лишь cp1251 (windows-1251). при открытии koi8-r,iso-8859-5,cp866 и прочего &quot;не юникода&quot; весьма вероятен фейл. по сути всё просто: если кракозябры на экране - сравниваем/проверяем кодировку файла с кодировкой, которую &quot;угадал&quot; vim (точнее не угадал). просим vim открыть файл в другой кодировке. в редких случаях - меняем кодировку терминала. пример:<br><br>$ vim current_file<br><br>ыПРЧЕММУ<br /> 4 ЙАМС<br /> тбуртпдбцб<br><br><fieldset><legend>vim</legend><div class="highlight vim"><br />
<span class="sy0">:</span>set fileencoding<br />
&nbsp; &nbsp; &nbsp; &nbsp; fileencoding=cp1251<br />
<span class="sy0">:!</span>chardetect<span class="sy0">.</span>py <span class="sy0">%</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; current_file<span class="sy0">:</span> KOI8<span class="sy0">-</span>R with confidence <span class="nu0">0.476283037726</span><br />
<span class="sy0">:</span>e <span class="sy0">++</span>enc=koi8<span class="sy0">-</span>r<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">!!!</span> &nbsp;PROFIT &nbsp;<span class="sy0">!!!</span><br />
&nbsp;</div></fieldset> Шопвеллс<br /> 4 июля<br /> РАСПРОДАЖА<br><br>можно в ~/.vimrc всю рутину с перекодировкой оформить в виде меню. пример:<br><br><fieldset><legend>vim</legend><div class="highlight vim"><br />
<span class="co1">&quot;&lt;F7&gt; EOL format (dos &lt;CR&gt;&lt;NL&gt;,unix &lt;NL&gt;,mac &lt;CR&gt;) &nbsp;&quot; &nbsp;определяем/меняем формат строк файла</span><br />
set &nbsp;wildmenu<br />
set &nbsp;wcm=<span class="sy0">&lt;</span>Tab<span class="sy0">&gt;</span><br />
menu EOL<span class="sy0">.</span>current <span class="sy0">:</span>set fileformat<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu EOL<span class="sy0">.</span>unix <span class="sy0">:</span>set fileformat=unix<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu EOL<span class="sy0">.</span>dos &nbsp;<span class="sy0">:</span>set fileformat=dos<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu EOL<span class="sy0">.</span>mac &nbsp;<span class="sy0">:</span>set fileformat=mac<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
<span class="kw3">map</span> &nbsp;<span class="sy0">&lt;</span>F7<span class="sy0">&gt;</span> <span class="sy0">:</span>emenu EOL<span class="sy0">.&lt;</span>Tab<span class="sy0">&gt;</span><br />
<br />
<span class="co1">&quot;&lt;F6&gt; Change termencoding &nbsp;&quot; &nbsp;выставляем кодировку терминала</span><br />
set &nbsp;wildmenu<br />
set &nbsp;wcm=<span class="sy0">&lt;</span>Tab<span class="sy0">&gt;</span><br />
menu tEnc<span class="sy0">.</span>current &nbsp; &nbsp;<span class="sy0">:</span>set termencoding<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu tEnc<span class="sy0">.</span>cp1251 &nbsp; &nbsp; <span class="sy0">:</span>set termencoding=cp1251<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu tEnc<span class="sy0">.</span>koi8<span class="sy0">-</span>r &nbsp; &nbsp; <span class="sy0">:</span>set termencoding=koi8<span class="sy0">-</span>r<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu tEnc<span class="sy0">.</span>iso<span class="sy0">-</span>8859<span class="sy0">-</span>5 <span class="sy0">:</span>set termencoding=iso<span class="sy0">-</span>8859<span class="sy0">-</span>5<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu tEnc<span class="sy0">.</span>cp866 &nbsp; &nbsp; &nbsp;<span class="sy0">:</span>set termencoding=ibm866<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu tEnc<span class="sy0">.</span>utf<span class="sy0">-</span>8 &nbsp; &nbsp; &nbsp;<span class="sy0">:</span>set termencoding=utf<span class="sy0">-</span>8<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu tEnc<span class="sy0">.</span>ucs<span class="sy0">-</span>2le &nbsp; &nbsp;<span class="sy0">:</span>set termencoding=ucs<span class="sy0">-</span>2le<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
<span class="kw3">map</span> &nbsp;<span class="sy0">&lt;</span>F6<span class="sy0">&gt;</span> <span class="sy0">:</span>emenu tEnc<span class="sy0">.&lt;</span>Tab<span class="sy0">&gt;</span><br />
<br />
<span class="co1">&quot;&lt;F8&gt; Change encoding &nbsp; &quot; &nbsp; здесь мы задаём рабочую (текущую) кодировку для vim</span><br />
set &nbsp;wildmenu<br />
set &nbsp;wcm=<span class="sy0">&lt;</span>Tab<span class="sy0">&gt;</span><br />
menu Enc<span class="sy0">.</span>current &nbsp; &nbsp;<span class="sy0">:</span>set enc<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Enc<span class="sy0">.</span>cp1251 &nbsp; &nbsp; <span class="sy0">:</span>set encoding=cp1251<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Enc<span class="sy0">.</span>koi8<span class="sy0">-</span>r &nbsp; &nbsp; <span class="sy0">:</span>set encoding=koi8<span class="sy0">-</span>r<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Enc<span class="sy0">.</span>iso<span class="sy0">-</span>8859<span class="sy0">-</span>5 <span class="sy0">:</span>set encoding=iso<span class="sy0">-</span>8859<span class="sy0">-</span>5<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Enc<span class="sy0">.</span>cp866 &nbsp; &nbsp; &nbsp;<span class="sy0">:</span>set encoding=cp866<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Enc<span class="sy0">.</span>utf<span class="sy0">-</span>8 &nbsp; &nbsp; &nbsp;<span class="sy0">:</span>set encoding=utf<span class="sy0">-</span>8<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Enc<span class="sy0">.</span>ucs<span class="sy0">-</span>2le &nbsp; &nbsp;<span class="sy0">:</span>set encoding=ucs<span class="sy0">-</span>2le<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
<span class="kw3">map</span> &nbsp;<span class="sy0">&lt;</span>F8<span class="sy0">&gt;</span> <span class="sy0">:</span>emenu Enc<span class="sy0">.&lt;</span>Tab<span class="sy0">&gt;</span><br />
<br />
<span class="co1">&quot;&lt;F5&gt; Convert file encoding &nbsp; &nbsp;&quot; &nbsp;это меню - для изменения кодировки файлов (перед сохранением)</span><br />
set &nbsp;wildmenu<br />
set &nbsp;wcm=<span class="sy0">&lt;</span>Tab<span class="sy0">&gt;</span><br />
menu Fenc<span class="sy0">.</span>current &nbsp; <span class="sy0">:</span>set fenc<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Fenc<span class="sy0">.</span>cp1251 &nbsp; &nbsp;<span class="sy0">:</span>set fenc=cp1251<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Fenc<span class="sy0">.</span>koi8<span class="sy0">-</span>r &nbsp; &nbsp;<span class="sy0">:</span>set fenc=koi8<span class="sy0">-</span>r<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Fenc<span class="sy0">.</span>iso<span class="sy0">-</span>8859<span class="sy0">-</span>5 <span class="sy0">:</span>set fenc=iso<span class="sy0">-</span>8859<span class="sy0">-</span>5<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Fenc<span class="sy0">.</span>cp866 &nbsp; &nbsp; <span class="sy0">:</span>set fenc=ibm866<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Fenc<span class="sy0">.</span>utf<span class="sy0">-</span>8 &nbsp; &nbsp; <span class="sy0">:</span>set fenc=utf<span class="sy0">-</span>8<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu Fenc<span class="sy0">.</span>ucs<span class="sy0">-</span>2le &nbsp; <span class="sy0">:</span>set fenc=ucs<span class="sy0">-</span>2le<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
<span class="kw3">map</span> &nbsp;<span class="sy0">&lt;</span>F5<span class="sy0">&gt;</span> <span class="sy0">:</span>emenu Fenc<span class="sy0">.&lt;</span>Tab<span class="sy0">&gt;</span><br />
<br />
<span class="co1">&quot; &lt;F9&gt; force read file with different encoding &nbsp;&quot; &nbsp;а здесь мы просим vim открыть файл именно в той кодировке, которая нам нужна</span><br />
set &nbsp;wildmenu<br />
set &nbsp;wcm=<span class="sy0">&lt;</span>Tab<span class="sy0">&gt;</span><br />
menu ForceEnc<span class="sy0">.</span>cp1251&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">:</span>e <span class="sy0">++</span>enc=cp1251<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu ForceEnc<span class="sy0">.</span>koi8<span class="sy0">-</span>r&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">:</span>e <span class="sy0">++</span>enc=koi8<span class="sy0">-</span>r<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu ForceEnc<span class="sy0">.</span>iso<span class="sy0">-</span>8859<span class="sy0">-</span>5&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">:</span>e <span class="sy0">++</span>enc=iso<span class="sy0">-</span>8859<span class="sy0">-</span>5<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu ForceEnc<span class="sy0">.</span>cp866 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">:</span>e <span class="sy0">++</span>enc=cp866<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu ForceEnc<span class="sy0">.</span>utf<span class="sy0">-</span>8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">:</span>e <span class="sy0">++</span>enc=utf<span class="sy0">-</span>8<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
menu ForceEnc<span class="sy0">.</span>ucs<span class="sy0">-</span>2le &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">:</span>e <span class="sy0">++</span>enc=ucs<span class="sy0">-</span>2le<span class="sy0">&lt;</span>CR<span class="sy0">&gt;</span><br />
<span class="kw3">map</span> &nbsp;<span class="sy0">&lt;</span>F9<span class="sy0">&gt;</span> <span class="sy0">:</span>emenu ForceEnc<span class="sy0">.&lt;</span>Tab<span class="sy0">&gt;</span><br />
&nbsp;</div></fieldset> как-то так.. </p>]]></description>
</item>
</channel>
</rss>