Краткий обзор редактора vi (vimvi improved).

1) Общие сведения. Редактор vi имеет 3 режима работы: перемещение по тексту (основной режим), режим ввода текста и режим ввода команд. Плюс экспресс-команды основного режима.

Переход из основного режима в режим ввода текста осуществляется по магическим клавишам (см. ниже). Переход в режим ввода команд - по символу ":". Возврат в основной режим происходит по нажатию клавиши "Esc".

2) Основной режим (режим просмотра). В основном режиме можно перемещать курсор по тексту, осуществлять поиск по образцу и выполнять экспресс-команды. Для перемещения по тексту годятся стрелочки (®,,­,¯), пробел и буквы j, k,h и l. Клавиши "Home" и "End", как правило, работают и перемещают курсор в начало и конец строки, но более традиционно это перемещение выполняется по символам "0" и "$". В границах текущей строки можно перейти к указанному символу (например, z): вперед - fz или назад – Fz. Символы «(» и «)» переведут курсор к началу и концу предложения, символы «{» и «}» - к началу и концу абзаца.

Сочетание (одновременное нажатие) клавиш "Shift" и "g" (просто G) перемещает курсор на последнюю строку, с помощью последовательности NG (N - любое число, необязательно однозначное) можно перевести курсор на строку с номером N. Перейти к заданному образцу текста можно по сочетанию «/text» (в направлении от начала файла к концу) или «?text» (в направлении от конца файла к началу).

НЕ нашли? Не то? Что вы ищете?

Повтор поиска выполняется по нажатию клавиши «N».

Экспресс-команды позволяют легко и быстро выполнять несложные действия, не выходя из режима перемещения по тексту:

ZZ

Выход из редактора с сохранением изменений

[n]dd

Удалить n строк, начиная с текущей строки, в неименованный буфер

[n]yy

Скопировать n строк, начиная с текущей строки, в неименованный буфер

P или p

Вставить содержимое неименованного буфера перед(после) текущей строки

[n]x

Удалить n символов, начиная с символа под курсором в неименованный буфер

d[n]w

Удалить n слов в неименованный буфер

~

Изменить регистр символа под курсором

J

Соединить текущую строку со следующей строкой

Неименованный буфер затирается при следующей записи в него. Если необходимо сохранить несколько удаленных фрагментов, нужно использовать именованные буферы. Например, скопировать 3 строки в буфер «x» и восстановить их из него: x3yy, затем xp.

3) Режим ввода текста. В режиме ввода текста можно вводить текст (с различными нюансами). Переход выполняется по нажатию магических клавиш, нюансы зависят от избранного способа перехода:

Символы

Перехода

Мнемоника

Нюансы

A, a

append

Текст будет добавлен – в конце строки (A) или сразу после курсора (a)

I, i

insert

Текст будет вставлен – в начале строки (I) или перед курсором (i)

O, o

open

Ввод начнется с новой строки до/после текущей

C, c

change

Изменить текущую строку полностью (C) или частями (с). Части нужно указывать: w – слово, 2w – 2 слова, $ - до конца строки.

S, s

substitute

Переход в режим ввода текста с заменой текущей строки/символа под курсором

R, r

replace

Заменить произвольное число символов (R) или символ под курсором (r) (без выхода из основного режима)

4) Режим ввода команд. Для сохранения изменений на диске, перехода к редактированию другого файла или глобального редактирования нужно перейти в режим ввода команд. Это команды строчных редакторов-предшественников vi (ed, ex). Нужно отметить, что vi – строчный редактор, в нем все строки редактируемого файла адресуются своими номерами, однако возможна и контекстная адресация. Знак «$» означает последнюю строку в файле (а также конец текущей строки, все зависит от контекста команды). Команды контекстной замены, удаления, копирования и перемещения строк требуют указания диапазона адресов. Если последний отсутствует, команда применяется только к текущей строке. Так, например, чтобы удалить текущую строку, нужно ввести команду :d. Если же хочется удалить 100 первых строк файла, нужно набрать команду :1,100d. Команда :/grand/d удалит ближайшую за текущей строку, содержащую строку “grand”. Чтобы удалить все строки с заданным образцом, необходимо отметить образец меткой g - :g/grand/d (метка v меняет смысл глобализации на обратный). В образцах и контекстных адресах допускаются ограниченные регулярные выражения. Символы «^» и «$» обозначают начало и конец строки соответственно.

Редактировать можно несколько файлов сразу, указав их имена в строке вызова редактора. Кроме того, любой файл можно вызвать в редактор во время сеанса его работы. Для перехода в режим ввода команд необходимо ввести символ «:». В улучшенном vi поддерживается история команд, сохраняемая даже между сеансами редактирования. Перемещаться по списку истории можно клавишами «↑» и «↓». Команда help загружает справочное руководство по редактору.

Команда

Значение

.=

Узнать номер текущей строки.

=

Узнать номер последней строки файла.

q, q!

Выход из редактора с/без сохранения сделанных изменений.

w, w!, wq,

w имя_файла

Записать сделанные изменения в файл; записать изменения, несмотря на отсутствие прав на запись в файл; сделать это с последующим выходом из редактора; записать наредактированное в файл с указанным именем.

r имя_файла

Считать указанный файл и разместить его содержимое после текущей строки.

e имя_файла

Перейти к редактированию указанного файла.

U

Откат назад – отмена последнего изменения.

!команда_shell

Выполнить указанную команду интерпретатора, не выходя из редактора.

[g][адрес]s/образец/замена/[g]

[диапазон_адресов]s/образец/замена/[g]

Замена образца на строку замены в указанных номерами или контекстным адресом строках. Образец может быть шаблоном, строка замены только строкой. Если после строки замены не указана опция g, заменяется только первое вхождение образца в строке.

[v][адрес]s/образец/замена/[g]

Выполнить замену во всех строках, не соответствующих указанному контекстному адресу.

диапазон_адресовmномер_строки

Переместить строки в указанном диапазоне за указанную строку.

диапазон_адресовtномер_строки

Скопировать строки из указанного диапазона за указанную строку.

Vi (vim) поддерживает подцветку текста и автоматическое форматирование, предоставляя некоторые удобства для создание программ. Это вкупе со свойством исполнения команд оболочки делает его похожим на платформу для работы программиста, но все-таки его главное назначение– быстрая правка конфигурационных файлов, так как это единственный экранный редактор, доступный даже в однопользовательской моде.