Редактор 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 - переход в режим набора текста методом набивки.
Перемещение курсора
h,j,k,l - на один символ (одну строку), как показано стрелками
^ или 0 - в начало текущей строки
$ - в конец текущей строки
w - на слово вправо
b - на слово влево
} - на параграф вперед (параграф - это блок текста, отделенный пустой строкой)
{ - на параграф назад
[[ - в начало текста
]] - в конец текста
Кнопки стрелочной клавиатуры также позволяют перемещаться по тексту.