2 <BASE HREF="http://www.wagner.pp.ru/~vitus/tips/vim.html">
4 <TITLE>Немного о настройке Vim</TITLE>
5 <META NAME="description" CONTENT="Редактирование текстов в разных
6 кодировках, выбор шрифта при запуске в разных локалях">
8 <H1>Немного о настройке <A HREF="http://www.vim.org">Vim</A></H1>
10 <H2>Редактирование текста в разных кодировках</H2>
12 Vim 6.x понимает тексты в разных кодировках. Кодировку можно указать
13 при открытии файла (команды <tt>:edit</tt> и <tt>:split</tt>) с помощью
14 опции <tt>++enc=<i>имя</i> <i>файл</i></tt>, где <i>имя</i> - любое имя
15 кодировки известное вашему системному iconv.
18 Простейший способ сделать перекодировку на лету - повесить команды
19 перегрузки текущего файла как файла с разными кодировками на
20 какие-нибудь кнопки. Вот так:
22 <div style="width: 30%; background-color: black; color: white;">
24 <font color="#ffff00">map</font> <font color="#ff40ff"><</font><font color="#ff40ff">F2</font><font color="#ff40ff">></font> :<font color="#ffff00">e</font> <font color="#ffff00">++</font>enc<font color="#ffff00">=</font>cp1251 <font color="#00ffff">%</font><font color="#ff40ff"><</font><font color="#ff40ff">CR</font><font color="#ff40ff">></font>
25 <font color="#ffff00">map</font> <font color="#ff40ff"><</font><font color="#ff40ff">F3</font><font color="#ff40ff">></font> :<font color="#ffff00">e</font> <font color="#ffff00">++</font>enc<font color="#ffff00">=</font>utf<font color="#ff6060">-8</font> <font color="#00ffff">%</font><font color="#ff40ff"><</font><font color="#ff40ff">CR</font><font color="#ff40ff">></font>
26 <font color="#ffff00">map</font> <font color="#ff40ff"><</font><font color="#ff40ff">F4</font><font color="#ff40ff">></font> :<font color="#ffff00">e</font> <font color="#ffff00">++</font>enc<font color="#ffff00">=</font>ibm866 <font color="#00ffff">%</font><font color="#ff40ff"><</font><font color="#ff40ff">CR</font><font color="#ff40ff">></font>
27 <font color="#ffff00">map</font> <font color="#ff40ff"><</font><font color="#ff40ff">F5</font><font color="#ff40ff">></font> :<font color="#ffff00">e</font> <font color="#ffff00">++</font>enc<font color="#ffff00">=</font>koi8<font color="#ffff00">-</font><font color="#ffff00">r</font> <font color="#00ffff">%</font><font color="#ff40ff"><</font><font color="#ff40ff">CR</font><font color="#ff40ff">></font>
31 Иногда хочется чего-то более красивого, например, не запоминать пять
32 клавиш, а запомнить одну, и чтобы выскакивала менюшка. Это тоже
35 <div style="width: 60%; background-color: black; color: white;">
37 <font color="#ffff00">set</font> <font color="#ff40ff">wildmenu</font>
38 <font color="#ffff00">set</font> <font color="#ff40ff">wcm</font>=<font color="#ff40ff"><</font><font color="#ff40ff">Tab</font><font color="#ff40ff">></font>
39 <font color="#ffff00">menu</font> <font color="#ff40ff">Encoding.koi8-r</font> :<font color="#ffff00">e</font> <font color="#ffff00">++</font>enc<font color="#ffff00">=</font>koi8<font color="#ffff00">-</font><font color="#ffff00">r</font><font color="#ff40ff"><</font><font color="#ff40ff">CR</font><font color="#ff40ff">></font>
40 <font color="#ffff00">menu</font> <font color="#ff40ff">Encoding.windows-1251</font> :<font color="#ffff00">e</font> <font color="#ffff00">++</font>enc<font color="#ffff00">=</font>cp1251<font color="#ff40ff"><</font><font color="#ff40ff">CR</font><font color="#ff40ff">></font>
41 <font color="#ffff00">menu</font> <font color="#ff40ff">Encoding.ibm-866</font> :<font color="#ffff00">e</font> <font color="#ffff00">++</font>enc<font color="#ffff00">=</font>ibm866<font color="#ff40ff"><</font><font color="#ff40ff">CR</font><font color="#ff40ff">></font>
42 <font color="#ffff00">menu</font> <font color="#ff40ff">Encoding.utf-8</font> :e <font color="#ffff00">++</font>enc<font color="#ffff00">=</font>utf<font color="#ff6060">-8</font> <font color="#ff40ff"><</font><font color="#ff40ff">CR</font><font color="#ff40ff">></font>
43 <font color="#ffff00">map</font> <font color="#ff40ff"><</font><font color="#ff40ff">F8</font><font color="#ff40ff">></font> :<font color="#ffff00">emenu</font> Encoding<font color="#ffff00">.</font><font color="#ff40ff"><</font><font color="#ff40ff">TAB</font><font color="#ff40ff">></font>
46 Если вы поместите эти строчки в ваш <tt>.vimrc</tt> то в gvim появится
47 новое меню Encoding, а при нажании клавиши F8 меню будет выскакивать
48 над командной строкой, в том числе и в текстовом режиме.
50 <H2>Автоматическое подхватывание правильного шрифта gvim в зависимости
53 Следующий фрагмент взят из <tt>.vimrc</tt> Артема Чуприны.
54 <pre style="background-color: #000000; color: white;">
55 <font color="#8080ff">" SetGuiFont()</font>
56 <font color="#8080ff">" Выставляет опцию 'guifont' согласно текущему состоянию локали или</font>
57 <font color="#8080ff">" переменной RESOURCE_NAME</font>
58 <font color="#ffff00">function</font>! SetGuiFont ()
59 <font color="#ffff00">if</font> <font color="#00ffff">has</font>(<font color="#ff6060">'x11'</font>) <font color="#ffff00">&&</font> <font color="#00ffff">has</font>(<font color="#ff6060">'gui_running'</font>)
60 <font color="#ffff00">let</font> resource_name <font color="#ffff00">=</font> <font color="#ff40ff">$RESOURCE_NAME</font>
61 <font color="#ffff00">if</font> resource_name <font color="#ffff00">==</font> <font color="#ff6060">''</font>
62 <font color="#ffff00">if</font> &encoding <font color="#ffff00">==</font> <font color="#ff6060">'koi8-r'</font>
63 <font color="#ffff00">let</font> resource_name <font color="#ffff00">=</font> <font color="#ff6060">'KOI'</font>
64 <font color="#ffff00">elseif</font> &encoding <font color="#ffff00">==</font> <font color="#ff6060">'8bit-cp1251'</font>
65 <font color="#ffff00">let</font> resource_name <font color="#ffff00">=</font> <font color="#ff6060">'WIN'</font>
66 <font color="#ffff00">elseif</font> &encoding <font color="#ffff00">==</font> <font color="#ff6060">'utf-8'</font>
67 <font color="#ffff00">let</font> resource_name <font color="#ffff00">=</font> <font color="#ff6060">'UTF'</font>
68 <font color="#ffff00">elseif</font> &encoding <font color="#ffff00">==</font> <font color="#ff6060">'iso-8859-5'</font>
69 <font color="#ffff00">let</font> resource_name <font color="#ffff00">=</font> <font color="#ff6060">'ISO'</font>
70 <font color="#ffff00">elseif</font> &encoding <font color="#ffff00">==</font> <font color="#ff6060">'latin1'</font>
71 <font color="#ffff00">let</font> resource_name <font color="#ffff00">=</font> <font color="#ff6060">'LAT'</font>
72 <font color="#ffff00">endif</font>
73 <font color="#ffff00">endif</font>
74 <font color="#ffff00">let</font> v:errmsg <font color="#ffff00">=</font> <font color="#ff6060">''</font>
75 <font color="#ffff00">silent</font>! <font color="#ffff00">new</font> <font color="#ffff00">+</font><font color="#ffff00">r</font>\ !xrdb\ <font color="#ffff00">-</font><font color="#ff40ff">qu</font>ery
76 <font color="#ffff00">exe</font> <font color="#ff6060">'silent! /^'</font> <font color="#ffff00">.</font> resource_name <font color="#ffff00">.</font> <font color="#ff6060">'\*font:'</font>
77 <font color="#ffff00">if</font> v:errmsg <font color="#ffff00">==</font> <font color="#ff6060">''</font>
78 <font color="#ffff00"> s</font><font color="#ff40ff">/</font>\s*$<font color="#ff40ff">//</font>
79 <font color="#ffff00">let</font> fontname <font color="#ffff00">=</font> <font color="#00ffff">matchstr</font>(<font color="#00ffff">getline</font>(<font color="#ff6060">'.'</font>), <font color="#ff6060">'\S\+$'</font>)
80 <font color="#ffff00">if</font> fontname <font color="#ffff00">!=</font> <font color="#ff6060">''</font>
81 <font color="#ffff00">let</font> &guifont <font color="#ffff00">=</font> fontname
82 <font color="#ffff00">endif</font>
83 <font color="#ffff00">endif</font>
84 <font color="#ffff00">q</font>!
85 <font color="#ffff00">endif</font>
86 <font color="#ffff00">endfunction</font>
89 Для того чтобы функция находила правильный шрифт требуется поместить
90 в <tt>.Xdefaults</tt> следующие ресурсы (или им подобные)::
91 <pre style="background-color: #000070;">
93 <font color="#00ff00">==== 8< [!xrdb -q | egrep '^[a-z][a-z][a-z]</font>*<font color="#00ff00">font</font>:<font color="#ff6060">'] ====</font>
94 <font color="#00ff00">iso</font>*<font color="#00ff00">font</font>:<font color="#ff6060"> -rfx-fixed-medium-r-normal--14-*-*-*-*-*-iso8859-5</font>
95 <font color="#00ff00">koi</font>*<font color="#00ff00">font</font>:<font color="#ff6060"> -rfx-fixed-medium-r-normal--14-*-*-*-*-*-koi8-r</font>
96 <font color="#00ff00">lat</font>*<font color="#00ff00">font</font>:<font color="#ff6060"> -misc-fixed-medium-r-normal--14-*-*-*-*-*-iso8859-1</font>
97 <font color="#00ff00">utf</font>*<font color="#00ff00">font</font>:<font color="#ff6060"> -misc-fixed-medium-r-normal--14-*-*-*-*-*-iso10646-1</font>
98 <font color="#00ff00">win</font>*<font color="#00ff00">font</font>:<font color="#ff6060"> -rfx-fixed-medium-r-normal--14-*-*-*-*-*-microsoft-cp1251</font>
99 <font color="#00ff00">==== >8 [!xrdb -q | egrep '^[a-z][a-z][a-z]</font>*<font color="#00ff00">font</font>:<font color="#ff6060">'] ====</font>