Самые необходимые команды редактора VIM

ctrl + c вместо Esc

d3d y3y - строки
d3w y3w - слова
d3l y3l - символы

d3l - удалить 3 символа
y3l - скопировать 3 символа

gd - перейти от места использования переменной к её локальному объявлению

di" - удалить внутри кавычек
dit - удалить содержимое внутри тега
daw - удалить всё слово (независимо от того, в какой части слова стоит курсор)

vim -o 01.txt 02.txt 03.txt - откроет с разделением экрана 3 файла (горизонтально)
vim -O 01.txt 02.txt 03.txt - откроет с разделением экрана 3 файла (вертикально)

:qall выйти из всех окон
:wall сохранить во всех окнах
:wqall сохранить и выйти из всех окон
:qall! выйти из всех окон несмотря на изменения

:!ls - выполнить команду в оболочке

shift + i - добавить в начале строки
shift + a - добавить в конце строки

vim +200 text.txt - открыть файл и сразу перейти к строке 200

ctrl + d - перемещение вниз по документу
ctrl + u - перемещение вверх по документу
gg - на первую строку
shift + g - на последнюю строку
20gg - на строку 20

f<символ> - переместиться на ближайший символ f, - к запятой, fk - к букве k

r<символ> - замена символа под курсором на указанный символ
shift + R - режим замены (insert-режим)

:set number - включить нумерацию строк
:set nonumber - отключить нумерацию строк

e - перемещение в конец слова
b - перемещение в начало слова

^ - переместиться в начало строки
$ - переместиться в конец строки
x - удалить символ под курсором
dw - удалить слово (от курсора до пробела или конца строки)
dd - удалить текущую строку
d$ - удалить символы от курсора до конца строки
J - слить следующую строку с текущей (удалить перевод строки)
i - начать ввод текста с позиции перед текущим симоволом (insert)
a - начать ввод текста после текущего симовола (append)
o - вставить пустую строку после текущей и начать ввод текста
O - то же, но строка вставляется перед текущей
. - повторить последнюю команду
u - отменить последнюю команду
U - отменить все изменения внесённые в текущую строку
h - влево, j - вниз, k - наверх, l - вправо
:qa! - выход без сохранения изменений
vim file.txt - откроет и создаст файл, если его нет
Esc - выход из режима ввода в режим команд

/ Enter - поиск слова
/ Enter - повторный поиск
? Enter - поиск в обратном направлении

:w - сохранить редактируемый файл
:w  - записать файл под новым именем 
:w! - сохранить, игнорируя (по возможности) флаг readonly 
:wq - сохранить и выйти из vim 
:q - выйти из vim 
:q! - выйти из vim без сохранения, сбросив сделанные изменения
:r  - прочитать содержимое файла name.txt и вставить его в редактируемый текст
:e  - начать редактирование ещё одного файла
:ls - показать список редактируемых файлов (активных буферов)
:b  - перейти к буферу номер 
:245 - перейти на строку (в примере 245 строка) - или 245gg
ctrl + ^ - переход между редактируемыми файлами

V - выделение блока из целых строк
v - выделение блока из произвольного количества символов (границы задаются клавишами: h, j, k, l)

Комментирование:
шаг 1. визуальный режим: Shift + v - построчное выделение строк
шаг 2. командный режим: :'<,'>s/^/#/ - комментирование выделенных строк.

d - удалить выделенный блок
y - скопировать выделенный блок
(d, y - помещает текст в специальный буфер)

p - вставить содержимое буфера (после курсора)
P - перед курсором

Все удаляющие команды помещают текст в буфер (x, dd, dw, d$, и т.п.)

yy - копировать строку
yw - копировать слово под курсором
y$ - копировать от курсора до конца строки

:%s/foo/bar/gi - заменить foo на bar (замена текста в файле)

:syntax on - включить подсветку кода
:syntax off - выключить подсветку кода

:set wrap - перенос строк
:set nowrap - запретить перенос строк

8 i foo Esc - создаст 8 копий введённого текста (8 - это для примера)

