Управление плагинами vim с помощью Vundle на сервере Linux

Текстовый редактор vim – это универсальный и чрезвычайно мощный инструмент для создания кода и управления простым текстом и конфигурационными файлами системы. Пользователи очень ценят его за модальный дизайн и изящную грамматику, однако его интерфейсу и функциональности иногда не хватает тонкостей.

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

По этой причине для vim создано несколько менеджеров плагинов, которые упрощают эту задачу. Менеджер плагинов, о котором пойдет речь в этом руководстве, называется vundle.

Вы узнаете, как использовать vundle на экземпляре Ubuntu 12.04 VPS.

Примечание: Большинство других дистрибутивов тоже могут использовать эти инструкции.

Установка утилит

Прежде чем начать работу с vundle, нужно установить несколько зависимостей.

Сначала нужно обновить индекс локальных пакетов, а затем проверить установку vim и установить git.

sudo apt-get update
sudo apt-get install vim git

Теперь, когда вы установили vim и git (вы, вероятно, уже установили vim, если читаете этот мануал), мы поговорим о том, как работают плагины и как работает vundle, чтобы управлять ими.

Как работает Vundle?

Традиционно vim настраивается для каждого пользователя в домашнем каталоге с параметрами по умолчанию, установленными системным администратором. Эти личные настройки хранятся в скрытом файле ~/.vimrc.

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

Если вы используете встроенную систему плагинов vim, ваш домашний каталог может выглядеть так:

ls -AR ~
/home/demouser:
.bash_history  .bash_logout  .bashrc  .profile  .vim  .vimrc
/home/demouser/.vim:
autoload  bitmaps  colors  doc  plugin  syntax
/home/demouser/.vim/autoload:
plugin1.vim  plugin2.vim
/home/demouser/.vim/bitmaps:
plugin1.png
/home/demouser/.vim/colors:
plugin2.vim
/home/demouser/.vim/doc:
plugin1.txt  plugin2.txt
/home/demouser/.vim/plugin:
plugin1.vim
/home/demouser/.vim/syntax:
plugin1.vim

Инструмент vundle фактически построен на другом менеджере плагинов, pathogen, и предоставляет надмножество функциональности. Менеджер pathogen упрощает управление плагинами, создавая отдельное дерево каталогов для каждого отдельного плагина.

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

Они хранятся в подкаталоге bundle. Ваша структура каталогов будет выглядеть примерно так:

ls -AR ~
justin@vundle:~$ ls -AR ~
/home/justin:
.bash_history  .bash_logout  .bashrc  .profile  .vim  .vimrc
/home/justin/.vim:
autoload  bundle
/home/justin/.vim/autoload:
plugin1.vim  plugin2.vim
/home/justin/.vim/bundle:
plugin1  plugin2
/home/justin/.vim/bundle/plugin1:
autoload  bitmaps  doc  plugin  syntax
/home/justin/.vim/bundle/plugin1/autoload:
plugin1.vim
/home/justin/.vim/bundle/plugin1/bitmaps:
plugin1.png
. . .

Это создает систему глубокого вложения, но позволяет проще управлять плагинами как единым целым. Если, к примеру, вы больше не хотите использовать plugin1, вы можете выполнить команду:

rm -rf ~/.vim/bundle/plugin1

Это значительно упрощает схему управления плагинами. pathogen  делает в основном это.

Что делает vundle? Он добавляет интерфейс управления внутри самого vim, который позволяет устанавливать больше плагинов, обновлять плагины и т. д. Он добавляет еще один уровень управления поверх pathogen.

Установка vundle

Теперь, когда вы немного понимаете, как работает система vundle, пора приступать к ее установке.

Во-первых, если у вас есть файл ~/.vimrc  и каталог ~/.vim, нужно их создать резервную копию и начать работу сначала. Это поможет минимизировать несовместимости и потенциальные проблемы:

if [ -e .vimrc ]; then mv .vimrc .vimrc_bak; fi
if [ -e .vim ]; then mv .vim .vim_bak; fi

Затем можно клонировать плагин vundle с GitHub, что воссоздаст часть структуры каталога ~/.vim.

git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

Затем нужно воссоздать файл ~/.vimrc, чтобы vim смог использовать новую систему управления пакетами.

vim ~/.vimrc

Во-первых, нужно убедиться, что vim не пытается сохранить совместимость с vi, его предшественником. Это требование vundle. Когда vim пытается поддерживать совместимость, он отключает большинство функций, которые делают его лучше vi.

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

set nocompatible
filetype off

Затем нужно изменить путь runtime vim и добавить расположение vundle. После этого можно вызвать функцию инициализации vundle.

set nocompatible
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

Теперь система vundle инициализируется, и вы сможете добавить плагины. vundle может управлять локальными плагинами, но у него есть еще одно преимущество – возможность связывать локальные версии с онлайн-версиями, что позволяет автоматически обновлять плагины и т. д.

Для этого нужно указать репозитории GitHub, vim-скрипты, удаленные и локальные репозитории git.

Прежде всего, нужно научиться управлять пакетом vundle с помощью команды vundle. Затем можно добавить любые дополнительные плагины.

set nocompatible
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" This is the Vundle package, which can be found on GitHub.
" For GitHub repos, you specify plugins using the
" 'user/repository' format
Plugin 'gmarik/vundle'
" We could also add repositories with a ".git" extension
Plugin 'scrooloose/nerdtree.git'
" To get plugins from Vim Scripts, you can reference the plugin
" by name as it appears on the site
Plugin 'Buffergator'
" Now we can turn our filetype functionality back on
filetype plugin indent on

