Редактор 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<CR>
При успешном создании нового файла, редактор vi напечатает следующую информацию:
"three" [New file] 1 line, 20 characters
Чтобы записать текущую строку в файл, укажите . (точку) как адрес строки:
:.w junk<CR>
Создастся новый файл с именем junk. Он будет содержать только текущую строку буфера vi.
Вы можете записать часть буфера в новый файл, обозначив границы строк. Например, чтобы строки с 23-й по 37-ю записать в файл, введите следующую команду:
:23,37w newfile<CR>
Вы можете переместить курсор к любой строке в буфере, если введете команду:
:n<CR>
где n - номер строки в буфере.
Одним из самых простых способов удаления всех строк от текущей строки и до конца буфера является использование команды "d" построчного редактора со специальнымим символами для текущей и последней строк:
:.,$d<CR>
где .(точка) - обозначает текущую
строку;
$ - обозначает последнюю строку.
Чтобы добавить текст из файла ниже указанной строки в буфер редактора, воспользуйтесь командой "r". Например, чтобы перенести содержимое файла data в ваш текущий файл, поместите курсор на то место, где должен стоять текст и введите команду:
:r data<CR>
Вместо перемещения курсора вы можете указать номер строки. Например, чтобы вставить файл data после 56-й строки в буфере, введите:
:56r data<CR>
В табл. 17 приведены команды построчного редактора, доступные в редакторе vi.
Таблица 17
Команды построчного редактора
Команда | Функция |
---|---|
: | Обозначает, что следующая за ней команда является командой построчного редактора |
:sh<CR> | Временный возврат к shell для выполнения команд shell |
^d | Возврат из временного shell в текущее окно vi для продолжения редактирования |
:n<CR> | Переход к n-ой строке буфера |
:x,yw data<CR> | Записать строки от номера x до номера y в новый файл data |
:$<CR> | Переход к последней строке буфера |
:.,$d<CR> | Удалить все строки в буфере, начиная с текущей и до послед- ней строки |
:r shell.file<CR> | Вставить содержимое shell.file после текущей строки в буфере |
:s/text/new_words/<CR> | Заменить первое появление символов text в текущей строке на new_words |
:s/text/new_words/g<CR> | Заменить каждое появление символов text в текущей строке на new_words |
:g/text/s//new_words/g<CR> | Заменить каждое появление символов text в файле на new_words |
Назад | Содержание | Вперед