Клавиши и комбинации клавиш VIM
VIM — Vi IMproved (Улучшенный Vi). Это очень мощный и гибкий редактор, который открывает большое поле для эффективной и продуктивной деятельности.
Чем большего мастерства вы достигли в работе с редактором VIM, тем больше времени вы будете проводить в его основном режиме, где доступно множество команд. И дабы свести к минимуму работу с текстом и сохранить себе время, которое можно провести с большей пользой, нужно сначала потратить некоторое время для освоения редактора, которое потом многократно окупится.
Существует несколько режимов работы с VIM, которые могут в начале пути изучения ввести в замешательство и навести на мысль бросить это гиблое дело, возвращаясь к какому-то редактору попроще, что не решит проблему трудоемкости. Но со временем чувство прекрасного и желание работать более эффективно с текстовыми файлами обязательно победит. Поэтому почему бы сразу не начать постепенно адаптироваться в среде VIM. Любое дело можно освоить, если заниматься им регулярно.
Самыми используемыми являются: режим команд (он же — основной или нормальный), вставки, замены и визуальный режим. В командном режиме можно извращаться с имеющимся текстом, как заблагорассудится с помощью команд или горячих клавиш; в режиме вставки клавиши ведут себя, как в обычном редакторе (самый нудный режим); режим замены говорит сам за себя; в визуальном режиме доступна работа с блоками текста.Для перехода в режим вставки можно нажать клавишу Ins один раз, если дважды — режим замены, чтобы перейти в основной режим следует нажать клавишу Esc.
В этой статье будут описаны клавиши и комбинации клавиш, которые позволят Вам чувствовать себя комфортно при работе с редактором Vim (настройки также можно задавать в файле vimrc).Есть такая особенность в Vim, что все действия возможны над текстом от одного до N раз. Команды имеют следующий универсальный формат:
[количество_раз] <действие><объект>
[количество_раз] задавать не обязательно, по умолчанию один раз.
Действия можно производить над объектом, который также можно указывать вместе с числом. Например, команда:
3d2w — три раза удалить два слова.
Изменения, которые были произведены последней командой, можно повторить с помощью клавиши «.».
3x — удалит 3 символа в право, а если после этого нажать точку, то удаляться следующие три символа.
Клавиши перемещения:
h, j, k, l — соответствуют стрелкам влево, вниз, вверх и вправо;
gj/gk — перемещают по экранным строкам, а не реальным;
0 («ноль») — в начало текущей строки;
^ — к первому не пробельному символу в строке;
$ — в конец текущей строки;
e — последний символ следующего слова;
w — на слово вправо, первый символ следующего слова;
b — на слово влево;
W — до пробела вправо;
B — до пробела влево;
( — передвинуть курсор назад на предложение (до точки);
) — передвинуть курсор вперед на одно предложение;
} — абзац вниз (до пустой строки);
{ — абзац вверх;
gg или Ctrl+Home — перейти на первый непробельный символ первой строки файла;
G — перейти на первый непробельный символ последней строки файла;
Ctrl+End — перейти на последний символ последней строки файла;
<number>G или <number>gg — перейти на конкретную строку <number> ;
f<simvol> — передвинуться вперед (forward) к символу <simvol> в текущей строке;
F<simvol> — назад (backward) к символу <simvol> в текущей строке;
; — для того что бы повторить последнюю команду f или F;
, — повторяет поиск, но в отличии от «;», в обратном порядке;
t<simvol>/T<simvol> — то же что и описано выше, но при этом курсор устанавливается прямо перед символом, а не на сам символ;
H — передвинуть курсор наверх экрана;
M — передвинуть курсор в центр экрана;
L — передвинуть курсор вниз экрана;
<number>% — передвинуть курсор в соответствующее место документа;
% — когда под курсором находиться скобка, то нажатие на % переместит курсор на соответствующую парную скобку(),] или }), при повторном нажатии вернется обратно;
[{ — позволяет переместиться назад по тексту к символу скобки, которая является отрывающей текущий блок кода;
]{ — вперед к закрывающей скобке текущий блок кода;
Примеры:
3G — перейти на строку под номером 3;
ft — передвинуть курсор на ближайший символ «f» в строке, потом нажав «;» — перейти на следующий символ «f», если он еще встречается в строке;
gd — перейти к объявлению функции или переменной, которая находиться под курсором;
gD — перемещает к определению глобальной переменной;
Клавиши перемотки:
Ctrl+e— прокрутка строк вниз;
Ctrl+y— прокрутка строк вверх;
Ctrl+f или Ctrl+d — прокрутка страниц вниз;
Ctrl+b илиCtrl+u — прокрутка страниц вверх;
zz — переместить строку с курсором в центр окна;
zt — переместить строку с курсором вверх;
zb -переместить строку с курсором вниз;
Клавиши поиска:
/<pattern> — перейти к <pattern>;
/ — повторить поиск;
?<text> — то же самое, но искать назад;
n — повторить поиск;
p — перейти к предыдущему найденному элементу;
N — повторить поиск назад;
* — перейти к следующему вхождению слова под курсором;
# — перейти к предыдущему вхождению слова под курсором;
[I — найдет и покажет количество вхождений слова (функции) под курсором;
Примечание: в строке поиска можно писать обычное регулярное выражение и для обозначения начала/конца слова применять \< и \> ;
Клавиши удаления:
x — удалить символ под курсором;
X — удалить символ влево (удалить символ перед курсором);
d<символ(ы)_перемещения> — удаляет с символа под курсором до положения после ввода команды перемещения;
dd — удалить текущую строку;
d<число_строк>d — стирание числа строк начиная с текущей;
d+ — удаляет текущую строку и следующую за ней;
d/<pattern> — удаляет текст начиная с текущего положения курсора до первого встретившегося «pattern», не включая его;
daw — удаляет слово, даже когда курсор находится в середине этого слова;
D — вырежет текст от позиции курсора и до конца текущей строки (аналог d$);
Весь удаляемый текст переносится в буфер обмена, откуда позже может быть вставлен.
Примеры:
d^ — удаляет символы с текущего до начала строки;
ciw — удаляет слово под курсором и переходит в режим вставки;
4x — удаляет 4 символы вперед начиная с символа под курсором;
Клавиши удаления с переходом в режим вставки:
s — вырезать текущий символ и оставить редактор в режиме вставки (аналогична xi);
S — вырезать текущую строку и оставить редактор в режиме вставки (аналогична cc);
с — команда аналогичная d, но после удаление переходит в режим ввода;
C — вырезать текст от курсора до конца строки и оставить редактор в режиме вставки;
cc — вырежет текущую строку и оставит редактор в режиме вставки;
r — заменить один символ под курсором;
R — перейти в режим ввода с забиванием текста (режим замены);
Клавиши копирования и вставки:
yy — копирование текущей строки в неименованный буфер;
y<число>y — копирование числа строк начиная с текущей в неименованный буфер;
Y — скопировать весь текст, подобно yy (аналог y$);
p — вставка содержимого неименованного буфера под курсором;
P — вставка содержимого неименованного буфера перед курсором;
]p — подобно p, но автоматически подбирает отступ для вставки кода;
Клавиши отмены:
u — отмена последней команды;
U — отмена изменений во всей строке;
Ctrl+r — отмена отмены;
Переход в режим вставки:
i — перейти в режим ввода с текущей позиции;
I — переместиться в начало строки и перейти в режим ввода;
a — вставить текст справа от текущего символа;
A — вставить текст в конец текущей строки;
o — перейти в режим ввода с новой строки под курсором;
O — перейти в режим ввода с новой строки над курсором;
Другие не менее полезные действия:
. — повтор последней команды;
J — слияние текущей строки со следующей;
`. — перейти к строке, которая редактировалась последней;
` дважды — переход между двумя последними позициями курсора;
‘ дважды — переход между двумя строками, где находились позиции курсора;
Ctrl+n/Ctrl+p — авто-дополнение ключевого слова в режиме вставки;
Ctrl+e — возврат до состояния перед нажатием Ctrl+n/Ctrl+p;
>> — сдвинуть вправо строку (в визуальном режиме — весь выделенный текст;
<< — тоже самое, что и >>, но сдвиг происходит влево;
K — посмотреть man-страницу слова под курсором;
gf — открыть файл с именем, находящимся под курсором;
Ctrl+a — перемещает курсор на ближайшее число и увеличивает его на единицу;
Ctrl+x — перемещает курсор на ближайшее число и уменьшает его на единицу;
~ — меняет регистр букв на противоположный по мере прохождения курсора;
g~~/guu/gUU — меняет регистр на противоположный/нижний/верхний во всей строке;
Применение меток:
`. — если после редактирования текста, к примеру, был выполнен поиск, то с нового места нахождения курсора можно вернуться на позицию последнего изменения;
Также в тексте можно расставлять свои метки — позиции, куда можно в любой момент вернуться. Именем метки может быть любая (одна) буква. На примере метки с именем «a» посмотрим как это работает:
ma — создает метку;
`a — перемещает курсор на метку «a» (конкретное место);
‘a — перемещает курсор на начало строки, содержащей метку «a»;
Ctrl+o/Ctrl+i — перемещение к ранее посещенным меткам назад и вперед;
:marks — показать все определенные метки;
Примечание: VIM запоминает файл и позицию, в которой находился курсор перед его закрытием, то есть если нажать «’0», то откроется запомненный файл. Такие запоминания делаются в «’0 … ‘9».
Работа в визуальном режиме:
Можно выделить некоторую часть текста, а потом совершить с ней определенные действия.
Для перехода в визуальный режим можно использовать:
v — можно выделять обычными клавишами перемещения, описанными выше;
V — выделяет текст построчно;
Ctrl-v — для выделения прямоугольного участка текста. Удобно применять при редактирования блоков кода программы;
o/O — перемещают курсор в разные концы выделенного блока для изменения размеров ;
gv — выделяет текст, который был выделен прошлой командой выделения;
is — добавить предложение без завершающего пробела;
as — добавить предложение с завершающим пробелом;
!<command> — отфильтровать выделенные строки с помощью внешней программы;
Выделенный текст можно удалять, копировать, вырезать, вставлять теми же клавишами d,y,c,p. Кстати, как и при обычном удалении, текст помещается в буфер обмена.
Работа с файлами:
gf (go file) — перейти к редактированию файла (под курсором должен быть путь);
ZZ — записать файл и выйти (если файл не изменяли, то записываться он не будет);
ZQ — выйти без сохранения;
Ctrl+g — показать информацию о файле;
Работа с окнами:
Ctrl+w — это управляющая комбинация клавиш, а после нее уже идет нужное действие;
Ctrl+w h — перейти в окно слева от текущего;
Ctrl+w j — перейти в окно снизу от текущего;
Ctrl+w k — перейти в окно сверху от текущего;
Ctrl+w l — перейти в окно справа от текущего;
Ctrl+w o — развернуть текущее окно;
Ctrl+w c — закрыть;
Ctrl+w s — разделить окно по горизонтали;
Ctrl+w v — то же самое, только по вертикали;
Ctrl+w f — разделить и в новом окне открыть файл, путь к которому находится под курсором;
Ctrl+w + — увеличение размера окна по горизонтали;
Ctrl+w — — уменьшение размера окна по горизонтали;
Ctrl+w > — увеличение размера окна по вертикали;
Ctrl+w < — уменьшение размера окна по вертикали;
Также, как и раньше, остаются в силе задание кол-ва действий указанием числа.
В режиме вставки также действуют некоторые комбинации клавиш для упрощения работы:
Ctrl+h — удаляет последний символ;
Ctrl+w — удаляет слово перед курсором;
Ctrl+u — удаляет все символы от начала строки до курсора;
Ctrl+t — вставить табуляцию в начало текущей строки;
Ctrl+d — удалить табуляцию из начала текущей строки;
Ctrl+o <command> — выполняет команду command и возвращается обратно в режим вставки;
Полезным для новичков в VIM будет запустить команду в консоли vimtutor ru — это небольшой учебник на русском, который познакомит Вас с основами работы в этом редакторе.