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-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |