Skip to content

AlexLov/dotvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Конфигурация vim сделана на основе конфига sjl. Частично изменен набор плагинов и некоторые сочетания кнопок и опции.

Используемые плагины

В качестве основного менеджера плагинов используется vundle – умеет устанавливать, обновлять и удалять плагины прямо из vim. Собственно сами плагины, которые живут на github.com и не запихиваются в репозитарий, а устанавливаются и/или обновляются при новой установке vim и этого конфига. Поэтому нет нужды держать их в своём репозитарии на github. Команда :BundleInstall[!] собственно и устанавливает/обновляет все плагины.

Общие

  • vim-surround — удобный плагин для обрамления слов, фраз, предложений и блоков скобками, тегам, кавычками и прочим подобным, ну и конечно же их замена.
  • vim-unimpaired – удобные сочитания клавиш с "[" и "]", типа переключения буферов, вставления строк(и) выши или ниже текущего положения, енкодинг и декодинг XML (и HTML), URLs, в общем много полезных штук.
  • vim-repeat – расширение возможностей повторения последнего действия на кнопке "."
  • vim-commentary – простешее комментирование строки или выделенного куска по сочетанию \\\ (тройное нажатие кнопки \) или \\ (в режиме выделения).
  • nerdtree – файловый менеджер
  • vim-abolish – поиск и замена подстрок или абревиатур с множеством вариантов. Вообще не очень понимаю зачем он мне может пригодиться, ещё ни разу не использовал, но пока пусть будет.
  • vim-speeddating – изменять дату кнопками C-x и C-a, инкрементальное увеличение/уменьшение даты как обычных чисел, поддерживает различные форматы, имеет возможности для расширения своими форматами.
  • Autoclose-vim – автозакрытие тегов, блоков типа if/end и подобное.
  • vim-easymotion – быстрое перемещение к нужному слову, символу или подобному, а так же удаление, копирование, замена и прочее. Работает по <leader><leader> (;;) + motion. Пример: ;;w, затем выбираем на какое слово переместить курсор.
  • gundo.vim – удобная работа с undo, позволяет просмотреть в отдельном окне какие именно были сделаны изменения и вернться к любому
  • supertab – автодополнения по Tabs
  • scratch.vim – использование scratch окна в vim, для временного хранения текста. После выхода из vim это окно закрывается и всё что в нём было теряется.
  • vim-orgmode – менеджер задач или todo-list. Основан на Emacs' Org-Mode. Пока особо не разобрался, но наверное полезная штука. Когда-нибудь разберусь и буду пользовать, наверное.
  • vim-yankring – управление буфером обмена, тобишь копипасты. Просмотр и редактирование всего что копировалось.

Development

Общие плагины для разработки

  • vim-fugitive – отличный плагин для работы с git прямо из vim. Коммиты, диффы и прочие полезности с подстветкой и другими плюшками.
  • gist-vim – закидывание текста, (скорее кусков кода) в gist.
  • threesome.vim – мощный плагин для разрешения конфликтов при мердже бранчей или подобного
  • taglist-plus — просмот функций, классов и объектов, с поддержкой Javascript
  • tagbar – ещё один плагин для просмотра функций, классов и объектов с удобной сортировкой и вообще.
  • vim-makegreen – запускает make и отображает сообщения зелёным или красным цветом, пока не использую. Оставил на будущее
  • syntastic – проверяет синтаксис кода, поддерживает много языков

For Mac OS X only

Плагины которые используются только под Mac OS X

  • KeyboardLayoutSwitcher – переключалка раскладки, чтобы при выходе из режима ввода всегда включался английский.

Snippets

  • xptemplate – для сниппетов использую этот плагин. Показался удобнее чем snipMate и UltiSnips.

Searching

  • ack.vim – поиск в файлах, что-то вроде grep, но типа более крутой
  • ctrlp.vim – поиск файлов, буфферов и чего-то ещё по мере ввода, ищет по любой части имени файла и рекурсивно. Полезная штука.

File specific plugins

Плагины специфичные для того или иного типа файлов, и скорее языков программирования. В большинстве своём добавляют подсветку кода, но некоторые куда более крутые.

Coffee Script

  • vim-coffee-script - подсветка и автодополнение кода на Coffee Script

CSS

  • vim-haml - подсвечивает код Haml, Sass и Scss файлов. Первый это шаблонизатор, часто используемы в ruby проектах и в частности в Ruby on Rails, остальные это расширения css с поддержкой переменных и прочих полезных функций, упрощающих и ускоряющих написание кода на css.
  • vim-css-color – подсветка цвета прямо в тексте, удобная штука.
  • vim-less – подсветка less файлов, аналог sass и scss
  • vim-css3-syntax – подсветка новых атрибутов, свойств и селекторов введённых в css3

