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.