Справка по редактору vi. Основные команды

Наиболее распространенные команды консольного текстового редактора vi.

Содержание


Совет: Перед любыми действиями с документом введите следующую команду:

:set showmode


Запуск и завершение VI

vi filename Открыть файл filename для редактирования
vi -r filename Открыть последнюю сохраненную версию filename после аварийного выхода
vi filename file2 ... Открыть filename, затем file2 ... Переход к следующему файлу - :n
ZZ или :wq или :x Сохранить изменения и завершить VI
:w Сохранить изменения в текущем файле
:w! Безусловно сохранить текущий файл
:w file Сохранить текущий файл под именем file
:q! Завершить VI без сохранения

К началу страницы

Режимы

VI работает в командном режиме и режиме ввода. Сразу после запуска редактор находится в командном режиме, в котором можно перемещаться по тексту, выполнять копирование и вставку текста из буфера. Режим ввода включается по командам вставки, дополнения, замены. Нажатие [ESC] возвращает редактор в командный режим. Большинство команд выполняется сразу после нажатия клавиши. Исключение - команды строчного редактора ex, начинающиеся с двоеточия, которые выполняются после нажатия [Return].

К началу страницы

Вставка текста

i Вставка перед курсором
I Вставка перед строкой
a Добавление за курсором
A Добавление после строки
:r file Вставить содержимое file после текущей строки
В режиме ввода:
CTRL-i или TAB Вставить смещение вправо на shift width
CTRL-d Уменьшить смещение вправо на shift width
CTRL-h или Backspace Удалить предыдущий символ
CTRL-w Удалить предыдущее слово
CTRL-u Удалить предыдущую строку

К началу страницы

Перемещение по тексту

h Влево
j Вниз
k Вверх
l Вправо
«стрелки» Перемещение по тексту (в больших файлах работает медленно, в некоторых конфигурациях может работать некорректно).
w К следующему слову
b К началу слова
^ К первому непробельному символу строки
+ или <cr> К первому символу следующей строки
- К первому непробельному символу предыдущей строки
e К концу слова
( К началу предложения
) К концу предложения
{ К началу абзаца
} К концу абзаца
Примечание: абзацы разделяются пустой строкой.
0 или | К началу строки
$ В конец строки
1G К первой строке файла
G К последней строке файла
H К верхней строке экрана
L К нижней строке экрана
CTRL-d Прокрутка вниз на пол-экрана
CTRL-f Прокрутка вниз на экран
CTRL-u Прокрутка вверх на пол-экрана
CTRL-b Прокрутка вверх на экран
% К парной скобке: ( ), { }, [ ]

К началу страницы

Удаление текста

Большинство команд удаления образуются из символа d и команды перемещения. Например, dw удаляет слово. Другие команды удаления:

x Удалить текущий символ
nx Удалить n символов вправо, начиная с текущего
X Удалить символ слева от курсора
nX Удалить n символов влево от курсора
dd или :d Удалить текущую строку
"(a-z)dd Вырезать текущую строку в именованный буфер (от a до z)

К началу страницы

Копирование в буфер

Подобно командам удаления, большинство команд копирования в буфер состоят из символа y и команды перемещения. Например, y$ помещает в буфер конец строки.

yy или :y Копировать текущую строку
"(a-z)yy Копировать текущую строку в именованный буфер (от a до z)

К началу страницы

Изменение текста

Команды изменения действуют как команды удаления с последующим переводом в режим ввода. Большинство из них состоит из символа c и команды перемещения. Например cw заменяет слово.

Вставка из буфера

p Поместить текст из буфера после курсора
P Поместить текст из буфера перед курсором
"(a-z)p или "(a-z)P Поместить текст из буфера (от a до z) после/перед текущей строкой

Буферы

Имя буфера может быть указано перед любой командой удаления, изменения, копирования или вставки. Префикс имеет вид "c, где c - любой символ нижнего регистра. Например, "adw удаляет слово и помещает его в буфер a. Затем его можно будет поместить в текст по команде "ap.

К началу страницы

Поиск/замена подстрок

/str Поиск str вперед от курсора
?str Поиск str назад от курсора
n Повторить поиск в том же направлении
:n,ms/str1/str2/opt Искать строку str1 со строки n до m (n и m могут быть опущены); заменить str1 на str2; с опциями opt. Возможные опции: g - глобальный, c - подтверждать замены (y - заменить, <cr> - не заменять), p - печатать измененные строки
& Повторить последнюю команду :s
:g/str1/s/str2/str3/ Найти строку, содержащую str1, заменить str2 на str3
; Повторить поиск
, Повторить поиск в обратном направлении

К началу страницы

Регулярные выражения

. (точка) Любой символ, кроме «новой строки»
* 0 или более вхождений любого символа
[...] Любой из указанных символов
[^...] Любой из символов, кроме указанных
\< Строго в начале слова
\> Строго в конце слова
^ В начале строки
$ В конце строки
\(...\) Группа условий
\n Значение n-ой группы
\ Отмена значения спецсимвола (например, \$ позволяет искать символ $)
\\ Отмена особого действия символа \

Счетчики

Практически перед любой командой можно указать количество ее повторений. Например, 5dw приведет к удалению 5 слов, а 3fe - к перемещению курсора вперед на 3-е вхождение символа «e». Подобным образом можно действовать и с командами вставки, например, вставить 100 одинаковых строк.

К началу страницы

Режимы VI

Заметьте: вводится :set option для включения режима и :set nooption для выключения. Чтобы установить настройки для каждого запуска VI, в домашнем каталоге создается файл .exrc, содержащий данные команды без двоеточия перед ними.

:set ai Автоматический отступ (по предыдущей строке)
:set all Вывести на экран все режимы
:set eb Звуковой сигнал при ошибках
:set ic Игнорировать регистр при поиске
:set list Показывать символы табуляции (^l) и конца строки ($)
:set nu
:set number
Показывать номера строк
:set showmode Показывать текущий режим в нижней части экрана
:set showmatch Подсвечивать парную открывающую скобку при вводе закрывающей
:set wa Исключить нормальную проверку перед записью
:set wm=n Установить размер правого поля для автопереноса. Для отключения автопереноса n=0

К началу страницы

Макросы

Примечания:

  • Файл ".exrc" в домашнем каталоге может содержать набор макросов, используемый при каждом запуске VI (записываются аналогично командам определения макросов, но без двоеточия).
  • Чтобы включить в макрос управляющий символ, например, ESC, следует предварительно нажать CTRL-v.
  • Чтобы включить в макрос кавычки ("), перед ними набирается \ (backslash).
  • Неиспользуемые в vi клавиши: K V Z g q v * = [ ] @ # и функциональные.

Пример (выделены команды VI, которые будут включены в макрос):

:map v /I CTRL-v ESC dwiYou CTRL-v ESC ESC

Действие макроса: При нажатии v найти "I" (/I ESC), удалить слово (dw) и вставить "You" (iYou ESC). CTRL-v нужно для вставки кода ESC

:map key cmd_seq Назначить клавише key исполнение макроса cmd_seq
:map Показать в строке состояния все имеющиеся макросы
:unmap key Удалить макрос
:ab str string При вводе сокращения str заменить его на string
:ab Показать все сокращения
:una str Отменить сокращение str

К началу страницы

Прочее

~ Смена регистра символа над курсором
J Слияние следующей строки с текущей
nJ Слияние n строк
. Повторить последнюю команду, изменяющую текст
u Отменить последнее изменение
U Отменить все изменения в строке
CTRL-G Показать имя файла, номер строки, общее число строк и положение в файле (%)

К началу страницы

Add a Comment