Редактор vi
имеет доступ ко многим командам построчного редактора
ex
. В этом подразделе обсуждаются некоторые наиболее часто используемые
команды.
Команды редактора ex
очень похожи на команды редактора ed
.
Команды построчного редактора начинаются с символа :
(двоеточие). После
того, как вы введете двоеточие, курсор опускается в низ экрана и отображает
двоеточие. Оставшаяся часть команды тоже появляется внизу экрана.
Когда вы входите в vi
, то содержимое буфера заполняет ваш экран, делая
невозможным выдачу команд для shell
. Однако вам может это понадобиться.
Например, вам необходимо будет получить информацию из другого файла для
присоединения ее к текущему тексту. Вы можете получить эту информацию, запустив
одну из команд shell
, которая отображает текст файла на экране. Например,
cat
или pg
. Однако процедура завершения работы с редактором и
повторный вход в редактор потребуют времени и сил. Редактор vi
предлагает
вам два способа временного выхода из редактора для того, чтобы вы могли ввести
команды shell
(и даже редактировать другие файлы) не покидая сам
редактор. Это команды :sh
и :!
.
Команда :!
позволяет вам выйти из редактора и запустить команду
shell
одной командной строкой. Находясь в командном режиме редактора
vi
, введите :!
. Эти символы будут напечатаны в низу экрана. Сразу
же после символа !
введите команду shell
. Shell
запустит
вашу команду, даст вам ответ и напечатает сообщение:
Hit return to continue
После того, как вы нажмете клавишу RETURN
, vi
обновит экран и
курсор примет свое прежнее положение.
Команда редактора :sh
позволяет вам делать то же самое, но ведет по
другому себя на экране. Из командного режима редактора vi
введите
:sh
и нажмите клавишу RETURN
. Подсказка команды shell
появится на следующей строке. Ведите ваши команды после подсказки так, будто бы
вы работаете в нормальном режиме с shell
. Когда вы будете готовы
вернуться к редактору vi
, введите ^d
или exit
. Экран
обновит информация из вашего буфера и курсор вновь переместится на прежнее
место.
При временном переходе к shell
даже изменение каталогов не мешает
возврату к буферу редактора vi
при вводе ^d
или exit
.
Команда w
позволяет вам создавать файл, копируя строки текста из файла,
который вы в данный момент редактируете, в файл, который вы указали. Чтобы
создать новый файл нужно указать строку или строки (номера строк) и имя нового
файла в командной строке. Общий формат этой команды:
:line_number[,line_number]w filename
Например, чтобы записать третью строку буфера в файл three
, введите:
:3w three
При успешном создании нового файла, редактор vi
напечатает следующую
информацию:
"three" [New file] 1 line, 20 characters
Чтобы записать текущую строку в файл, укажите .
(точку) как адрес строки:
:.w junk
Создастся новый файл с именем junk
. Он будет содержать только текущую
строку буфера vi
.
Вы можете записать часть буфера в новый файл, обозначив границы строк.
Например, чтобы строки с 23-й по 37-ю записать в файл, введите следующую
команду:
:23,37w newfile
Вы можете переместить курсор к любой строке в буфере, если введете команду:
:n
где n - номер строки в буфере.
Одним из самых простых способов удаления всех строк от текущей строки и до
конца буфера является использование команды d
построчного редактора со
специальнымим символами для текущей и последней строк:
:.,$d
где .
(точка) - обозначает текущую строку; $
- обозначает последнюю
строку.
Чтобы добавить текст из файла ниже указанной строки в буфер редактора,
воспользуйтесь командой r
. Например, чтобы перенести содержимое файла
data в ваш текущий файл, поместите курсор на то место, где должен стоять текст и
введите команду:
:r data
Вместо перемещения курсора вы можете указать номер строки. Например, чтобы
вставить файл data после 56-й строки в буфере, введите:
:56r data
pattern
выполнить команду command редактора ex
. Построчный редактор напечатает
све строки, содержащие pattern
;
pattern
в текущей строке и заменяет
его на new_words
;
ex
заменяет
каждое появление pattern
в текущей строке;
helix
. Каждое найденное слово helix
заменяется на double
helix
. Ограничители после команды s
позволяют не вводить слово
helix
каждый раз. Команда запоминает слово между ограничителями после
команды g
.