#### Конфиги - [Мой `.vimrc`](https://github.com/shuvalov-anton/.dotfiles/blob/master/.vimrc) - http://dotfiles.org/.vimrc ## Навигация ### Различные способы перехода в режим вставки ```vim i " вставить текст до курсора I " вставить текст с начала строки a " добавить текст после курсора A " добавить текст с конца строки s " заменить символ S " заменить всю строку o " добавить строку после O " добавить строку перед r " заменить символ R " заменить последовательность символов C " удалить текст после курсора, и перейти с решиж редактирования ``` ### Перемещения ```vim [n]h " ← [n]j " ↓ [n]k " ↑ [n]l " → ^ " переход в начало строки $ " переход в конец строки [n]w " к началу следующего слова [n]e " к концу следующего слова [n]b " к предыдущему слову [n]( " к предыдущему предложению [n]) " к следующему предложению [n]{ " к предыдущему абзацу [n]} " к следующему абзацу " перемещение на один экран назад ('b'ackward) " перемещение на один экран вперед ('f'orward) ``` ### Поиск #### По строке ```vim f{char} " перейти на ближайшую букву :char в строке F{char} " В обратную сторону t{char} " поставить курсор _перед_ ближайшей :char T{char} " В обратную сторону ``` #### Поиск по файлу ```vim * " найти все вхождения слова под курсором и перейти к следующему # " найти все вхождения слова под курсором и перейти к предыдущему /{str} " найти :str n " перейти к следующему вхождению :str N " перейти к предыдущему вхождению :str ``` #### Поиск по проекту ```vim :Ack StringToSearch " https://github.com/mileszs/ack.vim ``` ### Вставка, замена и удаление #### Text Objects Принцип работы: Действие → Область → Объект ##### Действие [Документация](http://vimdoc.sourceforge.net/htmldoc/motion.html#operator) ```vim c " заменить y " скопировать d " удалить ~ " изменить регистр. Работает только при `set tildeop` < " Сдвинуть на отступ влево > " Сдвинуть на отступ вправо = " Выровнять отступы q " Отформатировать текст ! " Обработать текст спомощью внешней программы ``` ##### Область ```vim i — внутри объекта a — включая объект ``` ##### Объект ```vim w — слово t — тег } — абзац " — текст в кавычках ... ``` ##### Комбинации ``` dfe " удалить текст до ближайшего символа `e`, включая его dte " удалить текст до ближайшего символа `e`, невключая его d$ " Удалить текст от позиции курсора до конца строки d0 " удалить текст от позиции курсора до начала строки d^ " удалить текст от позиции курсора до первого не пробельного символа ``` ### Окна, табы и буфферы #### Окна ```vim :vsp — создать новое окно, разделив экран вертикально :sp — создать новое окно, разделив экран горизонтально C-w + направление — переключение между окнами C-w + r(otate) — поменять местами окна C-w C-w — переключаться между окнами циклически :q — закрыть окно :qa — закрыть все окна ``` #### Табы ```vim :tabe(dit) . :tabn(ew) :tabc(lose) :tabm(ove) [positon] ``` #### Буфферы ```vim " При открытии файла, он помещается в буфер — оперативную память. " Окно — это представление буфера. " Показать список открытых буферов :ls " Переключиться на буфер :b (# буфера) ``` ### Undo/Redo ```vim :earlier 4m — переместиться на 4 минуты назад :later 45s — переместиться на 45 секунд вперед :w !diff % - — дифф несохраненных изменений ``` #### Повторение действий ```vim . " Повторить последнее изменение ; " Повторить последний поиск ``` ### разное ```vim " Визуальный режим v — визуальный режим V — визуальный режим для работы со строками ``` #### Сессия ```vim :mksession ~/latest_session.vim " Сохранить !vim -S ~/latest_session.vim " Загрузить ``` #### Быстрая установка плагинов ```vim " .vimrc: Bundle 'author/repo' " vim: :so ~/.vimrc :BundleInstall ``` #### Очистка Bundles/ от удаленных плагинов ```vim :BundleClean ``` #### Включить подсветку синтаксиса ```vim :setf language ``` #### Фолдинг ```vim :set foldmethod=indent " Включить za " тогглить ``` #### Вне категорий ```vim :e[dit] {file} :cd {dir} " Сменить текущей `cwd` :pwd " узнать wd " прочитать stdout в vim svn diff | vim -R - Разместите ваш курсор на имени переменной и нажмите gd для перехода к локальному определению имени переменной. gD производит то же для глобального объявления, производя поиск с начала файла. Используйте ]] для перехода к следующему вхождению { в первом столбце. Есть много подобных перемещений - смотри :help object-motions для подробной информации. ```