LINUX.ORG.RU

Опрос по менеджерам плагинов для Vim + демонстрация лучшего из них: vim-plug

 , ,


4

2

Сначала представляю вашему вниманию самый быстрый и удобный менеджер плагинов для Vim: vim-plug

Пользователи pathogen, vundle, neobundle, а также те, кто до сих пор не использовал менеджеры плагинов приглашаются к обсуждению: почему они до сих пор не перешли на vim-plug.

Идеология vim-plug: меньше, проще, но самое нужное. Главные отличия и преимущества в сравнение с другими менеджерами плагинов:

· Параллельная установка/обновление плагинов (к-во потоков настраивается).

· Возможность загрузки (отключения) плагинов по filetype и/или первой необходимости в том или ином плагине (сокращает время старта vim и разруливает конфликтующие плагины):

✓ Загрузить плагин vim-sexp если vim создает/открывает файл с filetype кложуры:

Plug 'guns/vim-sexp', { 'for': 'clojure' }
✓ Загрузить плагин NERDTree при первом вызове («открыть NERDTree»)
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
✓ Оба варианта сразу, загрузить плагин vader при filetype vader, но только при первом его вызове:
Plug 'junegunn/vader.vim',  { 'on': 'Vader', 'for': 'vader' }

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

Мне хватило первых пару минут использования, чтобы перейти на него с NeoBundle (а ранее с Vundle, еще ранее с pathogen).

Обсуждаем.

Выглядит интересно, может, дома попробую его.
Но, если честно, мне уже надоело менять эти плагины.
Сначала Pathogen, потом Vundle, теперь сижу на NeoBundle.

Ну и я не понимаю зачем все эти фичи реально нужны. Каждый из перечисленных плагинов я 1 раз настроил (в самом начале), а потом просто изредка добавляешь 1 строчку для нового плагина. И все. Т.е. с точки зрения пользователя разницы никакой. Ну, вместо :VundleInstall вызываешь :NeoBundleInstall

kovrik ★★★★★
()
Последнее исправление: kovrik (всего исправлений: 1)
Ответ на: комментарий от kovrik

В том-то и дело, что менять надоело мне тоже, прошел такой же путь: руки, патоген, вундла и неовундла, попробовав vim-plug, в котором есть только то, что нужно (включая то, чего нет в остальных, а именно продвинутая on-demand загрузка) - остановился на нем. Быстро, просто и удобно.

Да, neobundle умеет через корявый синтаксис загружать on-demand тоже, но в нем реально 95% фич не нужно, тяжело и без интерфейса (хотя на вандле же сделан) обновляет и т.д.

Кстати vim-plug умеет чистить bundle (в нем он называется plugged) от неиспользуемых плагинов, не помню, умееют ли такое остальные.

clojure
() автор топика
Ответ на: комментарий от clojure

Ну, дома попробую, спасибо за ссылку!

Вопрос: что сделает vim-plug, если во время обновления какого-нибудь плагина произойдет ошибка? Он остальные нормально отработает?

kovrik ★★★★★
()
Ответ на: комментарий от kovrik

Он остальные нормально отработает?

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

clojure
() автор топика
Ответ на: комментарий от clojure

Ну, выглядит вкусно.
Осталось настроить нормально vim под Clojure, найти нормальный REPL и можно будет свалить с LightTable.

kovrik ★★★★★
()
Ответ на: комментарий от kovrik

ого, спасибо! тоже настраиваю сейчас, пока ограничился этим:

Plug 'guns/vim-clojure-static'
Plug 'guns/vim-clojure-highlight'
Plug 'tpope/vim-fireplace',                        { 'for': 'clojure' }
Plug 'tpope/vim-leiningen',                        { 'for': 'clojure' }
Plug 'tpope/vim-projectionist',                    { 'for': 'clojure' }
Plug 'guns/vim-sexp',                              { 'for': 'clojure' }
Plug 'tpope/vim-sexp-mappings-for-regular-people', { 'for': 'clojure' }
а REPL настроил через tmux + tslime2:
Plug 'wellle/tmux-complete.vim'
Plug 'tpope/timl'
Plug 'sjl/tslime2.vim'

let g:tslime_ensure_trailing_newlines = 1

function! SendToTmuxStripped(text)
    call SendToTmux(substitute(a:text, '\v\n*$', '', ''))
endfunction

nnoremap <buffer> <silent> <localleader>t :ConnectToTmux<cr>
nnoremap <buffer> <silent> <localleader>] :let lisp_tslime_view = winsaveview()<cr>ggVG"ry:call SendToTmuxStripped(@r)<cr>:call winrestview(lisp_tslime_view)<cr>
vnoremap <buffer> <silent> <localleader>[ :SendSelectionToTmux<cr>

работает норм.

clojure
() автор топика
Ответ на: комментарий от clojure

О, спасибо. Вечером буду ковыряться. У тебя есть все конфиги в каком-нибудь гитхабе? Можешь кинуть ссылку?

По сабжу: из минусов vim-plug'а пока увидел зависимость от Ruby.

kovrik ★★★★★
()
Ответ на: комментарий от kovrik

конфиги

https://github.com/gyrfalco/dotfiles/blob/master/.vimrc

зависимость от Ruby.

я не задаюсь такими вопросами, у меня (Gentoo) вим скомпилирован с полным набором, только без racket (потому что глючит) и без debug, minimal и selinux.

няшка Руби-то в системе есть все-равно.

clojure
() автор топика

Парень, вот спасибо тебе за твои vim-темы\комментарии - кучу плющек узнал. Пойду посмотрю что за плагин.

najlus ★★★★★
()
Ответ на: комментарий от clojure

Кстати vim-plug умеет чистить bundle (в нем он называется plugged) от неиспользуемых плагинов, не помню, умееют ли такое остальные.

В смысле, удалять поддиректории из ~/.vim/bundle? В neobundle у меня не получилось.

Плагин интересный, как раз то, что нужно.

anonymous
()

Гы.

On-demand loading on filetypes (#21)
Junegunn Choi junegunn authored 8 hours ago

anonymous
()
Ответ на: комментарий от anonymous

set guioptions+=TLlRrbm
set guioptions-=TLlRrbm

Что за магия?

Спрятать весь интерфейс гвима, по другому - не работает. (хотя я гвимом и не пользуюсь, на всякий повесил).

clojure
() автор топика
Ответ на: комментарий от anonymous

В смысле, удалять поддиректории из ~/.vim/bundle?

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

clojure
() автор топика

О описанию интересно, но все же пока не вижу смысла переходить с vundle на vim-plug.

andreyu ★★★★★
()
Ответ на: комментарий от clojure

Кстати vim-plug умеет чистить bundle (в нем он называется plugged) от неиспользуемых плагинов, не помню, умееют ли такое остальные.

Vundle умеет чистить от ненужного.

andreyu ★★★★★
()
Ответ на: комментарий от clojure

Спрятать весь интерфейс гвима, по другому - не работает. (хотя я гвимом и не пользуюсь, на всякий повесил).

У меня так работает:

    set guioptions-=T
    set guioptions-=l
    set guioptions-=L
    set guioptions-=r
    set guioptions-=R
    set guioptions-=m
andreyu ★★★★★
()
Ответ на: комментарий от clojure

Вот так - работает:

set guioptions-=T
set guioptions-=m
set guioptions-=L
set guioptions-=l
set guioptions-=r
set guioptions-=R
set guioptions-=b
anonymous
()
Ответ на: комментарий от kulti

Меркуриал умеет?

Нет, subversion и другие VCS не умеет, жрет только гитом, но не обязательно с гитхаба, а также локально, но *.git.

Можешь назвать плагин, который хостится на mercurial? Я вот ни разу не встречал, интересно, хотя болен плагинами, особенно поиском новых.

В любом случае, если плагин не твой, то автор наверняка, если незападло, заливает копию на http://www.vim.org/scripts/ - а у него официальное зеркало на гитхабе: http://github.com/vim-scripts/ - так что нет проблем.

clojure
() автор топика
Ответ на: комментарий от andreyu

Прикольно, а для c/c++ он умеет?

Да, если пропишешь:

let g:niji_matching_filetypes = ['cpp']
а так заточен под лиспы, вобрал в себя все остальные rainbow_parenthsis от других авторов.

clojure
() автор топика
Ответ на: комментарий от clojure

Про зеркало не знал - спасибо.

Пример привести не могу - просто не нравиться мне эта тенденция.

kulti ★★
()

Использую vim-addons-manager (это тот, который в Debian, есть ещё и другой), всё устраивает.

Gotf ★★★
()

Пользователи pathogen, vundle, neobundle, а также те, кто до сих пор не использовал менеджеры плагинов приглашаются к обсуждению: почему они до сих пор не перешли на vim-plug.

Потому что pathogen полностью покрывает необходимый и достаточный минимум по работе с плагинами. Не удивлюсь если то, что он делает (пополняет 'runtimepath'), будет в итоге реализовано в самом vim, что в целом логично. UPD: И, кстати говоря, не уверен, что pathogen стоит называть «менеджером плагинов».

Параллельная установка/обновление плагинов (к-во потоков настраивается).

Установка в чистую происходит так редко, что это не имеет практического значения. Также установка из репозиториев не позволяет модифицировать плагины на месте, только делать отдельный репозиторий для них, что не всегда имеет смысл. И при обновлении хочется просмотреть, что поменялось, т.е. всё равно надо открывать каталог с плагином.

Возможность загрузки (отключения) плагинов по filetype и/или первой необходимости в том или ином плагине (сокращает время старта vim и разруливает конфликтующие плагины)

Уж лучше я каждый раз буду видеть последствия несовместимости плагинов чем изредка, но подолгу, буду гадать, а что же не так пошло в этот раз. Повторить ошибочное поведение может быть не так просто. Для сокрашения времени старта лучше больше перетаскивать в autoload и уж тем более не пихать много кода на левых языках (тут на Ruby) в плагин, так как он, похоже, парсится соответствующим интерпретатором при загрузке vim, значительно замедляя её.

xaizek ★★★★★
()
Последнее исправление: xaizek (всего исправлений: 1)
Ответ на: комментарий от xaizek

Потому что pathogen полностью покрывает необходимый и достаточный минимум по работе с плагинами

как в патогене временно отключить плагин или настроить работать только для определенного filetype?

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

форкаешь плагин, ставишь со своей репы, делаешь что угодно.

И при обновлении хочется просмотреть, что поменялось, т.е. всё равно надо открывать каталог с плагином.

я планирую, если не разберусь сам (плохо знаю VimL), попросить автора vim-plug запилить возможность получения diff'а новой версии плагина без его обновления, статус-то оно уже умеет, а вот диффы до обновления, возможно, были бы полезны.

парсится соответствующим интерпретатором при загрузке vim, значительно замедляя её.

77ms.

clojure
() автор топика
Ответ на: комментарий от clojure

как в патогене временно отключить плагин

  • поставить ~ в конце имени каталога
  • занести имя в g:pathogen_blacklist
  • занести имя в $VIMBLACKLIST

настроить работать только для определенного filetype?

Так за это сам плагин должен отвечать и реализовывать автокомандами, а также размещая файлы в ftplugin/.

форкаешь плагин, ставишь со своей репы, делаешь что угодно.

Это не всегда оправдано. Чего репозитории плодить для мелочей всяких.

я планирую, если не разберусь сам (плохо знаю VimL), попросить автора vim-plug запилить возможность получения diff'а новой версии плагина без его обновления, статус-то оно уже умеет, а вот диффы до обновления, возможно, были бы полезны.

Диффы это как-то слишком, кусок git log было бы корое и информативнее, как по мне.

77ms.

Если это время парсинга этого скрипта, то много. В противном случае нормально, хотя думаю (скорее, практически уверен), что можно улучшить.

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

Так за это сам плагин должен отвечать и реализовывать автокомандами, а также размещая файлы в ftplugin/.

В этом случае файлы плагинов виму всё равно приходится читать (что запуск не ускоряет).

anonymous
()
Ответ на: комментарий от clojure

а вот диффы до обновления, возможно, были бы полезны.

Удваиваю.

anonymous
()
Ответ на: комментарий от kovrik

По сабжу: из минусов vim-plug'а пока увидел зависимость от Ruby.

Если vim собран с +ruby, плагин его использует, если нет - использует, например, curl. У меня ruby нет, но всё работает.

anonymous
()

Попробовал вчера этот плагин - понравился. Работает шустро, удобно.
А вот нормально настроить vim под Clojure так и не получилось. Нужно разбираться.

kovrik ★★★★★
()
Ответ на: комментарий от anonymous

Если vim собран с +ruby, плагин его использует, если нет - использует, например, curl. У меня ruby нет, но всё работает.

да, но с руби у тебя параллельная установка/обновление, а с curl - только в очередь с***ны дети, в очередь.

clojure
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.