Основные команды
Основные команды редактора vi представлены в табл. 22.
Таблица 22. Сводка основных команд редактора vi
| Перемещение курсора | |
| H (Ctrl-h) | курсор влево |
| J (Ctrl-n) | курсор вниз |
| K (Ctrl-p) | курсор вверх |
| L (Space) | курсор право |
| Ctrl-u | Переход вверх на половину экрана |
| Ctrl-d | Переход вниз на половину экрана |
| Ctrl-f | На страницу вперед (PageDn) |
| Ctrl-b | На страницу назад (PageUp) |
| 0 | Переход в начало текущей строки |
| $ | Переход в конец текущей строки |
| nG | Переход на строку с номером n |
| Добавление текста | |
| a | Добавить текст после курсора |
| A | Добавить текст в конце текущей строки |
| i | Вставить текст перед курсором |
| I | Вставить текст в начале текущей строки |
| o | Образовать новую строку под текущей |
| O | Образовать новую строку над текущей |
| Изменение текста | |
| ~ | Изменить регистр символа над курсором |
| r | Замена одного символа |
| R | Замена символов |
| Удаление текста | |
| x | Удаление символа |
| dd | Удаление строки |
| Ndd | Удаление N строк |
| Поиск и замена | |
| /str | Поиск строки str вперед. str может быть регулярным выражением |
| ?/str | Поиск строки str назад |
| n | Повторить поиск в том же направлении |
| N | Повторить поиск в обратном направлении |
| :[range]s/old/new/[g] | Заменить old на new в указанном диапазоне строк range. new и old могут быть регулярными выражениями, а range задается аналогично диапазону строк в редакторе ed. Суффикс g означает заменить во всем файле. |
| Копирование текста | |
| yy | Копирование строки в целом |
| Nyy | Копирование N строк |
| p | Вставить из буфера после (курсора, текущей строки) |
| P | Вставить из буфера перед (курсором, текущей строкой) |
| Выход из редактора | |
| :wq ENTER | Запись и выход. Записать текст из буфера в файл и выйти из редактора. |
| :x ENTER | Условная запись и выход. Записать текст из буфера только при наличии изменений и выйти из редактора. |
| :q! ENTER | Закончить редактирование без записи изменений. |
| Другие команды | |
| ! | Выполнить одну команду интерпретатора |
| . | Повторить последнюю команду |
| u | Отменить действие последней команды |
| J | Соединить строки |
| Ctrl-G | Показать номер текущей строки |
Курсор можно перемещать и клавишами перемещения курсора или клавишами PageUp, PageDn, но эти возможности, в отличие от описанных в таблице, поддерживаются не на всех терминалах.