JavaScript

  • vim-javascript – подсветка javascript и улучшение автодополения и автоформатирования кода. Так же добавляет поддержку ctags для javascript.

HTML

  • html5.vim – поддержка HTML5 тегов и атрибутов
  • vim-sparkup – неофициальный zen coding for vim. Быстрое написание html кода за счёт использования аббревиатур и прочих сокращений, которые потом разворачиваются в html код. Вещь полезная, но нужно много и часто с этим работать, чтобы запомнить и действительно "ускорить" и "упростить".

Python

  • python-mode - крутой плагин для работы с питоновским кодом, однако временно не использую, так как ничего не пишу на питоне.

Shell

  • bash-support.vim – крутой плагин для написания кода на bash'е. Много сочетаний клавиш и прочего.

Text

  • vim-markdown – плагин для подсветки markdown файлов (типа этого, который сейчас читаете).

Visualize

  • vim-colors-solarized – очень хорошая цветовая схема.
  • vim-powerline – делает красивой и удобной строку статуса. Требует модифицированного шрифта, хотя можно и обойтись.

Комбинации клавиш

Общие

В качестве <leader> используется ";" В качестве <localleader> используется ","

D в нормальном режиме удаление текста от курсора и до конца строки

Поиск и перемещения

;<space> в нормальном режиме убирает подсветку поискового запроса.

Tab в нормальном режиме переключает курсор между скобочками, в режиме ввода это автодополнение текста

n всё так же перемещает к следующему найденному поисковому запросу и помещает его в центре экрана

N тоже самое что и предыдущее, но в обратную сторону

* ищет текст под курсором (в визуальном режиме — выделенный кусок) от текущего места и до конца, но не переходит к первому найденному, а просто подсвечивает все найденные варианты, дальше перемещаться можно с помощью n и N

# тоже самое что и *, но ищет в обратную сторону

g; в нормальном режиме перемещает курсор в позицию первого изменения и позиционирует по центру экрана

g, тоже самое что и g; только перемещает курсор в позицию последнего изменения

c-e в режиме ввода перемещает курсор в конец строки, как в терминале

c-a в режиме ввода перемещает курсор в начало строки, как в терминале

;/ вызывает vimgrep в текущем каталоге на строке под курсором и выводит найденные файлы с указанием строк в qquickfix окно

C-h, C-j, C-k, C-l переключение между окнами, вместо длинных <c-w>h и остальных

C-tab переключение в следующее окно

C-S-tab переключение в предыдущее окно

;h разделить окно горизонтально

;v разделить окно вертикально

Folding

Ctrl-Enter перематывает текущее положение курсора к самому верху редактора, если курсор находится на свёрнутом разделе раскрывает его и перематывает его начало к верху экрана

Space в нормальном и визуальном режимах сворачивает и разворачивает раздел под курсором

zO Раскрыть текущий свёрнутый (folded) раздел начиная с самого вернехго и все подуровни независимо от того где находится курсор (в подуровнях или нет)

;z сворачивает все раскрытые разделы и оставлет открытым только тот на котором находится курсор

Настройки специфичные для различных типов файлов

CSS, LESS, SCSS, SASS

,S сортирует свойства в алфавитном порядке

