| Команда | Действие |
| :e <scp|ftp|ftps>://user@host/path/to/the/file.txt | Редактировать файлы по сети |
| :Ex или :e ./ | файловый менеджер |
| hjkl | перемещение в разные стороны |
| i | режим вставки |
| I | добавление в начало строки |
| a | режим добавления |
| A | добавление в конец строки |
| o | добавить строку сразу за текущей |
| O | добавить строку перед текущей |
| R | писать поверх имеющегося текста |
| u, :u[ndo] | отмена предыдущего действия (undo) |
| CTR-R, :red[o] | отмена отмены предыдущего действия (redo) |
| dd | вырезать (удалить) строку |
| cc | удалить и начать редактирование |
| yy | копировать строку |
| p | вставить из буфера обмена |
| <n>d | удалить n+1 строку |
| <n>y | скопировать n+1 строку |
| ESC | перейти в режим просмотра |
| DEL | удалить следующий символ |
| :<n> | перейти на строку #n |
| % | перейти к парной скобке |
| :e <fname> | редактировать файл |
| :w [fname] | записать изменения |
| :wa | сохранить изменения во всех файлах |
| :q | выйти из редактора |
| :q! | выйти из редактора, не сохраняя изменения |
| :color <name> | выбор цветовой схемы. цветовые схемы: |
| /usr/local/share/vim/vim72/colors/*.vim |
| :pwd | текущий каталог |
| :cd [path] | перейти в другой каталог |
| :!команда | выполнить команду - man, git, и так далее
стрелочками вверх и вниз можно автодополнять
команды и искать по истории
|
| CTR+p или CTR+n | автоматическое дополнение текста (в режиме редактирования) |
| CTR+r,=,<expr> | вставить выражение, например 5*2 - 3 (в режиме редактирования) |
| CTR+u, CTR+d | Page Up / Page Down |
| CTR+y, CTR+e | Перемотка вверх/вниз без движения курсора |
| Подсветка синтаксиса |
| :syntax on | включить подсветку |
| :syntax off | выключить подсветку (по умолчанию) |
| Перенос строк |
| :set wrap | разрешить word wrap (по умолчанию) |
| :set nowrap | запретить word wrap |
| Печать |
| :ha[rdcopy] | распечатать документ |
| :set printoptions=duplex:off | отключить двустороннюю печать |
| Сворачивание |
| zc | свернуть блок |
| zo | развернуть блок |
| zM | закрыть все блоки |
| zR | открыть все блоки |
| za | инвертирование |
| zf | см :set foldmethod=manual |
| :set foldenable | включить свoрачивание |
| :set foldmethod=syntax | сворачивание на основе синтаксиса |
| :set foldmethod=indent | сворачивание на основе отступов |
| :set foldmethod=manual | выделяем участок с помощью v и говорим zf |
| :set foldmethod=marker | сворачивание на основе маркеров в тексте |
| :set foldmarker=bigin,end | задаем маркеры начала и конца блока |
| Маркеры |
| ma | установить локальный маркер a |
| mB | установить глобальный маркер B |
| `c | перейти к локальному маркеру c |
| `0 | вернуться на позицию, на которой закончили работу при закрытии vim |
| :marks | просмотр маркеров |
| Макросы |
| qa | записать макрос с именем a |
| q | в режиме записи макроса: закончить запись |
| @a | выполнить макрос с именем a |
| @@ | повторить последний макрос |
| Регистры |
| "ayy | скопировать строку в регистр a |
| "bdd | вырезать строку и поместить в регистр b |
| "С2d | вырезать три строки и дописать в конец регистра C |
| :reg [name1][name2][...] | просмотреть содержимое регистров |
| Выделение |
| v + hjkl | выделение текста |
| SHIFT + v | выделить строку |
| CTR + v | выделение прямоугольника |
| p | вставить |
| y | копировать |
| d | удалить |
| gu | к нижнему регистру |
| gU | к верхнему регистру |
| Отступы |
| [#]> | сдвинуть выделенное вправо |
| [#]< | сдвинуть выделенное влево |
| [#]>> | сдвинуть строку вправо |
| [#]<< | сдвинуть строку влево |
| set tabstop=# | для табуляции используется # пробелов |
| set shiftwidth=# | в командах отступа используется # пробелов |
| set [no]expandtab | заменять ли табуляцию на соответствующее число пробелов |
| Поиск и замена в файле |
| /Выражение | поиск выражения в файле |
| \cВыражение | поиск без учета регистра |
| n | следующее совпадение |
| N | предыдущее совпадение |
| :%s/foo/bar/gi | замена строк, см http://eax.me/regular-expr/ |
| Нумерация строк |
| :set number | включить нумерацию строк |
| :set nonumber | отключить нумерацию строк |
| Работа с вкладками (a.k.a табами) |
| :tabnew [fname] | создать таб |
| :tabs | вывести список табов |
| :tabn | следующий таб |
| :tabp | предыдущий таб |
| <n>gt | перейти на таб #n |
| gt | следующий таб |
| gT | предыдущий таб |
| :tabm +1 | переместить таб вперед на одну позицию |
| :tabm -1 | переместить таб назад на одну позицию |
| :tabm 2 | переместить таб на заданную позицию (нумерация начинается с нуля) |
| Работа с окнами |
| :split | горизонтальное разбиение |
| :vsplit | вертикальное разбиение
Ctr+W, затем
с - закрыть окно
+- - изменение высоты текущего окна
- изменение ширины текущего окна
= -установить равный размер окон
|
| hjkl или стрелочки | перемещение между окнами |
| Проверка орфографии |
mkdir -p ~/.vim/spell
cd ~/.vim/spell
wget http://ftp.vim.org/vim/runtime/spell/ru.koi8-r.sug
wget http://ftp.vim.org/vim/runtime/spell/ru.koi8-r.spl
wget http://ftp.vim.org/vim/runtime/spell/en.ascii.sug
wget http://ftp.vim.org/vim/runtime/spell/en.ascii.spl
|
| :set spell spelllang=ru,en | включить проверку орфографии |
| :set nospell | выключить проверку орфографии |
| ]s | следующее слово с ошибкой |
| [s | предыдущее слово с ошибкой |
| z= | замена слова на альтернативу из списка |
| zg | good word |
| zw | wrong word |
| zG | ignore word |
| Работа с кодировкой |
| e ++enc=<имя кодировки> | Редактирование файла в ??? кодировке |
| w ++enc=<имя кодировки> | Сохранить файл в новой кодировке |
| set fileencodings=utf-8,koi8-r | Список автоматически определяемых кодировок в порядке убывания приоритета |
| Другое |
| :set [no]wildmenu | При авто-дополнении в командной строке над ней выводятся возможные варианты |
| :set list | Отображать табуляцию и переводы строк |
| q: | История команд |
| . | Повторение последней команды |
| vip | выделить параграф |
| viw | выделить слово |
| Shift+v или 0v$ | выделить строку |
| ^v$ | выделить строку, начиная с первого непробельного символа |
| vi( | выделить всё между ближайшими круглыми скобками (аналогично 'vi[' и 'vi{' для квадратных и фигурных скобок) |
| va( | выделить всё между ближайшими круглыми скобками, включая сами скобки |
| v2j | выделить на две строки вниз |
| dip | вырезать параграф |
| di( | вырезать содержимое круглых скобок |
| da( | вырезать содержимое круглых скобок и сами скобки |
| y2y | скопировать две строки |
| yy | скопировать строку |
| yiw | скопировать слово |
| p | вставить после курсора |
| [p | вставить перед курсором |
| xp | поменять две буквы местами |
| vt, | выделить всё до ближайшей запятой |
| Ctrl+G | номер текущей строки, общее число строк в файле и его имя |
| N,M ya | копировать в буфер обмена строки с N до M включительно (потом их можно вставить в нужном месте той же "p") |
| Ndd | удалить N строк (любые удалённые строки попадают в буфер обмена) |