Обратите внимание, что в конце нужно восстановить функциональность filetype, которую вы ранее включили. Все плагины должны быть объявлены между строкой call vundle#rc() и директивой filetype plugin indent on.

После этого раздела можно добавить любые дополнительные настройки vim.

Когда вы закончите, сохраните и закройте файл («: wq» или «ZZ»).

Установка и обновление плагинов

Теперь просто нужно сказать vundle установить все плагины, которые вы добавили в файл. Запустите vim:

vim

Теперь выполните команду:

:PluginInstall

Это откроет новое разделенное окно в vim и запустит установку каждого из плагинов. Когда процесс будет завершен, вы сможете закрыть новый буфер и окно, введя:

:bdelete

Все плагины, добавленные в ~/.vimrc, теперь установлены.

Чтобы обновить плагины, используйте одну из этих команд:

:PluginUpdate
:PluginInstall!

Восклицательный знак в конце:PluginInstall! говорит vundle переустановить все плагины, чтобы получить их самые новые версии.

После обновления вы можете увидеть, какие плагины обновились, набрав «u» в окне плагина vundle. Если вы хотите просмотреть весь журнал операций, которые произошли во время обновления или установки, введите l.

Управление плагинами

Теперь, когда вы узнали, как устанавливать плагины, давайте рассмотрим некоторые другие функции, которые помогут вам получить больше от vundle.

Добавление новых плагинов

Одной из наиболее полезных функций vundle является возможность находить и устанавливать дополнительные плагины.

Запросить список плагинов, которые vundle может найти на сайте Vim Scripts, можно с помощью одной из команд:

:Plugins
:PluginSearch!

Восклицательный знак в конце второй команды обновляет локальный список с сайта Vim Scripts.

Если вы хотите найти определенный плагин, вы можете использовать тот же синтаксис:

:PluginSearch! plugin_query

Это откроет новое окно с результатами вашего запроса. Если вы недавно обновили локальную базу данных, вы можете убрать «!» из команды. К примеру, если вы ищете markdown , вы увидите что-то вроде этого:

PluginSearch markdown
"Keymap: i - Install plugin; c - Cleanup; s - Search; R - Reload list
"Search results for: markdown
Plugin 'instant-markdown.vim'
Plugin 'MarkdownFootnotes'
Plugin 'Markdown'
Plugin 'Markdown-syntax'

Как видите, вы можете легко установить любой из плагинов, выбрав строку с этим плагином и набрав «i».

Это позволит загрузить и установить плагин, но не обновит файл ~/.vimrc (чтобы он автоматически загружался).

Итак, чтобы установить плагин MarkdownFootnotes, нужно переместить курсор к этой строке и нажать «i»:

"Keymap: i - Install plugin; c - Cleanup; s - Search; R - Reload list
"Search results for: markdown
Plugin 'instant-markdown.vim'
Plugin 'MarkdownFootnotes'  # move here and press "i"
Plugin 'Markdown'
Plugin 'Markdown-syntax'

Вы можете удалить буфер vundle после установки:

:bdelete

Затем отредактируйте ~/.vimrc:

:e ~/.vimrc

Добавьте строку с новым плагином:

set nocompatible
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Plugin 'gmarik/vundle'
Plugin 'scrooloose/nerdtree.git'
Plugin 'Buffergator'
Plugin 'MarkdownFootnotes'
filetype plugin indent on

Сохраните и закройте файл.

Управление установленными плагинами

Чтобы просмотреть список установленных плагинов, введите:

:PluginList
" My Plugins
Plugin 'gmarik/vundle'
Plugin 'scrooloose/nerdtree.git'
Plugin 'Buffergator'
Plugin 'MarkdownFootnotes'

Если вам нужно удалить плагин, это необходимо выполнить в два этапа.

Вы можете удалить файлы плагинов, выбрав их, а затем нажав клавишу «D», когда курсор находится на плагине, который вы хотите удалить. К примеру, чтобы удалить плагин «MarkdownFootnotes», нужно выбрать его и нажать «D»:

" My Plugins
Plugin 'gmarik/vundle'
Plugin 'scrooloose/nerdtree.git'
Plugin 'Buffergator'
Plugin 'MarkdownFootnotes'   # Press "D" when selected

На данный момент vundle все еще видит этот плагин в конфигурации, но файлы плагина уже не установлены. Вы можете снова установить файлы, набрав:

:PluginInstall

Сейчас мы этого делать не будем. Вместо этого мы удалим запись из файла ~/.vimrc:

:e ~/.vimrc
set nocompatible
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Plugin 'gmarik/vundle'
Plugin 'scrooloose/nerdtree.git'
Plugin 'Buffergator'
filetype plugin indent on

Это полностью удалит плагин из системы.

Более простой способ сделать это – сначала удалить его из файла ~/.vimrc.

После вы можете вызвать эту команду, которая автоматически удалит любые плагины, которые не находятся в файле .vimrc:

:PluginClean
" Removing Plugins:
Plugin 'MarkdownFootnotes'
. . .
Continue? [Y/n]:

Введите Y, чтобы подтвердить удаление файлов.

Заключение

Теперь вы можете легко управлять своими плагинами через интерфейс vundle. Преимущества наличия хорошего менеджера плагинов для vim неочевидны на первый взгляд, особенно если вы не используете много плагинов.

Однако одним из самых больших преимуществ, которые дает вам vundle, является возможность легко экспериментировать с большим количеством плагинов. Это позволяет лучше изучить различные плагины и быстрее интегрировать нужную функциональность.

Tags: , ,