<div dir="ltr"><p>посмотрел не очень внимательно, на правду похоже. да, мысль сварганить плагин мне в голову не пришла, каюсь :)</p><p>нет, вим ничего не потеряет конечно. просто зачем в общем-то лишнюю примочку в код добавлять? вот плагин решает проблему. так я в общем не против.<br>
</p><p>а автоматическое определение у меня работало корректно когда в проге в комментах присутствовала пара всего лишь русских слов. у меня локаль utf8, а там было cp1251, я сначала не заметил, потом обалдел :)</p><br><div class="gmail_quote">
5 сентября 2008 г. 22:10 пользователь Maxim Vuets <span dir="ltr">&lt;<a href="mailto:maxim.vuets@gmail.com">maxim.vuets@gmail.com</a>&gt;</span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
05.09.08, Павел Тимонин&lt;<a href="mailto:gg.error@gmail.com">gg.error@gmail.com</a>&gt; написал(а):<br>
<div class="Ih2E3d">&gt; я не придумал, времени не зватает особо думать. хотя можно прикрутить к виму<br>
&gt; перловый обработчик и заставить его.. не знаю.<br>
&gt; вопрос - зачем, если вим определяет кодировки при открытии автоматически и<br>
&gt; правильно? как его заставить это делать я уже писал.<br>
<br>
</div>У меня було чуток времени и я вот накропал то, что требовало сообщество (:<br>
Не надо патчить vim, надо лишь скопировать в ~/.vim/plugin файл следующего<br>
содержания:<br>
<br>
---------------8&lt;---------------8&lt;---------------8&lt;---------------<br>
&quot; File: emacscoding.vim<br>
&quot; Author: Maxim Vuets &lt;<a href="mailto:maxim.vuets@gmail.com">maxim.vuets@gmail.com</a>&gt;<br>
&quot; Last Change: 2008 Sep 05<br>
&quot; Version: 0.1<br>
<br>
function EmacsCodingLine()<br>
 &nbsp; &nbsp; &nbsp; &nbsp;let l = getline(1)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if match(l, &#39;#!&#39;) == 0<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;let l = getline(2)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;endif<br>
 &nbsp; &nbsp; &nbsp; &nbsp;let re = &#39;^.*-\*-\s\{1,\}.*coding:\s\{1,\}\([a-zA-Z0-9-]\{1,\}\).*\s\{1,\}\-\*-.*$&#39;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if match(l, re) == 0<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;let enc = substitute(l, re, &#39;\1&#39;, &#39;&#39;)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;execute &#39;:edit ++enc=&#39; . enc<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;let &amp;fenc = enc<br>
 &nbsp; &nbsp; &nbsp; &nbsp;endif<br>
endfunction<br>
<br>
autocmd BufRead * call EmacsCodingLine()<br>
---------------8&lt;---------------8&lt;---------------8&lt;---------------<br>
<br>
Я попытался сэмулировать логику работы emacs, то есть:<br>
In shell scripts, the first line is used to identify the script interpreter,<br>
so you cannot put any local variables there. To accommodate this,<br>
Emacs looks for local variable specifications in the second line<br>
when the first line specifies an interpreter.<br>
<br>
Это мой первый vim-скрипт (=<br>
<div class="Ih2E3d"><br>
--<br>
Hoc est simplicissimum!<br>
<a href="http://maxim.vuets.name" target="_blank">maxim.vuets.name</a><br>
--<br>
</div><div><div class="Wj3C7c">Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</div></div></blockquote></div><br></div>