Настройка редактора vi: макросы, русификация, настройки
Настройка редактора vi
Привожу здесь свой файл настроек vi — ~/.exrc
Но обратите внимание на то, что если его просто скопипаситить, то работать будет не всё(!) Читайте ниже о том, как правильно создать свой .exrc.
" ————— setup
set autoindent
set backup="vi.bak"
set showmode
set exrc
set extended
set ruler
set verbose
set sw=2
" ————— macro
" F1 sh
map OPsh 1Gi#!/bin/sh^M^M^[«
" F1 py
map OPpy 1Gi#!/usr/local/bin/python^M^M^[«
" F1 pl
map OPpl 1Gi#!/usr/local/bin/perl^M^M^[«
" F2
map OQ :w^M
" F3
map OR :wq^M
" esc-esc
map ^[^[ :q^M
" ————— ru
map й q
map ц w
map у e
map к r
map е t
map н y
map г u
map ш i
map щ o
map з p
map х [
map ъ ]
map ф a
map ы s
map в d
map а f
map п g
map р h
map о j
map л k
map д l
map ж ;
map э '
map я z
map ч x
map с c
map м v
map и b
map т n
map ь m
map Й Q
map Ц W
map У E
map К R
map Е T
map Н Y
map Г U
map Ш I
map Щ O
map З P
map Х {
map Ъ }
map Ф A
map Ы S
map В D
map А F
map П G
map Р H
map О J
map Л K
map Д L
map Ж :
map Э "
map Я Z
map Ч X
map С C
map М V
map И B
map Т N
map Ь M
map Б <
map Ю >
" эти две пары конфликтуют
" можно оставить либо одну, либо другую
"map б ,
"map ю .
map . /
map , ?
Комментарии к настройке
Файл состоит из трёх секций: настройка редактора, создание макросов и русификация.
Настройка редактора
Здесь включено несколько полезных опций:
• autoindent — авто-отступ
• backup="vi.bak" — создание резервной копии с заданным именем
• showmode — показывать текущий режим
• exrc — пытаться найти настройки в локальной директории
• extended — включить расширенные регулярные выражения
• ruler — показывать текущие строку и колонку
• verbose — выдавать расширенные сообщения об ошибках
• set sw=2 — установить отступ в два пробела (используется в командах >> и <<)
Существует много других опций, которым я не нашёл применения, но вы, возможно, найдёте. Смотрите man 1 vi.
Создание макросов
Это самая сложная тема. Раздел макросов нельзя копировать «как есть». Его нужно набрать самостоятельно.
Макросы имеют вид:
map <что заменить> <на что заменить>
Давайте разберём самый простой макрос: F2 — «сохранить файл».
Сперва нам надо узнать, какую последовательность символов выдаёт клавиша F2. Для этого запускаем какую-нибудь нейтральную команду вывода на консоль (cat — хороший выбор), нажимаем F2 и смотрим, что получилось. У меня получилось вот что:
~$ cat
^[OQ
У вас результат может быть иным, зависит от настроек консоли, но суть от этого не меняется. Мы видим тут три символа: ^[ — esc, и латинские буквы O и Q.
Именно эту последовательность символов получит vi, когда вы нажмёте F2. (Вы могли бы не нажимать F2, а использовать последовательность клавиш ^[OQ — результат бы не изменился).
Первый символ — esc — мы не будем включить в макрос. Пусть vi обработает его обычным способом, перейдя в режим команд. Итого, нам надо создать макрос для последовательности OQ.
Но набрать его не просто, мы должны закодировать в нём нажатие на «Enter». Для этого с клавиатуры надо набрать последовательно Ctrl-V — Enter. На экране при этом появится пара символов ^M. Аналогично надо набирать все управляющие последовательности.
В моей конфигурации предусмотрено несколько макросов для функциональных клавиш и последовательностей клавиш, начинающихся с функциональной (набирать надо быстро).
• F1 — s — h — добавляем шапку #!/bin/sh и возвращаемся в текущую строку
• F1 — p — l — добавить шапку #!/usr/local/bin/perl
• F1 — p — y — добавить шапку #!/usr/local/bin/python
• F2 — сохранить файл
• F3 — сохранить и выйти
• esc — esc — выйти без сохранения, если файл не изменился
Русские команды
Третья секция очень проста — здесь заводятся макросы для русских букв. Теперь все команды будут работать и на русской раскладке.