НАЗВАНИЕ
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, перевод на русский язык