Горячие клавиши vim. Шпаргалка.

Если вы это читаете, то вы скорее всего знаете, что такое vim. Это один из самых распространенных текстовых редакторов в *nix-системах. Его функционал может быть расширен при помощи плагинов, что позволяет расширять редактор практически до бесконечности. Эта статья — просто шпаргалка, в которую включены горячие клавиши vim, знание которых заметно ускоряет работу, что делает использование vim более эффективным. Собственно, вот и они:

Горячие клавиши vim

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

h Влево
l Вправо
j Вниз
k Вверх
w Вперед на первую букву слова
e Вперед на последнюю букву слова
b Назад на первую букву слова
ge Назад на последнюю букву слова
W То, же, что и w, но словом считается то, что отделено пустыми символами
E То, же, что и e, но словом считается то, что отделено пустыми символами
B То, же, что и b, но словом считается то, что отделено пустыми символами
gE То, же, что и ge, но словом считается то, что отделено пустыми символами
^ На первый непустой символ строки
$, End На конец строки
0 (ноль), Home На начало строки
( На первую точку слева от курсора (если она есть, в противном случае на начало абзаца)
) На первую точку справа от курсора (если она есть, в противном случае на конец абзаца)
{ На абзац назад до пустой строки
} На абзац вперед до пустой строки
gj На одну экранную строку вниз. Экранная строка — это целая строка длиной меньше ширины экрана, либо часть длинной строки, разделенной на экране на несколько
gk На одну экранную строку вверх.
f# Поиск вперед в строке символа # и установка курсора на него
F# Поиск назад в строке символа # и установка курсора на него
t# Поиск вперед в строке символа # и установка курсора после него
T# Поиск назад в строке символа # и установка курсора после него
; Повтор поиска вперед символа, найденного при помощи f/t/F/T
, Повтор поиска назад символа, найденного при помощи f/t/F/T
% Перемещение курсора на скобку, парную той, на которой находится курсор. Парные символы можно задать при помощи команды :set matchpairs
:# Перемещение курсора на строку #
#G Перемещение курсора на строку #, аналогично :#
gg Перемещение курсора в начало
G Перемещение курсора в конец
#% Перемещение курсора на # процентов от начала
H Перемещение курсора на начало видимой части текста
M Перемещение курсора на середину видимой части текста
L Перемещение курсора на конец видимой части текста
Control+u На полэкрана вверх
Control+d На полэкрана вниз
Control+y На одну строку вверх. Курсор при этом не перемещается
Control+e На одну строку вниз. Курсор при этом не перемещается
Control+b На один экран минус 2 строки вверх
Control+f На одну экран минус 2 строки вниз
zt Прокрутка текста так, чтобы курсор оказался вверху экрана
zz Прокрутка текста так, чтобы курсор оказался в середине экрана
zb Прокрутка текста так, чтобы курсор оказался внизу экрана

В обычном режиме:

<< Сдвинуть строку влево (табуляция)
>> Сдвинуть строку вправо (табуляция)

Режим выделения:

v Войти в режим выделения символов
V Войти в режим выделения строк
Control+Shift+v Войти в режим выделения прямоугольного блока текста
gv Выделяет текст, который был выделен предыдущей командой выделения
o Перемещение курсора в области блочного выделения для изменения размера влево
O Перемещение курсора в области блочного выделения для изменения размера вправо
I Включить вставку символов в блочном выделении. После нажатия I набираются символы, а по окончании нажимаете Escape. Все набранные символы будут вставлены в каждую строку
с Аналогично I, но перед вставкой символов удаляет всё, что было выделено блоком
с Аналогично I, но перед вставкой символов удаляет всё от левого края выделения до конца строки
u Изменить регистр выделенных символов на нижний
U Изменить регистр выделенных символов на верхний
~ Изменить регистр выделенных символов на противоположный
J Объединить все строки, находящиеся в области выделения
r Заменить все символы на введенный после r, например rx заменит все символы в области выделения на x
< Сдвинуть выделенный блок влево (табуляция)
> Сдвинуть выделенный блок вправо (табуляция)

Работа с буфером обмена:

«*yy Скопировать строку в буфер обмена текущего выделения. Потом можно вставить скопированное в любом приложении нажатием средней кнопки (колесика) мыши
«+yy Скопировать строку в буфер обмена. Потом можно вставить скопированное в любом приложении нажатием Ctrl+v
«ayy Скопировать строку в регистр a (имена регистров соответствуют буквам латинского алфавита, возможны имена a-z)
«Ayy Добавить строку в регистр a
«ap Вставить текст из регистра a

Метки:

mx Создать метку с именем x
`x Переместить курсор на метку x
‘x Переместить курсор на строку с меткой x
:marks Просмотреть все существующие в данный момент метки
Ctrl+Shift+o Перемещение по меткам назад
Ctrl+Shift+i Перемещение по меткам вперед
` ` Переместить курсор на предыдущую метку
‘ ‘ Переместить курсор на предыдущую метку

Поиск:

/ Войти в режим ввода выражения для поиска. В vim можно использовать при поиске регулярные выражения, при этом символы «.», «*», «[«, «]», «^», «%», «/», «\», «?», «~», «$» являются специальными и их обязательно надо экранировать обратным слэшем («\»)
? То же, что и /, но поиск будет производиться в обратном порядке
n Повторить поиск вперед
N Повторить поиск назад
* Поиск слова, на котором стоит курсор, вперед, со строгим соответствием
# Поиск слова, на котором стоит курсор, назад, со строгим соответствием
g* Поиск слова, на котором стоит курсор, вперед, с нестрогим соответствием, то есть, если курсор на слове win, то будет найдено также слово winter
g# Поиск слова, на котором стоит курсор, назад, с нестрогим соответствием
/выражение\c Поиск слова без учета регистра, независимо от настроек vim. Переключать учет регистра можно командами «:set ignorecase» и «:set noignorecase»
/выражение\C Поиск слова с учетом регистра, независимо от настроек vim
\< Обозначение начала слова при поиске. /\
\> Обозначение конца слова при поиске. /\<win\> — найти только win, но не winter
/выражение/b+1 Найти выражение и установить курсор на символ +1 от начального, то есть на второй
/выражение/e-3 Найти выражение и установить курсор на символ -3 от конечного
?выражение?b+1 То же, что и /выражение/b+1, но с поиском в обратную строну
?выражение?e-3 То же, что и /выражение/e-3, но с поиском в обратную строну
стрелка вверх При вводе строки для поиска просмотр истории поиска выражений, начинающихся с того, что уже набрано

Автозамена:
При автозамене используется следующая конструкция:
:[область-действия]s/[что-искать]/[на-что-менять]/[модификаторы]
Область действия:

% Весь текст
1 Первая строка
. Текущая строка
$ Последняя строка
X,Y От строки X до строки Y
.,$ Вариант предыдущего выражения, от первой до последней строки. Аналогично %

Модификаторы:

g Все вхождения в строке
c С запросом подтверждения
i Без учета регистра
e Не выводит ошибку, если искомая строка не найдена

В строках для поиска и замены можно использовать регулярные выражения, если вы знакомы с программой sed, то проблем у вас не возникнет.

Это не все сочетания клавиш, которые доступны при работе в vim, но даже их уже достаточно для того, чтобы повысить эффективность работы в этом текстовом редакторе.

[wysija_form id=»2″]