Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Интернет: маркетинг, реклама, торговля" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
man vi(1) и анонс на неделю
Выпуск 21
man vi(1)
Уважаемые подписчики! Я вас немного обманул. Страница по редактору vi выходит уже сегодня, 4 марта. А к 6 марта постараюсь успеть сделать man sed(1). Далее по плану - grep, причем это будет новый перевод, по Solaris 8. Среди старых страниц этой почему-то не оказалось... Но это уже где-то после 8 марта.
Что почитать
Почитать можно совет дня на сайте SunGuru. Вдруг совет окажется для вас полезным. Да и сам сайт тоже содержит много полезного, хотя по внешнему виду мне очень не нравится.
vi(1)
НАЗВАНИЕ
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 сама определяет, является ли прочитанный текст зашифрованным или нет. Временный файл буфера также шифруется с использованием преобразованной версии введенного пользователем ключа. См. crypt(1). См. также раздел "ПРИМЕЧАНИЯ" в конце данной страницы справочного руководства. |
-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).)
ССЫЛКИ
ПРИМЕЧАНИЯ
Две опции, хотя они по-прежнему поддерживаются, были заменены в документации на опции, соответствующие стандарту синтаксиса команд (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, перевод на русский язык
В следующем выпуске
man sed(1). Выпуск ожидается в среду, 6 марта.
С наилучшими пожеланиями,
В.К.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||