Vim
Во всех записях шорткатов буква С означает кнопку Ctrl. Например, <C-q>
означает Ctrl+q
.
Буква S означает кнопку Shift. Например, <S-w>
означает Shift+w
.
Основные клавиши
H
- наверх экранаM
- в середину экранаL
- в низ экранаw
- к началу следующего словаe
- к концу следующего окнаb
- назад к началу текущего слова0
- к началу строки^
- к первому значимому символу строки$
- к концу строки<C-d>
- вниз на пол-экрана<C-f>
- вниз на экран<C-u>
- вверх на пол-экрана<C-b>
- вверх на экран*
- подсветить все вхождения слова, на которое указывает курсор<C-g>
- показать полный путь текущего файла
NerdTree
Дерево слева обеспечивается плагином scrooloose/nerdtree
.
Открывается командой :NERDTreeToggle
. Она замаплена на Ctrl+n
Когда фокус внутри дерева, справка вызывается кнопкой ?
.
Основные команды:
o
- открыть файл и перенести фокус на негоgo
- открыть файл, но фокус оставить в деревеt
- открыть в новой вкладкеT
- открыть в новой вкладке, но не перключаться на нее[g]i
- разделить экран горизонтально, открыть файл в новой области[g]s
- разделить экран вертикально, открыть файл в новой областиO
- рекурсивно открыть папку, то есть открыть и все ее подпапки до листьевx
- закрыть родителяX
- рекурсивно закрыть всех детейp
- перейти в дереве к родителюP
- перейти в дереве к корню проекта<C-j>
- перейти к предыдущему брату<C-k>
- перейти к следующему братуr
- обновить содержимое директорииR
- обновить все деревоI
- показать/скрыть скрытые файлыA
- развернуть дерево на весь экранm
- открыть меню манипуляций с файлом, в нем потом перемещаться кнопкамиj/k
, на текущий пункт указывает знак>
слева от пункта.
Окна, вкладки, сплиты
Окна - это области, на которые разделена текущая вкладка.
Работа с окнами/сплитами
<C-w>s
- разделить текущий буфер вертикально<C-w>v
- разделить текущий буфер горизонтально<C-w>q
- закрыть текущее окно<C-w>[hjkl]
- переход по соседним окнам<C-w><S-[<>+-]>
- ресайзит текущее окно. По умолчанию резайсит на 1 позицию курсора. Если нужно много, то предварять комбинацию числом.:resize -10/+10/10
- уменьшить/увеличить/установить высоту текущего окна на 10:vertical resize -10/+10/10
- уменьшить/увеличить/установить ширину текущего окна на 10z10<Enter>
- установить высоту текущего окна в 10<C-w>|
- установить ширину текущего окна на максимум<C-w>=
- установить всем окна равные размерыset winwidth=130
- при переключении на окно ему будет выставляться ширина 130, если была меньше
Когда разделяем окно, в новом оказывается то же содержимое, что и было до разделения. После этого выбрать новый буфер в нем можно кнопками перехода по буферам <S-[jk]>
.
Работа с вкладками
В каждой вкладке может быть открыт любой из буферов. В виме нет жесткой привязки вкладка-файл, как в других браузерах. Когда нажимаем <C-w>q
, то закрывается текущая вкладка. Если она последняя, то закроется и весь vi
, независимо от того, сколько осталось открытых буферов.
:tabnew filename
- открыть новую вкладку:tabclose
- закрыть текущую вкладку:tabonly
- закрыть все остальные вкладкиgt
- перейти в следующую вкладкуgT
- перейти в предыдущую вкладку{i}gt
- перейти во вкладку номер i (нумерация с 1)
Работа с буферами
:ls
- список буферов:bd n
- закрыть и удалить из списка буфер n:b n
- открыть буфер n:bn
- следующий буфер:bp
- предыдущий буфер<S-j>
- перейти в следующий буфер<S-k>
- перейти в предыдущий буферgd
- закрыть текущий буфер
Навигация по коду
<C-yh>
- перейти к реализации или объявлению, если не удалось к реализации<C-yd>
- перейти к объявлению<C-yi>
- перейти к заголовочному файлу из#include
<C-yt>
- вывести тип переменной<C-yd>
- вывести документацию<C-yf>
- исправить ошибку в текущей строке, если возможно<C-o>
- вернуться назад<C-i>
- перейти вперед
Поиск
<C-p>
- вывести окошко поиска по файла по путиEnter
- открыть выбранный файл в текущей вкладке (будет создан новый буффер, буфер открытый прежде в этой вкладке останется открытым)<C-t>
- открыть выбранный файл в новой вкладке<C-v>
- открыть выбранный файл в новом вертикальном сплите<C-x>
- открыть выбранный файл в новом горизонтальном сплите
Системные шорткаты
<Leader>ev
- открыть vimrc<Leader>rv
- перезагрузить vimrc
Запуск shell-команды
:! ls ~
Edit-compile-edit
Если есть Makefile, то построить проект можно с :make
. Очистить предыдущие результаты можно с :make clean
.
После построения ошибки попадают в окно QuickFix. Его можно вывести через :cwindow
или :cw
. Оно работает как обычное окно, только по Enter можно переходить к строчкам с ошибками.
:set makeprg?
- программа, которая будет использоваться для построения.:cn
- следующая ошибка в QuickFix:cp
- предыдущая ошибка в QuickFix
Python
Чтобы ошибки питона тоже выводились в quickfix, нужно подключить нужный встроеенный компилятор и указать makeprg:
:compiler pyunit
:set makeprg=python\ %
:make
Строчкой python\ %
мы указали, что нужно вызвать python, подав аргументом путь к текущему файлу.
Прочее
К виму не относится, но не знаю куда еще сунуть - в маковском терминале чтобы выделить текст и скопировать его в буфер обмена, нужно его выделять с зажатым Fn
, а потом жать Ctrl+C
.