воскресенье, 27 марта 2011 г.

Мой Vim 2.

Более двух лет назад я писал о своих настройках vim. С тех пор многое поменялось: от самих настроек и списка плагинов, до способов их организации и хранения.

В этом посте я расскажу о том, что, мне кажется, делает мою работу с использованием vim в разы продуктивнее.

В этот раз выкладывать весь конфиг сюда не буду, т.к. он скучный и слишком кастомизированный, однако хочу перечислить несколько общих моментов, которые будут полезны всем. В этом посте речь пойдёт о: pathogen, command-t, fugitive, extradite, gundo, pyflakes, vim-rooter, surround.

Для начала отмечу, что я храню все свои настройки, связанные с vim в git-репозитории, что позволяет быстро воссоздать окружение в новом шелле с помощью команд:

$ git clone https://github.com/xa4a/vimfiles ~/.vim
$ ln -s ~/.vim/vimrc ~/.vimrc
 
Pathogen.vim

Проблема: чтобы установить новый скрипт в vim, надо: идти на google.com или vim.org/scripts, искать нужный скрипт, качать, распаковывать .zip архив, раскидывать файлики по нужным папочкам, пересобирать helptags, и т. д. Чтобы удалить плагин, нужно.. м.. как удалить плагин?
Решение: pathogen.vim - плагин для организации простого управления расширениями. После установки pathogen, идём в поиск на github (или прямиком на https://github.com/vim-scripts), копируем адрес репозитория нужного плагина, например fugitive, и в консоль:

$ cd ~/.vim
$ git submodule add https://github.com/tpope/vim-fugitive.git bundle/fugitive

всё, плагин готов к работе. Использование git даёт нам на шару слежение как за каждым отдельным плагином так и за всей кучей. Так, обновить все до последних версий - просто:

$ git submodule foreach git pull

Вердикт: ставить, и удивляться, почему его не придумали давным-давно. Ещё мне нужно посмотреть на Vundle. Есть мнения, что vundle >> pathogen. Не пробовал.
 
vim-rooter
Тут всё просто - при открытии файла меняет текущий каталог на корень проекта (определяемый по каталогу с метаинформацией VCS, например .hg, .git, .bzr, _darcs). Это и само-по-себе может быть довольно удобным, но полезность возрастает на порядки, при использовании со следующим плагином.

$ git submodule add https://github.com/airblade/vim-rooter.git bundle/vim-rooter

Command-T
command-T - шикарнейшая замена разным project explorer'ам. Смысл работы в том, что чтобы открыть какой-либо из существующих файлов в текущем рабочем каталоге (привет, vim-rooter) теперь не обязательно набирать полностью имена файлов, или помнить полный путь к ним. Достаточно нескольких символов из пути, которые смогут однозначно идентифицировать файл. Обычно хватает последовательности 2-4 символов. Думаю, command-t один из самых мощных productivity booster'ов этого списка.

Вердикт: идти на хоумпагу https://wincent.com/products/command-t, смотреть скринкаст, вдохновляться и:

$ git submodule add https://github.com/wincent/Command-T.git bundle/command-t

fugitive
fugitive.vim - лучшая из известных интеграций vim с git. Прямо из редактора имеем всякие git blame, git diff и многие другие команды.
В общем, fugitive.vim: a Git wrapper so awesome, it should be illegal
Как обычно, просто:

$ git submodule add https://github.com/tpope/vim-fugitive.git bundle/fugitive

extradite
extradite.vim - надстройка над fugitive.vim, позволяющая просматривать историю конкретных файлов, а так же всего репозитория git.

$ git submodule add https://github.com/int3/vim-extradite.git bundle/extradite


gundo
С версии 7.3, vim поддерживает дерево изменений файла и хранит изменения с прошлых сеансов работы с файлом. Тоесть когда правим файл, отменяем, снова правим, самые первые правки не теряются, а остаются в истории, даже после перезагрузки (файла/вима/компьютера). gundo.vim предоставляет интерфейс для просмотра и навигации по истории изменения файла. 

$ git submodule add https://github.com/herzi/gundo.git bundle/gundo


indent-guides
indent-guides - подсвечивает отступы для слежения за уровнями вложенности блоков.

git submodule add https://github.com/vim-scripts/Indent-Guides.git bundle/indent-guides

indent-objects
indent-objects позволяет быстро выделять/редактировать блоки кода, группируя их по отступам, напрмер с помощью Vai / Vii

$ git submodule add https://github.com/michaeljsmith/vim-indent-object.git bundle/indent-objects

matchit
matchit - расширение функциональности стандартной команды %. Добавляет, среди прочего, переход к открывающему/закрывающему html/xml тегу.

$ git submodule add https://github.com/edsono/vim-matchit.git bundle/matchit

python-fold
python-fold - просто вменяемое сворачивание python-кода

$ git submodule add http://github.com/vim-scripts/jpythonfold.vim.git


pyflakes-vim
pyflakes-vim - проверка питон-кода на корректность в реальном времени.

$ git submodules add https://github.com/kevinw/pyflakes-vim.git

surround.vim
surround.vim упрощает управление скобками/кавычками. Например заменить круглые скобки, окружающие курсор, на квадратные - cs([, тоесть change-surround-([ .

git submodule add https://github.com/tpope/vim-surround.git bundle/surround

bufexplorer
Хотя command-T и решает все проблемы навигации по проектам, bufexplorer иногда может быть полезен для быстрого обзора открытых буферов.

$ git submodule add https://github.com/vim-scripts/bufexplorer.zip.git bundle/bufexplorer

Конец
В завершение только добавлю, что за новостями по теме я слежу на реддите: /r/vim и /r/vimplugins, а все мои достижения в этой области можно исследовать на https://github.com/xa4a/vimfiles. И традиционно, моя цветовая схема: liquid carbon


1 комментарий:

  1. Автор аццкий VIM-овод! Респект, теперь мой vim будет делать почти всю работу за меня :) Спасибо.

    ОтветитьУдалить