Обозначения vi и ex – два различных имени расширенной версии редактора ed. Эта программа работает как экранно–ориентированный редактор при обращении по имени vi и как строчно–ориентированный редактор при обращении по имени ex. VI (visual interpreter) – визуальный интерпретатор.
Редактор vi устроен таким образом, что текст, который вы видите на экране, представляет собой содержимое части буфера. Экран играет роль окна, через которое можно видеть содержимое буфера.
Для продвижения окна вперед по буферу используются следующие запросы:
^F – продвигает окно на целую страницу (т.е. размер окна);
^D – продвигает окно на половину страницы.
Для продвижения по буферу в обратном направлении используются запросы:
^B – продвигает окно на целую страницу;
^U – продвигает окно на половину страницы.
При достижении конца буфера вместо недостающих строк вводится литера «~».
На первое время для работы с редактором vi достаточно знать перечисленные ниже запросы.
Перемещение курсора:
0 – к началу текущей строки;
$ – к концу текущей строки;
H – к началу экрана (Home);
М – на середину экрана (Middle);
L – к концу экрана (Last);
nG – к строке с номером n (на последнюю строку, если n опущен);
w – для перемещения курсора вперед на начало следующего слова;
e – для перемещения на конец текущего слова;
b – для перемещения назад на начало слова;
Добавление нового текста:
a – после курсора;
А – к концу строки;
i – перед курсором;
I – в начале строки;
о – образование новой строки под текущей строкой;
О – образование новой строки над текущей строкой;
Изменение текста:
cw – до конца текущего слова;
сс – изменение всей строки;
Удаление текста:
х – исключить текущую литеру (при этом текст сдвигается на ее место);
dw – до конца текущего слова ;
dd – удаление всей строки;
Поиск и замещение текста:
r – замещение символа, под которым находится курсор, на другой символ;
R – замещение одной совокупности символов на другую, которую вы набираете;
s – замещение одного символа несколькими;
S – замещение всей строки (аналогично команде сс).
Перед большинством команд можно задавать коэффициент кратности,
Например: 3dd – удалит 3 строки, начиная с текущей.
Копирование и перемещение текста:
p– вставить текст из буфера после текущей позиции курсора;
P– вставить текст из буфера перед текущей позиции курсора;
“*p– вставить текст из буфера, поименованного буквой *;
“*y[число] – скопировать фрагмент текста в буфер, поименованный буквой *;
[число]Y или yy – скопировать всю строку в буфер.
В редакторе vi можно использовать запросы редактора ed, предваряя их двоеточием.
Наиболее часто используются следующие запросы:
:sh – вызвать программу–оболочку;
:!имя команды – выполнить указанную команду и вернуться в vi;
:r имя файла – считать файл;
:s... – заменить одну цепочку литер на другую;
:g... – глобальный поиск по цепочке.
Редактор vi имеет ряд внутренних переменных, определяющих различные режимы его работы. Текущие значения этих переменных выводятся командой :set all.
Опции редактора могут относиться к одной из трех групп:
- двоичные, например nu;
- числовые, например sw, wm;
- строковые, например dir.
Каждая переменная имеет имя и устанавливается при помощи одной из команд:
:set имя переменной;
:set имя переменной=значение.
Соответствующий режим отменяется командой
:set no имя переменной
Список имен внутренних переменных (в скобках даются допустимые сокращения):
autowrite(aw) – автоматическая запись буфера в файл перед выполнением ряда команд (т.е. принудительная запись в текущий файл перед вызовом нового файла);
number(nu) – выдавать строки текста вместе с их номерами;
wrapmargin(wm) – установить значение «заворачивания на границе» (т.е. устанавливает ширину поля от правого края экрана при автоматическом переводе слова на следующую строку);
shift width(sw) – смещение текста по командам << >> (по умолчанию установлено m=8);
directory(dir) – имя каталога, который должен содержать буфер редактирования (по умолчанию – /tmp);
Для установления постоянного действия в проведенных присваиваниях поместите команды (без двоеточия) в файл .exrc. Файл .exrc является запускающим файлом vi, и он выполняется каждый раз, когда вы запускаете редактор.
Чтобы закончить работу с редактором vi, нужно набрать символы:
:w , или :wq, или :x, или ZZ (без ввода знака :).
:q! – выход из файла без сохранения любых изменений.