vip - выделить параграф
viw - выделить слово
vi( - выделить всё между ближайшими круглыми скобками, аналогично vi" - кавычки, vi{
va( - выделить всё между ближайшими круглыми скобками, включая сами скобки, аналогично va" - кавычки, va{
v2j - выделить на две строки вниз

vit - выделить то, что между тегами
vat - выделить вместе с тегами, выделится вся конструкция вместе с тегами

dip - вырезать параграф
di( - вырезать содержимое круглых скобок
da( - вырезать содержимое круглых скобок и сами скобки
y2y - скопировать две строки
yiw - скопировать слово
vt, - выделить всё до ближайшей запятой (или любого символа, который указать)

5dd - удалить 5 строк (или любое другое число)

"add - вырезать строку в буфер a
"ap - вставить из буфера a

5j - переместиться на 5 строк вниз

cw - заменить слово
c2w - заменить 2 слова
cl - заменить символ
c4l - заменить 4 символа
с$ - заменить всё до конца строки

g~~ - инвертировать регистр (без «g» применяется к символу под курсором)

( - начало предложения
) - конец предложения
{ - начало абзаца
} - конец абзаца

>> - увеличить отступ
<< - уменьшить отступ

gggqG - заставляет Vim переформатировать весь текст

:sh - открыть терминал (после выхода ctrl+d происходит возврат обратно в редактор)

Макросы:
qa - начать запись в регистр a
q - закончить запись
@a - воспроизвести запись из регистра a

:split (или :sp)
:vsplit (или :vsp) - ещё одно окно рядом
ctrl + w ctrl + w - перейти на следующее окно

:split или Ctrl+w s — добавляет в сессию Vim горизонтальное окно
:vsplit или Ctrl+w v — добавляет в сессию Vim вертикально окно
:split filename  — добавляет в сессию Vim горизонтальное окно и загружает в него filename
:vsplit filename  — добавляет в сессию Vim вертикальное окно и загружает в него filename
Ctrl+w h — переключает на левое окно, относительно текущего
Ctrl+w l — переключает на правое окно, относительно текущего
Ctrl+w j — переключает на нижнее окно, относительно текущего
Ctrl+w k — переключает на верхнее окно, относительно текущего
Ctrl+w Ctrl+w — переключает на следующее окно
Ctrl+w r — передвигает окна по часовой стрелке
Ctrl+w R — передвигает окна против часовой стрелки
Ctrl+w c — закрывает текущее окно

Открыть файлы во вкладках
$ vim -p filename1 filename2 filename3

Открыть файл во вкладке
:tabnew filename

Команда gt переключит на следующую вкладку, а команда gT — на предыдущую.

w - следующее слово
b - предыдущее слово
0 - начало строки
$ - конец строки

H - в верхний левый угол экрана
M - на первый символ середины экрана
L - правый нижний угол (последняя строка на экране)

dL - удалить с текущей строки до нижней строки экрана
dH - удалить с текущей строки до верхней строки экрана

Полезно будет ещё пройти vimtutor

Ещё:

http://www.moolenaar.net/habits_ru.html

http://zzapper.co.uk/vimtips.html

https://ru.stackoverflow.com/search?q=vim

http://gnu.su/plugins/forum/forum_viewtopic.php?803.last

http://wiki.solab.rshu.ru/Vim_%D1%83%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA

Мои плагины Vim

Поиск плагинов:

https://github.com/vim-scripts/

http://vim-scripts.org/vim/scripts.html

http://vimawesome.com/

Установка менеджера пакетов Vundle ( https://github.com/VundleVim/Vundle.vim ):

git clone https://github.com/VundleVim/Vundle.vim ~/.vim/bundle/vundle

Добавить в ~/.vimrc

set nocompatible
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
filetype plugin indent on

Добавить в ~/.vimrc

Plugin 'scrooloose/nerdtree'
Plugin 'kien/ctrlp.vim'
Plugin 'mileszs/ack.vim'
Plugin 'SirVer/ultisnips'
Plugin 'scrooloose/syntastic'
Plugin 'AutoComplPop'
Plugin 'motemen/git-vim'
Plugin 'majutsushi/tagbar'
Plugin 'DfrankUtil'
Plugin 'vim-scripts/vimprj'
Plugin 'thinca/vim-template'
Plugin 'mattesgroeger/vim-bookmarks'
Plugin 'mattn/emmet-vim'
Plugin 'freitass/todo.txt-vim'
Plugin 'rlofc/vorg'
Plugin 'auxiliary/vim-layout'
Plugin 'Lokaltog/vim-powerline'
 
Plugin 'tpope/vim-rails'
Plugin 'vim-ruby/vim-ruby'
Plugin 'slim-template/vim-slim'
Plugin 'tpope/vim-bundler'
Plugin 'thoughtbot/vim-rspec'
Plugin 'xmisao/rubyjump.vim'
Plugin 'vim-rubyformat'
 
Plugin 'jvanja/vim-bootstrap4-snippets'
Plugin 'Chiel92/vim-autoformat'

Набрать в режиме команд Vim:

:source ~/.vimrc
:PluginInstall

Как добавить локальный репозиторий:

Bundle '~/my/plugin'

Если вы хотите избавиться от плагина, то удалите его из вашего .vimrc (или закомментируйте). Затем команда :BundleClean удалит все плагины, которые не прописаны в .vimrc

По теме:

http://jenyay.net/Programming/VimPlugins2

http://chuwy.me/vim-cheatsheet.html

Vim Awesome

https://vimawesome.com/

Tutorial Emmet for VIM

http://vimawesome.com/plugin/emmet-vim

https://raw.githubusercontent.com/mattn/emmet-vim/master/TUTORIAL

Установить тёмную тему Vim — molokai

ШАГ 1

Файл https://krdprog.ru/materials/molokai.vim поместить в каталог ~/.vim/colors/

ШАГ 2

В файле ~/.vimrc добавить 2 строки:

set t_Co=256

color molokai

ШАГ 3

Перезагрузить Vim

Настройка редактора vim через файл ~/.vimrc

syntax on
set number
 
set t_Co=256
color molokai
 
set linebreak
set showcmd
set title
 
set ignorecase
set hlsearch
set mouse=a
set laststatus=2
set completeopt=menu
 
set textwidth=80
set wrap
set whichwrap=b,s,<,>,[,],l,h
 
set tabstop=2
set shiftwidth=2
set autoindent
set smartindent
setlocal cinwords=if,elif,else,for,while,try,except,finally,def,class
set cursorline
set encoding=utf-8
set termencoding=utf-8
set mps+=<:>
 
for prefix in ['i', 'n', 'v']
  for key in ['', '', '', '']
    exe prefix . "noremap " . key . " "
  endfor
endfor
 
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [POS=%04l,%04v]\ [LEN=%L]