Команда | Действие |
: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 строк (любые удалённые строки попадают в буфер обмена) |