Более двух лет назад я писал о своих настройках vim. С тех пор многое поменялось: от самих настроек и списка плагинов, до способов их организации и хранения.
В этом посте я расскажу о том, что, мне кажется, делает мою работу с использованием vim в разы продуктивнее.
Для начала отмечу, что я храню все свои настройки, связанные с 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
В этом посте я расскажу о том, что, мне кажется, делает мою работу с использованием 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
Автор аццкий VIM-овод! Респект, теперь мой vim будет делать почти всю работу за меня :) Спасибо.
ОтветитьУдалить