Редактор VI

vi (visual) — текстовый редактор операционных систем семейства UNIX

В отличие от многих привычных редакторов, vi имеет модальный интерфейс. Это означает, что одни и те же клавиши в разных режимах работы выполняют разные действия. В редакторе vi есть два основных режима: командный режим и режим вставки. По умолчанию, работа начинается в командном режиме.

В режиме вставки клавиатура используется для набора текста. Для выхода в командный режим используется клавиша  Esc  или комбинация  Ctrl  +  .

В командном режиме алфавитные клавиши соответствуют командам перемещения и изменения текста. Так, команды h, j, k, l перемещают курсор на одну позицию влево, вниз, вверх, вправо соответственно, команда x удаляет один символ и т. д. Это позволяет работать без необходимости использования дополнительной клавиатуры и клавиш-модификаторов, таких, как  Ctrl ,  Alt  и т. д. Более сложные операции редактирования получаются комбинацией простых, например, 2dw удаляет два слова. Для полнотекстовых операций имеется возможность задавать команды ex в подобии командной строки, например, :1,.s/wiki/[[wiki]]/g заключит все вхождения последовательности символов wiki от начала текста до текущей позиции в двойные квадратные скобки.

РЕЖИМЫ: Ввода == ESC ====> Командный == :Q ==> Редактора ed

            ^                  |     ^                |

            +----aAiIcCrRs <---+     +----- vi -------+

ПЕРЕМЕЩЕНИЕ ПО ФАЙЛУ

 

{стрелки},hjkl

^U/^D   табуляция вверх/вниз

^F/^B   страницу вниз/вверх

^E/^Y   подвинуться на строку вниз/вверх

w/b/e   вперед/назад на слово/в конец слова

W/B/E   вперед/назад на слово/в конец опробеленного слова

 (/)    назад/вперед на предложение

 {/}    назад/вперед на абзац

[[/]]   назад/вперед на функцию или секцию

%       найти парную скобку ( или {

{n}G    на строку {n}

{n}|    в колонку {n}

H/M/L   в начало/середину/конец экрана

z/z./z- текущую строку в начало/середину/конец экрана

^/$/0   начало/конец строки

 

РЕДАКТИРОВАНИЕ ТЕКСТА

 

x       уничтожить символ

X       забой

J       склеить строки

 

ПЕРЕХОД В РЕЖИМЫ ВВОДА

 

a/i / A/I       вставка за/перед _ / концом/началом строки

R       режим замены

r       буква на букву

s       буква на буквы

o/O     вставить строку под/над _

C$      Заменить конец строки

 

ИНФОРМАЦИЯ

 

^G      о текущем файле и строке

 

ОТКАТКА (ВОЗВРАТ НА ОДИН ШАГ)

 

u       откатка (одна)

^L/^R   перерисовать

 

РЕДАКТИРОВАНИЕ В РЕЖИМЕ ВВОДА

 

ESC     вернуться в командный режим

Забой   Забой

^W/^U   Убрать слово/Убрать строку

^V      Вставить CRTL-символ[ы]

 

ОПЕРАТОРЫ С ПОЗИЦИОНИРОВАНИЕМ

 

p/P     вспомнить фрагмент за/перед _

 

{n} ["буква_буфер] "команда" {m}"команда позиционирования"

  весь фрагмент запоминается!    или повтор команды для строки

d       уничтожать фрагмент

y       запоминать фраг

c       заменить фрагмент (==> в режим ввода )

</>     сдвинуть влево/вправо

! команда       пропустить фрагмент через фильтр

 

ПРИМЕРЫ

 

7yy     запомнить 7 строк в неименованном буфере

"aAd{   добавить к буф a с удалением от _ до начала абзаца

!G sort отсортировать строки от курсора и до конца

 

"МАКРОКОМАНДЫ"

 

:map  клавиша_имя_макро тело_макрокоманды  {CR}

:map! клавиша_имя_макро тело_макрокоманды  {CR}  - в режиме ввода

:ab   сокращение        сокращаемый_текст  {CR}  - в режиме ввода

 

ПОИСК

 

?строка         искать вверх

/строка         искать вниз

n               повторить поиск

N               вернуться на последнюю найденную строку

 

ПОИСК_С_ЗАМЕНОЙ

 

:s/рег_выраж/замена/gc   - глобальный с подтверждением

:Q/vi                      вход / выход в режим ed

:g/строка                - поставить визуальный фильтр

:+5                        движение по файлу

 

РЕДАКТОР_ED. Вход ":" (надолго "Q") Выход "CR" / (VI)

 

^^      Перейти в альтернативное окно

:[1,$] w [>>] [file]   записать в file [от 1 до $ строки]

:q[!]  закончить сеанс [форсированно]

:[15]r [file] или [!komanda]   вставить после [15] стр

:e     редактировать новый файл

:n     редактировать следующий файл

:sh    выйти в Shell

:! команда  запустить на выполнение Shelloм

 

УСТАНОВКА РЕЖИМОВ VI

 

:set nu / nonu   нумеровать/ненумеровать строки

:set smd{CR}     показывать текущий режим

EXINIT="конфигурационные команды"       - переменная окружения

.exrc                           - файл с командами конфигурации

 

ИСПОЛЬЗОВАНИЕ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ

 

Чтобы манипулировать не только целыми фрагментами, выбираемыми регулярными выражениями, но и их частями, используются помеченные регулярные выражения: если конструкция \(...\) появляется в регулярном выражении, то часть соответствующего ей фрагмента доступна как \1. Допускается использование до девяти помеченных выражений, на которые ссылаются \1, \2 и т.д.

Вот ряд примеров использования помеченных регулярных выражений: