НАЗВАНИЕ
vi - экранно-ориентированный (визуальный) дисплейный редактор, основанный
на ex
СИНТАКСИС
-
vi [-t тэг] [-r файл] [-l] [-L] [-wn] [-R] [-x] [-C]
[-c команда] файл ...
view [-t тэг] [-r файл] [-l] [-L] [-wn] [-R] [-x] [-C]
[-c команда] файл ...
vedit [-t тэг] [-r файл] [-l] [-L] [-wn] [-R] [-x] [-C]
[-c команда] файл ...
ОПИСАНИЕ
vi (visual) - экранно-ориентированный текстовый редактор, основанный на
базовом редакторе ex. Можно использовать командный режим ex из vi и
наоборот. Команды экранного режима описаны на этой странице справочного
руководства; установка опций (типа автоматической нумерации строк или
автоматического перехода на следующую строку при нажатии Enter), а также все
команды строкового редактора ex описаны на странице справочного
руководства ex(1).
При работе в vi, изменения, которые вы делаете в файле, отображаются на
экране терминала. Курсор на экране показывает текущую позицию в файле.
Эти утилиты обрабатывают и показывают символы дополнительного набора в
соответствии с локалью, заданной в переменной среды LC_CTYPE (см. LANG
в environ(5)), за исключением того,
что символ x, задаваемый в командах r, f, F,
m, t и T (см. раздел "СВОДКА КОМАНД" ниже) должен быть однобайтовым.
Вся обработка, включая поиск шаблонов с использованием регулярных
выражений, выполняется над символами, а не над столбцами или байтами. В
командном режиме утилиты распознают аргументы, указывающие количество
символов. Многостолбцовые символы при использовании всей ширины экрана.
Для показа ширины отображаемых многостолбцовых символов, выдается такое
же количество ASCII-символов >.
Опции командной строки
Редактор vi воспринимает следующие опции командной строки (ранее
описывавшиеся в документации опции рассмотрены в разделе "ПРИМЕЧАНИЯ"
на этой странице справочного руководства):
-t тэг |
Редактирует файл, содержащий тэг, и устанавливает редактор в
позицию, соответствующую определению тэга. Примечание:
тэги в файле тэгов должны идти в порядке возрастания
номеров строк. |
-r файл |
Редактирует файл после сбоя редактора или системы.
(Восстанавливает версию файла, которая была в буфере в
момент возникновения сбоя.) |
-l |
Устанавливает настройки для редактирования программ на
языке LISP. |
-L |
Выдает имена всех файлов, сохраненных в результате сбоя
редактора или системы. |
-wn |
Устанавливает стандартный размер окна в n строк. Эта опция
полезна при использовании редактора по низкоскоростной
линии. |
-R |
Режим только для чтения; устанавливается флаг только для
чтения, предотвращающий случайную перезапись файла. |
-x |
Опция шифрования; при ее задании vi имитирует команду X
редактора ex и предлагает пользователю ввести ключ. Этот
ключ используется для шифрования и дешифрования текста с
помощью алгоритма команды crypt. Команда X сама
определяет, является ли прочитанный текст зашифрованным
или нет. Временный файл буфера также шифруется с
использованием преобразованной версии введенного
пользователем ключа. См. "ПРИМЕЧАНИЯ" в конце данной страницы справочного
руководства. |
-C |
Опция шифрования; аналогичная опции -x, но vi имитирует
команду C редактора ex.
Команда C аналогична команде X, но
любой прочитанный текст считается зашифрованным. |
-c команда |
Начинает редактирование с выполнения указанной команды
редактора (обычно, команды поиска или позиционирования). |
Аргумент файл задает один или несколько файлов для редактирования.
Вызов view совпадает с vi, но при этом устанавливается флаг только для чтения.
Вызов vedit предназначен для начинающих. Он совпадает с vi, но при этом флаг
report устанавливается равным 1, устанавливаются флаги showmode и novice, а
флаг magic сбрасывается. Такие стандартные установки упрощают изучение vi.
Режимы vi
Командный режим |
Обычный и первоначальный режим. После завершения других
режимов происходит возврат в командный режим. Для отмены
частично введенной команды используется клавиша ESC. |
Режим ввода |
Устанавливается при вводе одной из следующих команд: a, A,
i, I, o, O, c, C, s,
S, R. Затем можно вводить произвольный
текст. Режим ввода можно прекратить нормально, нажав
клавишу ESC, или аварийно, с помощью прерывания. |
Последняя строка |
Чтение ввода для :, /, ? или !; заканчивается нажатием клавиши
Enter; символ прерывание отменяет выход из режима. |
В последующих описаниях CR означает нажатие клавиши Enter, а ESC -
нажатие клавиши Esc.
Примеры команд
стрелки |
клавиши со стрелками перемещают курсор |
h, j, k, l |
то же, что и клавиши со стрелками |
iтекстESC |
вставка текста |
cwновоеESC |
замена слова на новое |
easESC |
преобразование слово в множественное число (перейти в конец
слова; добавить s; выйти из режима ввода) |
x |
удаление символа |
dw |
удаление слова |
dd |
удаление строки |
3dd |
удаление трех строк |
u |
отмена предыдущего изменения |
ZZ |
выход из vi с сохранением изменений |
:q!CR |
выход, изменения игнорируются |
/textCR |
поиск текста |
^U, ^D |
прокрутка вверх или вниз |
:cmdCR |
любая команда ex или ed |
Счетчики перед командами vi
Перед некоторыми командами можно указывать числа. Они интерпретируются
одним из следующих способов.
номер строки/столбца |
z, G, | |
сколько экранов прокрутить |
^D, ^U |
количество повторений |
большинство других команд |
Прерывание, отмена
ESC |
прекратить вставку или отменить неполную команду |
DEL |
прерывание, выход из режима |
Манипулирование файлами
ZZ |
если файл изменен, записать и выйти; в противном
случае, выйти |
:wCR |
записать изменения |
:w!CR |
| форсированная запись, если права доступа изначально ее
не допускают |
:qCR |
выход |
:q!CR |
выход, игнорируя изменения |
:e имяCR |
редактировать файл имя |
:e!CR |
повторить редактирование, игнорируя изменения |
:e + имяCR |
редактировать, начиная с конца |
:e +n имяCR |
редактировать, начиная со строки n |
:e #CR |
редактировать другой файл |
:e! #CR |
редактировать другой файл, игнорируя изменения |
:w имяCR |
записать файл имя |
:w! имяCR |
перезаписать файл имя |
:shCR |
запустить командный интерпретатор, а затем вернуться |
:!командаCR |
выполнить команду, а затем вернуться |
:nCR |
редактировать следующий файл в списке аргументов |
:n argsCR |
задать новый список аргументов |
^G |
показать текущий файл и строку |
:ta тэгCR |
поместить курсор на указанный тэг |
Вообще, можно ввести любую команду ex или ed (такую как подстановка или
глобальная команда), если перед ней указать двоеточие и завеpшить ввод
нажатием Enter.
Перемещение по файлу
^F |
на экран вперед |
^B |
на экран назад |
^D |
прокрутить вниз пол-экрана |
^U |
прокрутить вверх пол-экрана |
nG |
перейти в начало указанной строки (по умолчанию -
последней), где n - номер строки |
/шаблон |
следующая строка, соответствующая шаблону |
?шаблон |
предыдущая строка, соответствующая шаблону |
n |
повторить последнюю команду / или ? в прямом
направлении |
N |
повторить последнюю команду / или ? в обратном
направлении |
/шаблон/+n |
n-ная строка после шаблона |
?шаблон?-n |
n-ная строка перед шаблоном |
]] |
следующий раздел/функция |
[[ |
предыдущий раздел/функция |
( |
в начало предложения |
) |
в конец предложения |
{ |
в начало параграфа |
} |
в конец параграфа |
% |
на соответствующую скобку (, ), { или } |
Перерисовка экрана
^L |
очистить и перерисовать окно |
^R |
очистить и перерисовать окно, если ^L соответствует
клавише стрелка право |
zCR |
перерисовать экран так, чтобы текущая строка была
вверху окна |
z- |
перерисовать экран так, чтобы текущая строка была внизу
окна |
z. |
перерисовать экран так, чтобы текущая строка была
посредине окна |
/шаблон/z-CR |
переместить строку, соответствующую шаблону, вниз
окна |
zn. |
использовать окно размером n строк |
^E |
прокрутить окно вниз на 1 строку |
^Y |
прокрутить окно вверх на 1 строку |
Пометка и возврат
`` |
переместить курсор на предыдущий контекст |
'' |
переместить курсор на первый непробельный символ в
строке |
mx |
пометить текущую позицию однобайтовой буквой
нижнего регистра x |
`x |
переместить курсор на метку x |
'x |
переместить курсор на первый непробельный символ в
строке, помеченной буквой x |
Перемещение по строкам
H |
на верхнюю строку экрана
|
L |
на последнюю строку экрана
|
M |
на среднюю строку экрана
|
+ |
на следующую строку, на первый непробельный символ
|
- |
на предыдущую строку, на первый непробельный символ
|
CR |
то же, что и +
|
v или j |
на следующую строку, в тот же столбец
|
^ или k |
на предыдущую строку, в тот же столбец
|
Посимвольное перемещение
^ |
на первый непробельный символ |
0 |
в начало строки |
$ |
в конец строки |
l или -> |
на символ вперед |
h или <- |
на символ назад |
^H |
то же, что и стрелка влево (клавиша Backspace) |
пробел
то же, что и стрелка вправо (пробел) |
fx |
найти следующий однобайтовый символ x |
Fx |
найти предыдущий однобайтовый символ x |
tx |
перейти на символ перед следующим однобайтовым
символом x |
Tx |
перейти на символ после предыдущего однобайтового
символа x |
; |
повторить последнюю команду f, F, t или T |
, |
выполнить команду, противоположную последней из
команд f, F, t или T |
n| |
перейти в столбец n |
% |
перейти на соответствующую скобку |
Слова, предложения, абзацы
w |
на слово вперед |
b |
на слово назад |
e |
в конец слова |
) |
на следующее предложение |
} |
на следующий абзац |
( |
на предыдущее предложение |
{ |
на предыдущий абзац |
W |
вперед на слово, отделенное пробелом |
B |
назад на слово, отделенное пробелом |
E |
в конец слова, отделенного пробелом |
Исправления в ходе вставки
^H |
стереть последний символ (забой - клавиша Backspace) |
^W |
стереть последнее слово |
erase |
символ стирания терминала, то же, что и ^H (забой) |
kill |
символ удаления строки терминала, стирает введенную
строку |
\ |
маскирует символы стирания и удаления строки |
ESC |
завершает ввод, возвращает в командный режим |
DEL |
прерывание, прекращает режим ввода |
^D |
обратно на один символ табуляции; переустановить
левую границу автоматического выравнивания |
^^D |
сиркумфлекс (^) после которого идет Ctrl-d (^D);
обратно в начало строки; не переустанавливать левую
границу автоматического выравнивания |
0^D |
обратно в начало строки; переустановить левую границу
выравнивания |
^V |
замаскировать непечатный символ |
vi использует ввод через Ctrl управляющих символов ASCII, а также
восьмеричную запись для непечатных 8-битовых символов.
Вставка и замена
a |
добавление после курсора |
A |
добавление в конце строки |
i |
вставка перед курсором |
I |
вставка перед первым непробельным символом |
o |
новая строка под текущей |
O |
новая строка над текущей |
rx |
заменяет один символ на однобайтовый символ x |
RтекстESC |
заменяет символы на введенный текст |
~ |
изменяет верхний регистр на нижний и наоборот |
Операторы
После операторов выполняется перемещение курсора, и они влияют на весь
перемещаемый текст. Например, поскольку w перемещает курсор на слово
вперед, dw удаляет слово, через которое перескакивает курсор. Удвоение
оператора, например, dd, оказывает воздействие на целые строки.
d |
удаление |
c |
изменение |
y |
копирование строк в буфер |
< |
сдвиг влево |
> |
сдвиг вправо |
! |
фильтрация строк через команду |
Другие операции
C |
изменить оставшуюся часть строки (c$) |
D |
удалить оставшуюся часть строки (d$) |
s |
подставить символы (cl) |
S |
подставить строки (cc) |
J |
соединить строки в одну |
x |
удалить символы (dl) |
X |
удалить символы перед курсором (dh) |
Y |
скопировать строки в буфер (yy) |
Вырезание и вставка
Вставка вставляет последний удаленный или скопированный текст; однако, если
используется именованный буфер (с использованием символа нижнего регистра
ASCII a-z), вставляется текст из соответствующего буфера.
3yy |
скопировать 3 строки |
3yl |
скопировать 3 символа |
p |
вставить текст после курсора |
P |
вставить текст перед курсором |
"xp |
вставка из буфера x |
"xy |
копирование в буфер x |
"xd |
вырезание в буфер x |
Отмена, повторное выполнение, извлечение
u |
отменить последнее изменение |
U |
восстановить текущую строку |
. |
повторить последнее изменение |
"dp |
восстановить d-тое последнее удаление |
АВТОРЫ
vi и ex базируются на программном обеспечении, разработанном в
Калифорнийском университете в Бэркли, отделение компьютерных наук,
Department of Electrical Engineering and Computer Science.
ФАЙЛЫ
- /var/preserve
-
стандартный каталог, в котором размещаются временные рабочие файлы;
его можно изменить с помощью опции directory (см. описание команды
set в ex(1))
- /usr/share/lib/terminfo/?/*
-
скомпилированная база данных описаний терминалов
- /usr/share/lib/.COREterm/?/*
-
подмножество скомпилированной базы данных описаний терминалов
- /usr/lib/locale/локаль/LC_MESSAGES/uxed.abi
-
файл сообщений для текущего языка (См. LANG
в environ(5).)
ССЫЛКИ
-
ctags(1),
ed(1),
edit(1),
ex(1)
Две опции, хотя они по-прежнему поддерживаются, были заменены в
документации на опции, соответствующие стандарту синтаксиса команд
(Command Syntax Standard - см. intro(1)).
Опция -r без аргументов заменена
опцией -L, а опция +команда - на -c команда.
Опции шифрования и соответствующие команды поставляются в составе пакета
утилит шифрования (Encryption Utilities), который доступен только в
Соединенных Штатах.
Изменение записей в файле /usr/share/lib/terminfo/?/* или
/usr/share/lib/.COREterm/?/* (например, изменение или удаление некоторых
записей) может повлиять на программы типа vi, предполагающие наличие
корректной записи. В частности, удаление "тупого" ("dumb") терминала может
вызвать неожиданные проблемы.
Программные табуляции, задаваемые с помощью ^T, срабатывают только после
автоматического выравнивания (autoindent).
Сдвиги влево и вправо на интеллектуальных терминалах не используют
операций, задаваемых символами вставки или удаления терминала.
Copyright 1994 Novell, Inc.
Copyright 2000 В. Кравчук,
OpenXS Initiative, перевод на русский язык