RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Редактор vi - универсальный полноэкранный текстовый редактор в среде UNIX. Универсальность означает, что, во-первых, этот редактор есть во всех UNIX-подобных ОС и, во-вторых, этот редактор работает с практически любым видом терминала (ANSI, VT100, VT220, VT320, DEC, и т. д.).(База данных, содержащая описание известных системе терминалов находится в файле /etc/termcap.) Эта универсальность обернулась несколько непривычным (для пользователей DOS) пользовательским интерфейсом: для управления редактором используются лишь ``обычные'' кнопки клавиатуры (алфавитно-цифровые символы и знаки препинания).
Имеющиеся на многих типах терминалов функциональные клавиши практически не используются. Если клавиатура терминала имеет стрелочные клавиши, то они используются, но, как будет видно ниже, в ограниченном контексте.
1 Режимы работы редактора
Ввод текста
В этом режиме все, что набирается на клавиатуре отображается на экране терминала и запоминается в буфере редактора.
Нет возможности осуществлять операции редактирования текста, за исключением стирания последнего набранного символа (с помощью комбинации клавиш < Control-H> ).
Командный режим
В этом режиме символы клавиатуры выполняют специальные функции (перемещение курсора, стирание частей текста, и т. д.), то есть функции редактирования.
Набираемые команды НЕ ОТОБРАЖАЮТСЯ НА ЭКРАНЕ!
Режим командной строки
Режим командной строки позволяет производить более глобальные операции с текстом: записывать отредактированный текст в файл, считывать новый файл, выходить из vi, производить настройку редактора, поиск по шаблону, а также осуществлять некоторые функции редактирования.
Команды отображаются в нижней части экрана (в ``командной'' строке редактора).
2 Ввод текста
< Return> - создает пустую строку и переводит курсор в ее начало.
< Control-H> - уничтожает последний введенный символ (это действие не отображается на экране до выхода в командный режим).
< Control-[> или клавиша < Esc> - переводят редактор в командный режим.
В режиме ввода текста стрелочная клавиатура НЕ РАБОТАЕТ!
3 Команды
i - переход в режим набора методом вставки перед текущим символом a - переход в режим набора методом вставки за текущим символом R - переход в режим набора текста методом набивки.
Перемещение курсора
-------------------------------------------------------------------------------- < Drawing or tabular insertion skipped...> --------------------------------------------------------------------------------
h,j,k,l - на один символ (одну строку), как показано стрелками ^ или 0 - в начало текущей строки $ - в конец текущей строки w - на слово вправо b - на слово влево } - на параграф вперед (параграф - это блок текста, отделенный пустой строкой) { - на параграф назад [[ - в начало текста ]] - в конец текста
Кнопки стрелочной клавиатуры также позволяют перемещаться по тексту.
Редактирование
dd - стирание текущей строки
dдвижение курсора - стирание от текущего положения курсора до нового, задаваемого символом перемещения курсора(Нажатие кнопок стрелочной клавиатуры НЕ ЯВЛЯЕТСЯ движением курсора и не может использоваться в комбинированных командах.)
J - слияние текущей строки со следующей u - отмена последней команды . - повтор последней команды : - переход в режим командной строки
4 Командная строка
:q или :q! - выход из редактора без сохранения изменений :x - выход из редактора с записью, если файл был модифицирован :w или w filename или w! filename - запись файла и возвращение в командный режим :e filename или :e! filename - загрузка файла filename :r filename - добавить содержимое указанного файла к редактируемому сразу за текущей строкой :set nu - включить нумерацию строк :set nonu - отключить нумерацию строк :!command - выполнить команду UNIX не покидая редактора :/word - выполнить поиск слова word в тексте :/ - повторить поиск слова word далее по тексту
5 Блоки, буферы, окна редактирования. Повторители
Повторители Командам и движениям курсора можно давать повторители (числа), например
2w - передвинуть курсор на два слова вперед 10l - передвинуть курсор на десять символов вправо d10l - стереть десять символов справа от курсора 2d10l - стереть двадцать символов справа от курсора 5J - слить пять последующих строк в одну 4. - повторить последнюю введенную команду четыре раза
Буферы vi
Редактор имеет три типа буферов: буфер стирания (0-9), неименованный буфер и именованные буферы (a-z).
В буферы стирания автоматически заносятся стираемые элементы. В буфере 0 хранится последний стертый элемент, в буфере 1 - предпоследний и т. д.
Занести в буфер:
yy - занести текущую строку в неименованный буфер yдвижение курсора - занести указанный движением курсора блок текста в неименованный буфер. "ayy - занести текущую строку в именованный буфер a "Ayy - добавить текущую строку к содержимому именованного буфера a "by10j - занести последующие 10 строк в именованный буфер b
Вставить из буфера:
p - вставить в текущую позицию содержимое неименованного буфера "ap - вставить в текущую позицию содержимое именованного буфера a "1p - вставить в текущую позицию содержимое буфера стирания 1
Многооконное редактирование
Редактировать сразу несколько файлов можно либо пользуясь командной редактора :e filename, либо указав все необходимые файлы в командной строке при вызове редактора (например: vi file1 file2 file3). В последнем случае вы двигаетесь по списку файлов с помощью команд:
:n - переходим к следующему файлу в списке :rew - возвращаемся к редактированию первого файла в списке
Именованные буферы сохраняют свое содержимое при переходе к редактированию другого файла