vi(1) |
vi(1) |
vi - экранно-ориентированный (визуальный) дисплейный редактор, основанный на ex
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.
Командный режим | Обычный и первоначальный режим. После завершения других режимов происходит возврат в командный режим. Для отмены частично введенной команды используется клавиша 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 |
Перед некоторыми командами можно указывать числа. Они интерпретируются одним из следующих способов.
номер строки/столбца | 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) |
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.
Две опции, хотя они по-прежнему поддерживаются, были заменены в документации на опции, соответствующие стандарту синтаксиса команд (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, перевод на русский язык
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |