]> www.wagner.pp.ru Git - sites/home_page.git/blob - hints/vim.html
Исправлена опечатка в аннотации к Детям Пространства
[sites/home_page.git] / hints / vim.html
1 <HTML><HEAD>
2 <BASE HREF="http://www.wagner.pp.ru/~vitus/tips/vim.html">
3
4 <TITLE>Немного о настройке Vim</TITLE>
5 <META NAME="description" CONTENT="Редактирование текстов в разных
6 кодировках, выбор шрифта при запуске  в разных локалях">
7 </HEAD><BODY>
8 <H1>Немного о настройке <A HREF="http://www.vim.org">Vim</A></H1>
9
10 <H2>Редактирование текста в разных кодировках</H2>
11
12 Vim 6.x понимает тексты в разных кодировках. Кодировку можно указать
13 при открытии файла (команды <tt>:edit</tt> и <tt>:split</tt>) с помощью
14 опции <tt>++enc=<i>имя</i> <i>файл</i></tt>, где <i>имя</i> - любое имя
15 кодировки известное вашему системному iconv.
16 <p>
17
18 Простейший способ сделать перекодировку на лету - повесить команды
19 перегрузки текущего файла как файла с разными кодировками на
20 какие-нибудь кнопки. Вот так:
21
22 <div style="width: 30%; background-color: black; color: white;">
23 <pre>
24 <font color="#ffff00">map</font> <font color="#ff40ff">&lt;</font><font color="#ff40ff">F2</font><font color="#ff40ff">&gt;</font> :<font color="#ffff00">e</font> <font color="#ffff00">++</font>enc<font color="#ffff00">=</font>cp1251 <font color="#00ffff">%</font><font color="#ff40ff">&lt;</font><font color="#ff40ff">CR</font><font color="#ff40ff">&gt;</font>
25 <font color="#ffff00">map</font> <font color="#ff40ff">&lt;</font><font color="#ff40ff">F3</font><font color="#ff40ff">&gt;</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">&lt;</font><font color="#ff40ff">CR</font><font color="#ff40ff">&gt;</font>
26 <font color="#ffff00">map</font> <font color="#ff40ff">&lt;</font><font color="#ff40ff">F4</font><font color="#ff40ff">&gt;</font> :<font color="#ffff00">e</font> <font color="#ffff00">++</font>enc<font color="#ffff00">=</font>ibm866 <font color="#00ffff">%</font><font color="#ff40ff">&lt;</font><font color="#ff40ff">CR</font><font color="#ff40ff">&gt;</font>
27 <font color="#ffff00">map</font> <font color="#ff40ff">&lt;</font><font color="#ff40ff">F5</font><font color="#ff40ff">&gt;</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">&lt;</font><font color="#ff40ff">CR</font><font color="#ff40ff">&gt;</font>
28 </pre>
29 </div>
30
31 Иногда хочется чего-то более красивого, например, не запоминать пять
32 клавиш, а запомнить одну, и чтобы выскакивала менюшка. Это тоже
33 делается:
34
35 <div style="width: 60%; background-color: black; color: white;">
36 <pre>
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">&lt;</font><font color="#ff40ff">Tab</font><font color="#ff40ff">&gt;</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">&lt;</font><font color="#ff40ff">CR</font><font color="#ff40ff">&gt;</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">&lt;</font><font color="#ff40ff">CR</font><font color="#ff40ff">&gt;</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">&lt;</font><font color="#ff40ff">CR</font><font color="#ff40ff">&gt;</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">&lt;</font><font color="#ff40ff">CR</font><font color="#ff40ff">&gt;</font>
43 <font color="#ffff00">map</font> <font color="#ff40ff">&lt;</font><font color="#ff40ff">F8</font><font color="#ff40ff">&gt;</font> :<font color="#ffff00">emenu</font> Encoding<font color="#ffff00">.</font><font color="#ff40ff">&lt;</font><font color="#ff40ff">TAB</font><font color="#ff40ff">&gt;</font>
44 </pre>
45 </div>
46 Если вы поместите эти строчки в ваш <tt>.vimrc</tt> то в gvim появится
47 новое меню  Encoding, а при нажании клавиши F8  меню будет выскакивать
48 над командной строкой, в том числе и в текстовом режиме.
49
50 <H2>Автоматическое подхватывание правильного шрифта gvim в зависимости 
51 от локали</H2>
52
53 Следующий фрагмент взят из <tt>.vimrc</tt> Артема Чуприны.
54 <pre style="background-color: #000000; color: white;">
55 <font color="#8080ff">&quot; SetGuiFont()</font>
56 <font color="#8080ff">&quot;   Выставляет опцию 'guifont' согласно текущему состоянию локали или</font>
57 <font color="#8080ff">&quot;   переменной 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">&amp;&amp;</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> &amp;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> &amp;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> &amp;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> &amp;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> &amp;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> &amp;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>
87 </pre>
88
89 Для того чтобы функция находила правильный шрифт требуется поместить
90 в <tt>.Xdefaults</tt> следующие ресурсы (или им подобные)::
91 <pre style="background-color: #000070;">
92
93 <font color="#00ff00">==== 8&lt; [!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">==== &gt;8 [!xrdb -q | egrep '^[a-z][a-z][a-z]</font>*<font color="#00ff00">font</font>:<font color="#ff6060">'] ====</font>
100
101
102 </pre>
103
104
105 </BODY>
106
107 </HTML>