VIM
Управление файлами
:e | перезагрузить файл |
:q | выйти |
:q! | выйти без сохранения изменений |
:w | записать файл |
:w {file} | написать новый файл |
:x | записать файл и выйти |
Навигация
k | вверх |
h | влево |
l | вправо |
j | вниз |
w | следующее начало слова |
W | следующее начало слова, разделенного пробелами |
е | следующий конец слова |
E | следующий конец слова, разделенного пробелами |
b | предыдущее начало слова |
B | предыдущее начало слова, разделенного пробелами |
0 | начало строки |
$ | конец строки |
gg | перейти к первой строке файла |
G | перейти в конец файла |
gk | перейти на одну отображаемую строку вниз |
gj | перейти на одну строку вверх |
Вставка
а | добавить после курсора |
А | добавить в конец строки |
i | вставить перед курсором |
I | вставить в начало строки |
о | создать новую строку под курсором |
О | создать новую строку над курсором |
R | войдите в режим вставки, но замените вместо вставки символов |
:r {file} | вставить из файла |
Редактирование
u | отменить |
yy | копировать (копировать) строку |
у{motion} | выдернуть текст, который перемещается {motion} |
p | вставить после курсора |
P | вставить перед курсором |
<Del> или x | удалить символ |
dd | удалить строку |
d{motion} | удалить текст, над которым перемещается {motion} |
Искать и заменить
:s/foo/bar/ | замените первое совпадение ‘foo’ на ‘bar’ только в текущей строке |
:s/foo/bar/g | заменить все совпадения (флаг g) с ‘foo’ на ‘bar’ только в текущей строке |
:%s/foo/bar/g | заменить все совпадения ‘foo’ на ‘bar’ во всем файле (:% s) |
:%s/foo/bar/gc | просить подтверждать вручную (флаг c) каждую замену |
Несколько окон
:e filename | редактировать другой файл |
:split filename | разделить окно и загрузить другой файл |
ctrl-w up arrow | переместить курсор вверх по окну |
ctrl-w ctrl-w | переместить курсор в другое окно (цикл) |
ctrl-w_ | развернуть текущее окно |
ctrl-w= | сделать все одинакового размера |
10 Ctrl-W+ | увеличить размер окна на 10 строк |
:vsplit file | вертикальный разрез |
:sview file | то же, что и split, но только для чтения |
:hide | закрыть текущее окно |
:only | держи только это окно открытым |
:ls | показать текущие буферы |
:b 2 | открыть буфер # 2 в этом окне |