gladkih
8/12/2014 - 6:59 PM

vim-cheatsheet_ru.md

Конфиги

Навигация

Различные способы перехода в режим вставки

i " вставить текст до курсора
I " вставить текст с начала строки
a " добавить текст после курсора
A " добавить текст с конца строки
s " заменить символ
S " заменить всю строку
o " добавить строку после
O " добавить строку перед
r " заменить символ
R " заменить последовательность символов
C " удалить текст после курсора, и перейти с решиж редактирования

Перемещения

[n]h " ←
[n]j " ↓
[n]k " ↑
[n]l " →

^ " переход в начало строки
$ " переход в конец строки

[n]w " к началу следующего слова
[n]e " к концу следующего слова
[n]b " к предыдущему слову
[n]( " к предыдущему предложению
[n]) " к следующему предложению
[n]{ " к предыдущему абзацу
[n]} " к следующему абзацу


<c-b> " перемещение на один экран назад ('b'ackward)
<c-f> " перемещение на один экран вперед ('f'orward)

Поиск

По строке

f{char} " перейти на ближайшую букву :char в строке
F{char} " В обратную сторону
t{char} " поставить курсор _перед_ ближайшей :char
T{char} " В обратную сторону

Поиск по файлу

* " найти все вхождения слова под курсором и перейти к следующему
# " найти все вхождения слова под курсором и перейти к предыдущему
/{str} " найти :str
n " перейти к следующему вхождению :str
N " перейти к предыдущему вхождению :str

Поиск по проекту

:Ack StringToSearch " https://github.com/mileszs/ack.vim

Вставка, замена и удаление

Text Objects

Принцип работы: Действие → Область → Объект

Действие

Документация

c " заменить
y " скопировать
d " удалить
~ " изменить регистр. Работает только при `set tildeop`
< " Сдвинуть на отступ влево
> " Сдвинуть на отступ вправо
= " Выровнять отступы
q " Отформатировать текст
! " Обработать текст спомощью внешней программы
Область
i — внутри объекта
a — включая объект
Объект
w — слово
t — тег
} — абзац
" — текст в кавычках
...
Комбинации
dfe " удалить текст до ближайшего символа `e`, включая его
dte " удалить текст до ближайшего символа `e`, невключая его
d$ " Удалить текст от позиции курсора до конца строки
d0 " удалить текст от позиции курсора до начала строки
d^ " удалить текст от позиции курсора до первого не пробельного символа

Окна, табы и буфферы

Окна

:vsp — создать новое окно, разделив экран вертикально
:sp — создать новое окно, разделив экран горизонтально
C-w + направление — переключение между окнами
C-w + r(otate) — поменять местами окна
C-w C-w — переключаться между окнами циклически
:q — закрыть окно
:qa — закрыть все окна

Табы

:tabe(dit) .
:tabn(ew)
:tabc(lose)
:tabm(ove) [positon] 

Буфферы

" При открытии файла, он помещается в буфер — оперативную память.
" Окно — это представление буфера. 
" Показать список открытых буферов
:ls
" Переключиться на буфер
:b (# буфера)

Undo/Redo

:earlier 4m — переместиться на 4 минуты назад
:later 45s — переместиться на 45 секунд вперед
:w !diff % - — дифф несохраненных изменений 

Повторение действий

. " Повторить последнее изменение
; " Повторить последний поиск

разное

" Визуальный режим
v — визуальный режим
V — визуальный режим для работы со строками

Сессия

:mksession ~/latest_session.vim " Сохранить
!vim -S ~/latest_session.vim " Загрузить

Быстрая установка плагинов

" .vimrc:
Bundle 'author/repo'
" vim:
:so ~/.vimrc
:BundleInstall

Очистка Bundles/ от удаленных плагинов

:BundleClean

Включить подсветку синтаксиса

:setf  language

Фолдинг

:set foldmethod=indent " Включить
za " тогглить 

Вне категорий

:e[dit] {file}
:cd {dir} " Сменить текущей `cwd`
:pwd " узнать wd

" прочитать stdout в vim
svn diff | vim -R -

Разместите ваш курсор на имени переменной и нажмите gd для перехода к локальному определению имени переменной. gD производит то же для глобального объявления, производя поиск с начала файла.

Используйте ]] для перехода к следующему вхождению { в первом столбце. Есть много подобных перемещений - смотри :help object-motions для подробной информации.