{<cr> в режиме ввода вставляет пару фигурных скобок { и } и корректно распологает курсор между ними таким образом чтобы кусок кода был сворачиваемым (folded)

HTML

,f сворачивает (fold) текущий тег

,t сворачивает (fold) текущий шаблонный тег (templatetag)

Shift-Enter если открывающий и закрывающий теги набраны в одну строку и курсор находится между ними, то нажатие этого сочетания клавиш выносит открывающий изакрывающий теги и курсор на отдельные строки

,= выравнивает тег под курсором (и все вложенные)

JavaScript

{<cr> тоже самое что и для CSS

Markdown

,1 делает строку под курсором заголовком первого уровня

,2 тоже самое только второго уровня

,3 тоже самое только третьего уровня

OrgMode

Q что-то делает в нормальном режиме, так как ещё не пробовал поэтому не знаю :)

Python

⌘+' в режиме ввода вставить такой текст _(u'') и поместить курсор между кавычками, нужны для ввода строки в юникоде

ReStructuredText

,1 секция первого уровня

,2 секция второго уровня

,3 секция третьего уровня

,4 секция четвёртого уровня

Быстрое открытие файлов

;ev открыть файл .vimrc на редактирование, при этом окно разделяется по вертикали и помещается в правую часть окна

Shell

;! вызывает функцию Shell, которой можно передать шелл-команду и результат откроется в правой части окна (вертикальное разделение)

Просто удобные сочетания

;ts удаляет "висящие" пробелы

c-u в нормальном режиме и в режиме ввода меняет регистр слова перед курсором

;f замена текста в командной строке появляется текст %s//

заимствования из Emacs

Все сочетания используются в режиме ввода команд

c-a курсор в начало строки

c-e курсор в конец строки

c-h курсор на символ влево

c-l курсор на символ вправо

;D отключаем diff

Q в нормально и визуальном режиме форматирование строки как TextMate (мне не очень нравится или нужно, но пока оставил)

;V выделяет строки от текущего места курсора до места последнего изменения или копирования текста (скорее символа)

S разбиение строк, посути обратное действие J[oin]

Выравнивание текста

;Al в нормальном и визуальном режиме выравнивает текст по левому краю

;Ac по центру

;Ar по правому краю

;; переход в режим ввода команд (ну лениво мне иногда жать Shift-; :)

;1 устанавливает высоту строки для ввода команд в одну строку

;2 устанавливает высоту строки для ввода команд в две строки

' or æ прыгнуть к ранее поставленной метке (:mark). æ это Alt+'

` переключение на альтернативный файл (alternate-file) в буфере

vv в нормальном режиме выделяет всю строку за исключением отступов

c-b в режиме ввода используется как калькулятор. Сомнительная полезность, но забавно и вдруг пригодится. Хотя наверняка же забуду.

w!! в режиме ввода команд записывает в файл с использованием команды sudo

Сохранение и выход

;w сохраняет файл

;W сохраняет все буферы

;q закрытие текущего файла без сохранения

;Q закрытие всех файлов без сохранения и выход из редактора

;s сохранить и закрыть файл

;S сохранить и закрыть все файлы

Опечатки

Это когда в режиме ввода команд вводишь опечатку я часто набираю частые команды типа wq с зажатым шифтом после того как набрал :, тупо не успеваю шифт отпустить

E = e редактирование

Q = q закрытие

W = w сохранение

QA = Qa = qa закрыть всё

WA = Wa = wa сохранить всё

WQ = Wq = wq сохранить и закрыть

Быстрое переключение типа файла (filetype)

Данные сочетания делаются в нормально режиме

_md устанавливает тип markdown

_hd устанавливает тип htmldjango

_jt устанавливает тип htmljinja

_cw устанавливает тип confliencewiki

_pd устанавливает тип python.django

_d устанавливает тип diff

F8 переключалка режима paste/nopaste

Ctrl+Enter в режиме ввода и не зависимо от положения курсора (хоть в середине строки) переносит курсор на новую строку

Shift+Enter в режиме ввода и не зависимо от положения курсора (хоть в середине строки) добавляет в конце строки : и переносит курсор на новую строку

;I показывать/скрывать непечатные символы, такие как "висящий пробел", "табуляция" и "конец строки"

c-l автодополнение строки. Строки берутся из всех открытых буферов.

c-f автодополенение вставляющее имея файла из текущего (:pwd) каталога.

Плагины

CTags

;<cr запускает ctags (рекурсивно) в текущем (:pwd) каталоге. И добавлен хак для выдёргичания питоновских переменных, которые ctags почему-то игнорирует.

Ack

;a вызывает :Ack!. Типа grep по файлам.

Autoclose

;x включает/выключате плагин Autoclose, который автоматически закрывает скобки и прочие вещи в зависимости от типа файла.

Commentary

;c в нормальном режиме "комментирует" строку, в визуальном режиме "комментирует" выделенный блок

Ctrl-P

Очень хороший плагин, быстро ищет среди файлов, буферов или ранее открытых фалов. По умолчанию ищет в текущем каталоге (:pwd), если напрямую набрать в командной строке CtrlP <directory>, где в качестве <directory> указать какой-то каталог, то будет искать в нём.

c-p собственно стандартное сочетание клавиш для его вызова

;. а в данном случае будет искать по тегам, которые берёт из файла построенного ctags

В окне поиска используются следующие клавиши:

c-j, c-k перемещает курсор выбора в окне результатов вниз и вверх соответственно

c-p, c-n переход по истории поиска соответственно назад и вперёд

c-f, c-b переключает режим поискать вперёд (buffers -> mru -> files) и обратно (mru -> buffers -> files). Переключает циклично, так что дойдя до конца списка режимов начинает сначала

c-tab переключить фокус на окно результатов поиска, а там уже можно переключаться мужду результатами просто вводя первую букву или символ

tab автодополнение имени каталога в текущем каталоге

c-a, c-e перемещение курсора в начало и конец строки поиска соответственно

c-h, c-l перемещение курсора влево-вправо в строке поиска

Enter открыть выбранный файл в текущем буфере, если такое возможно

c-t открыть выбранный файл в новом табе, следующем сразу за текущим

c-v открыть файл в этом же окне, но разделив его вертикально (vertical split)

c-x, Ctrl+Enter, c-s открыть файл в этом же окне, но разделив его горизонтально (horizontal split)

c-y создать новый файл с полным путём, т.е. все указанные каталоги тоже будут созданные, если их нет

c-z помечает файл для последующего открытия (c-o) или создания (c-y)

c-o открывает все ранее промеченные (c-z) файлы

esc, c-c, c-g выход из плагина

В общем там ещё много всего, я здесь описал основные сочетания, которые чаще всего могут быть использованны, остальные смотреть в :help ctrlp-mappings

Ну и настроек у него тьмя, так что читать документацию.

Fugitive

Отличные плагин для работы с git. Позволяет смотреть статус (status), делать мердж (diff), коммитить (commit) и многое другое. Очень мощный и функциональный плагин. Полноценная работа с git не выходя из vim.

;gd включает :Gdiff — режим сравнения текущего рабочего файла с его закоммитченой копией

;gs показывает статус — :Gstatus

;gw вызывает :Gwrite, который записывает файл и если файл и добавляет в git (git add), если файла не было, иначе равноценно git checkout

;gb вызывает :Gblame, собственно это вызов git blame

;gco вызывает :Gcheckout

;gci вызывает :Gcommit

;gm вызывает :Gmove

;gr вызывает :Gremove

;H в нормальном и визуальном режимах вызывает :Gbrowse

Там ещё много всего в этом плагине, но это сокращения, которые используются. Остальное смотреть в документации к fugitive, так ещё в каждом режиме могут использовать различные сочетания и просто команды.

Gundo

Манипуляции с исторей изменения, можно просмотреть и откатить все изменения, которые делались

;u показывает/скрывает окно плагина

NERDTree

Файловый менеджер (типа)

⌘+i в нормальном режиме и режиме ввода показывает/скрывает слева дерево файлов

В нём есть справка по используемым кнопкам вызывается в нём клавишей ?. Остальное в документации.

Scratch

Плагин нужен для открывания scratch-окна, содержимое которого не сохраняется при выходе и редактора, ну и не регуется на то что в нём есть несохранённый текст при переключении в другой буфер. Можно использовать для временного сохранения каких-то кусков текста/кода.

;<tab> открывает/закрывает scratch окно

Sparkup

Плагин реализующий идею zen coding.

c-d запускает sparkup, т.е. преобразует хитрую строку в форматированный html-код

c-s переход к следующему пустому тегу/аттрибуту

XPTemplate

Сниппеты! Этим всё сказано :) Довольно удобный и функциональный плагин для работы со сниппетами. Имеет много возможностей по написанию своих

Tab развернуть имя сниппета в код. Конфликта с SuperTab не возникает, точнее он разрешается самим плагином и даже есть конфиг под это дело. Так же этой кнопкой перемещаться по выпадающему меню выбора сниппета вперёд, а S-Tab обратно

C-d удаляет текст в текущем placeholder (как это по-русски я не знаю, а придумывать сейчас лень) и переходит к следующему

C-g если в процессе редактирования курсор вышел за пределы placeholder'а, то это сочетание возвращает курсор обратно и выделяет весь placeholder для повторного ввода или удаляения и перехода к следующему. Полезная штука.

YankRing

Плагин для работы с буфером обмена. В нём можно найти всё что когда-либо копировалось, вырезалось, удалялось.

⌘+y открывает окно плагина, в котором и лежит всё что копировалось в буфер, ну и вставить оттуда можно то что нужно.

Редактирование текста

Данные сокращения позволяют выбрать содержимое скобок ( ( и ), [ и ], { и } ) и добавив какие-либо motion что-то с ними сделать. Например такое din( удалит всё что находится внутри скобок ( и ). А такое can[ удалит содержимое скобок [ и ] вместе с ними и включит режим ввода.

an выбирает содержимое скобок вместе со скобками. Ищет вперёд.

in выбирает только содержимое скобок, сами скобки остаются на месте. Ищет вперёд.

al выбирает содержимое скобок вместе со скобками. Ищет назад.

il выбирает только содержимое скобок, сами скобки остаются на месте. Ищет назад.

MAC OS X

Клавиши специфичные для macvim.

⌘+← перемещает курсор в начало строки, аналогично кнопке Home.

⌘+→ перемещает курсор в конец строки, аналогично кнопке End.

⌘+↑ перемещает курсор в начало документа, аналогично кнопке Ctrl+Home.

⌘+↓ перемещает курсор в начало документа, аналогично кнопке Ctrl+End.

⌥+← перемещает курсор на слово влево.

⌥+→ перемещает курсор на слово вправо.

⌥+↑ перемещает курсор на параграф вверх.

⌥+↓ перемещает курсор на параграф вниз.

⌥+⌫ удаляет от курсора до начала cлова.

⌘+⌫ удаляет от курсора до начала строки.

About

My vim config

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published