Как выйти из Vi? Именно такой вопрос мне чаще всего задают пользователи, впервые запустившие этот замечательный редактор :) Сразу ответ: Esc Esc ZQ или Esc Esc :qa! если ничего сохранять не нужно, Esc Esc ZZ или Esc Esc :w!q если содержимое надо сохранить. Два раза Esc в данном случае позволит вам выйти в нормальный режим из любого состояния редактора.
Нет, редактор VI, а точнее VIM (Vi IMproved), и вправду замечательный, но уж очень необычный. В этой небольшой статье вы не найдете макросов, продвинутого редактирования, настройки и много чего другого. Здесь только самые полезные команды и основы редактора.
Любой админ должен знать хотя бы основы работы в VIM, потому что в большинстве случаев - это единственный доступный редактор в однопользовательском режиме на упавшей *nix системе. Более того он замечателен уже хотя бы тем, что он есть в установке по-умолчанию почти в любом *nix и, зачастую, используется как основной редактор. Например для правки passwd файла во FreeBSD используется команда vipw.
Для того чтобы освоить VIM необходимо понять одну простую вещь: мышка, клавиши управления курсором - это зло, ухудшающее эффективность работы с редактором. Все операции с текстом в VIM можно (и нужно) выполнять на основном блоке клавиатуры.
Редактор может находиться в трех режимах и изначально находится в так называемом "нормальном" режиме. В него же можно выйти из любого другого режима нажатием кнопки Esc.
Из нормального режима, в котором производятся операции над текстом и перемещение, можно войти в режим "вставки", в котором и набирается собственно текст. Для этого есть следующие кнопки:
i - вставить текст до курсора
I - вставить текст с начала строки
a - вставить текст после курсора
A - вставить текст с конца строки
o - вставить новую строку ниже
O - вставить новую строку выше
s - замена текущего символа и остаться в режиме вставки
S - замена текущей строки
r - Заменить текущий символ и вернуться в нормальный режим
R - Заменить несколько последовательно расположенных символов
Мощь VIM в использовании модификаторов команды. Перед любой командой перемещения можно и, зачастую, нужно использовать мультипликатор. То есть 6w - это на 6 слов, а 77j - на 77 строк вниз.
Нужно заметить, что модификаторы часто можно использовать и при других операциях, как например 5S - заменить 5 последующих строк.
Перемещение по тексту.
Если учесть, что стартовая позиция для правой руки - клавиши hjkl, то выбор клавиш становится вполне понятным:
Управление текущей позицией
h - влево (указательный палец сдвигается влево)
j - вниз
k - вверх.
l - вправо.
по строкам
^ или 0 - начало строки
$ - конец строки
w (word) - к началу следующего слова
e (end) - к концу текущего слова
b (begin) - к началу текущего слова и далее к предыдущим словам
G (Go) - переход на строку (по умолчанию на последнюю)
по экрану
H (High) для перехода в верхнюю строку экрана
M (Middle) для перехода в среднюю строку экрана
L (Low) для прехода в нижнюю строку, показанная на экране
по тексту
{ - предыдущий абзац
} - следующий абзац
( - предыдущее предложение
) - следующее предложение
ctrl-b (backward) перемещение на один экран назад
ctrl-f (forward) перемещение на один экран вперед
Закладки
На любую строку можно поставить метку m[A-Z,a-z] и вернуться в любое время на неё '[A-Z,a-z] (то есть одинарная кавычка и название метки).
Операции над текстом
~ - Смениить регистр текущего символа (или стольких, сколько указано в мультипликаторе)
d - Удалить + мультипликатор, например: d$ - всё до конца строки, d8w - 8 слов, d3h - 3 символа вправо, d1G - всё к началу текста.
dd - удалить строку (55dd - 55 строк)
Если быть точнее, то операции удаления - это вырезание текста в буфер, то есть его можно потом вставить.
y (yank) - копировать в буфер (y5w - копировать 5 слов)
yy - копировать в буфер строку (2yy - 2 строки)
p (paste) - вставить из буфера (2p - вставить 2 раза)
Визуальный режим выделения текста
v (visual) - посимвольный режим выделения
V - построчный режим выделения
Ctrl-V - прямоугольный блок текста
Над выделенным фрагментом можно производить все обычные действия.
Undo и redo
u (undo) - Отменить последнее изменение (7u - 7 изменений)
ctrl-r (redo) - Повторить изменение
:earlier 40m - вернуть текст таким, как он был 40 минут назад
:later 20s - передвинуться вперед на 20 секунд по временной шкале изменения текста
:undolist - список правок
Выход, запись изменений
Возвращаясь к теме статьи:
:w (write) запись файла на диск
:q (quit) выход из редактора, если изменения не нужно сохранять, то добавьте !
Коментувати