vim 플러그인 관리자의 차이점은 무엇입니까?


197

나는 vim과 vim-plug 를 사용하기로 결정한 다른 패키지 관리자를 살펴 보았지만 병원체뭉치 와 같은 다른 것을 보았 으며 솔직히 그 차이점이 무엇인지 모른다.

누군가 나에게 차이점에 대한 간략한 개요를 제공하여 나에게 가장 적합한 것을 결정할 수 있습니까?


답변:


142

vim-plug 는 Vundle의 훌륭한 대안입니다. 기술적 인 관점과는 약간 다른 점이 더 빠릅니다 (이것 참조 ). Vundle의 기능 중 대부분 (또는 모두?)이 있습니다.

  • 의와 빔 병렬 업데이트 절차 +ruby, +python또는 Neovim. 사용할 수없는 경우 Vimscript를 사용하여 순차 모드로 돌아갑니다.
  • 빠른 시작을 위해 지연 로딩 (이것 참조 ).
  • 플러그인을 설치하십시오.
  • 플러그인 업데이트
  • 업데이트 검토 / 롤백
  • OSX, Linux 및 UNIX 시스템 및 MS Windows를 지원합니다.
  • 업데이트 후 후크 (예 : YCM 자동 재 컴파일)

사용을 시작하려면 :

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

그리고 당신의 vimrc에서 :

call plug#begin()
Plug 'tpope/vim-sensible'

" On-demand loading
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
call plug#end()

그런 다음 명령을 내리십시오

:PlugInstall

나열된 플러그인을 설치합니다.


1
추천 해 주셔서 감사합니다. 내로드 타임이 zippy를 좋아하기 때문에 로더에 저항했습니다. 내가 조사해야 할 명백한 것은 :PlugInstall새로운 플러그인 이었습니다 . 공식 문서조차도 이것을 조금 모호하게합니다.
msw

7
vim-plug를 좋아하는 동안, 그것은 당신이 놀라운 / 혼란스러운 github.com/junegunn/vim-plug/issues/379
laktak

Windows의 경우 vim에는 vim 8.1의 경우 vim81과 같은 vim 버전 번호 폴더가 있습니다. 폴더를 확인 말림 사용시 제 스텝 것은 ..\vim81\autoload\..아닌 ..\.vim\autoload\...
Stephen Jacob

56

병원체 는 간단합니다. 본질적으로 그것은 단지합니다 :

  • 폴더에서 플러그인 자동로드
  • 이 플러그인에 대한 도움말 태그 생성

장점 :

  • 미니멀리스트

단점 :

  • 수동으로 수행 된 모든 것 (설치, 업데이트, 제거 등)
  • 게으른 로딩 없음

설치하려면 다음 pathogen.vim을 수행하십시오 ~/.vim/autoload.

mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

그리고 당신 .vimrc에게 추가하십시오 :

call pathogen#infect()
call pathogen#helptags() "If you like to get crazy :)

미쳐 가고 싶지 않다면 :Helptags필요할 때만 전화하십시오 .

그런 다음 플러그인이에 추가됩니다 ~/vim/bundle.


20
분명히 병원체는 플러그인 관리자가 아닙니다. 런타임 패스를 관리하기 만하면됩니다. 그게 다야. ~ / .vim / bundle에 추가 한 모든 플러그인 (예 : 기본 위치,이를 변경할 수 있음)은 플러그인 파일을 vim의 런타임 경로에 추가하여 액세스 할 수 있도록합니다. 많은 플러그인이 설치되어 있지 않은 경우 수동 설치, 업데이트, 제거는 실제로 단점이 아닙니다. 또한 플러그인을 업데이트 할 때 변경 사항의 서브 세트 만 가져 오도록 선택할 수 있으며 최신 버전의 플러그인으로 업데이트하지 않아도되므로 많은 제어가 가능합니다.
akshay

1
@AkshayHegde 예, Vundle 답변을 작성하기 시작하면 돌아가서이 답변에서 "플러그인 관리자"를 편집해야했습니다. 단점에 대해 두 번째로, 그래서 나는 다른 것 대신 계속 사용합니다.
muru

1
vim-pandemic 은 병원체에 좋은 추가 기능입니다. 플러그인 뒤의 원격 저장소를 처리하고 Pathogen은 런타임 경로를 처리합니다. 즉, 두 가지 도구가 필요하지만 개별적으로 "처리해야하는"다른 작업에는 필요합니다. 내가 가장 설득력있는 것을 발견 한 Pathogen + Pandemic의 장점 : 번들을위한 자식 서브 모듈을 다룰 필요가 없습니다.
jalanb

2
플러그인 로더로 병원체를 사용합니다. 그러나 git 하위 모듈을 사용하여 개별 플러그인의 버전을 제어합니다. 따라서 미니멀리스트 접근법은 내 사용 사례에 잘 작동합니다. 다른 관리자가 버전 관리 및 플러그인 업데이트를 처리하는 방법
Martin York

2
@JaDogg 아, README 에서 온 것입니다 . "일반적으로, Vim은 각 디렉토리에서 문서와 함께 : helptags를 실행할 것을 기대합니다 (예 : : helptags ~ / .vim / doc). pathogen.vim과 함께 제공되는 : Helptags 명령 정말 미치게하려면 vimrc에서 Helptags를 호출 할 수도 있습니다. 미쳤 으면 좋겠습니다. " 플러그인이 많으면 시작 속도가 약간 느려질 수 있습니다. 그리고 플러그인을 설치 / 업그레이드 할 때마다 한 번 시작할 때마다 시작할 때마다 실행할 필요가 없습니다.
muru

43

Vundle 은 더 복잡합니다. La apt또는 yum플러그인 용 패키지 관리자 입니다. 그것은 할 수 있습니다 :

  • 플러그인 인덱스 검색
  • 플러그인 업데이트
  • 자동으로 도움말 태그 생성
  • 자동로드 폴더에 플러그인 유지
  • 사용하지 않는 플러그인 정리
  • Linux, OSX 및 MS Windows에서 작동

설치하기 위해서:

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

그런 다음에 추가하십시오 .vimrc.

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'

" more Plugin commands
" ...
call vundle#end()            " required
filetype plugin indent on    " required

플러그인을 설치하려면 다음 Plugin명령을 사용하십시오 .vimrc(Github README에 대한 추가 예제).

" plugin on Github
Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html
Plugin 'L9'

그런 다음 (또는 ) :PluginInstall에서 전화하십시오 ..vimvim +PluginInstall +qall


당신이 연결 한 NeoBundle README는 프로젝트가 github.com/Shougo/dein.vim
Jonathan Hartley

@JonathanHartley "어두운"전원 하나? 나는 그것이 오는 것을 보았을 것 같아요.
muru

13

dein.vim : 이 질문에 대한 후속 조치로 잘 알려진 Shougo가 만든 플러그인 관리자를 여기에 추가하겠습니다.

README에 따르면 플러그인은 다음과 같은 종속성이 있습니다.

  • Vim >7.4 or neovim: Vim을 최신 상태로 유지하는 것이 좋지만 일부 사용자에게는 이전 버전이 지원되지 않는 문제가있을 수 있습니다.
  • git: 패키지 관리자에게 일반적입니다
  • rsync: git만큼 일반적이지 않습니다

저자는 그것이 NeoBundle보다 빠르다고 주장합니다. 벤치 마크는 프로젝트의 readme 페이지에서 찾을 수 있습니다 .

이 플러그인 관리자의 원래 개념 중 하나는 명령을 제공하지 않고 기능 만 제공한다는 것입니다. 예를 들어, 플러그인을 업데이트하려면와 같은 것을 사용할 수 없습니다 :PlugUpdate: :call dein#update(). 솔직히 말해서이 디자인 선택에 대한 설명을 찾지 못했습니다.

또한 누군가 "이 누락 된"명령을 제공 하는 플러그인 을 만들었습니다 . 이것이 좋은 아이디어인지 또는 이것이 플러그인 관리자의 주요 아이디어와 반대인지는 알 수 없지만 저자는 doc 파일의 FAQ에서 언급합니다.

Dein.vim은 Github (vimscript.org에서 플러그인에 쉽게 액세스 할 수 있음) 및 로컬 디렉토리에서 플러그인 가져 오기를 지원합니다.

플러그인 관리자는 플러그인 업데이트 및 비활성화와 같은 몇 가지 클래식 기능을 제공합니다. 또한 설치시 후크를 실행할 수 있습니다.

FAQ에 따르면, 설치 한 플러그인 의 도움말 태그수동으로 빌드 해야합니다.

흥미로운 점은 저자가 dein.vim을 테스트하고 유지 관리하기 쉽도록 리포지토리에 일부 테스트 스크립트가 포함되기를 원한다는 것입니다.

마지막으로,이 플러그인 관리자는 가볍고 빠르도록 설계되었지만 흥미 롭지vim-plug 또는 Vundle 보다 사용자 친화적이지 않다고 생각합니다 .


또한 Shougo는 dein.vim을 "어두운 전원 Vim / Neovim 플러그인 관리자"라고 설명 합니다. 어떤 사람이 무슨 뜻인지 알면이 답변을 자유롭게 편집하십시오. 궁금합니다. ;-)


1
"Dark powered"은 Shougo의 vim 플러그인에서 NeoVim을 지원하거나 지원하는 문구입니다.
Yonsy Solis

8
"Dark Powered"라는 문구는 "Light Vim 사용자"(기본 기능 만 사용하는 사용자 및 "Dark Vim 사용자")에서 나온 것으로 생각합니다. IDE로 사용하거나 최소한 많은 플러그인을 사용하고 많은 사람들이 라인 (쇼고의 타테의 프레 젠 테이션 - 여기에 대해 더 자신의 vimrc 파일에 추가 slideshare.net/Shougo/lets-talk-about-neovim - 슬라이드 6)
lewiatan

1
@lewiatan : 감사합니다. 정답을 얻는 것 같습니다. (흥미로운 Shougo의 프레젠테이션 btw)
statox

1
@statox Shougo 상태 : "Dein.vim은 또한 함수 호출에 유리하게 명령 사용법을 분리하여 성능에 기여할 수도 있습니다 (그러나 확실하지는 않습니다)."
Alexej Magura

1
@statox, Lulz는 아마도 Shougo의 말이 아닐 것입니다.
Alexej Magura

13

Vim 8.0과 Neovim에는 자체 내장 된 패키지 관리자가 있습니다. Vim 8.0에서 다음 디렉토리를 작성하십시오. .vim/pack/*/start여기서, *사용하려는 이름이 있습니다. 예 .vim/pack/jimmy/start.

병원체를 사용하는 것처럼 플러그인을 시작 디렉토리에 복제하십시오.

Neovim을 사용하면 디렉토리가 조금 더 오래갑니다.

.local/share/nvim/site/pack/*/start. 거기에서 Vim과 동일합니다.

다른 플러그인 관리자가 전혀 필요하지 않습니다.

Vim 또는 Neovim에서 :h packages조금 더 자세하게 실행하십시오 . 색상은 다르지만 색상에 대한 부분을 읽으십시오. 귀하 .vimrc또는 귀하의 nvim/init.vim파일 에 추가 지침이 필요하지 않습니다 .

희망이 도움이됩니다.


8

특히 VAM 의 자체 배포 방식이 마음에 듭니다 . 필요한 것은 모두 .vimrcvim입니다.

따라서 To Install대부분의 다른 플러그인 관리자가 사용 하는 라인이 필요하지 않습니다 (플러그인 관리자 자체를 설치하는 첫 단계).


6

내가 아는 한, 의존성을 지원하는 데 사용하는 플러그인 관리자가 필요합니다.

그 이유는 여러 플러그인을 유지 관리하고 많은 상호 의존성이 있기 때문입니다. 일반 라이브러리는 모두 사용하고 템플릿 / 스 니펫 엔진은 C ++ 제품군에서 사용하며 리팩토링 플러그인은 ctags 라이브러리 플러그인도 사용합니다 , 등등. 최종 사용자가 최대 10 줄을 실행하여 관심있는 플러그인을 설치하도록 요구하는 것은 좋은 해결책으로 보이지 않습니다.

지금까지는 vim-addon-managerNeoBundle 의 두 가지 플러그인 만 알고 있습니다. VAM은 vim 공식 메일 링리스트에서 여러 번 교환 한 후 데이터베이스 코드를 vim-pi 로 포크했습니다 . 아이디어는 NeoBundle (및 종속성 관리에 관심이있는 다른 플러그인)이 결국 vim-pi를 이용할 수 있다는 것입니다.

나는 최근에 의존성을 처리하는 vim-flavor를 발견 했습니다. 주제에서 플러그인 버전을 확인하여 올바른 버전을 설치합니다.

참고 : 초기 답변 이후

  • NeoBundle 개발이 중단되었습니다.
  • vim-pi는 vim.org의 플러그인에서 데이터베이스를 정기적으로 업데이트하고 VAM을 사용하여 종속성을 표현할 수는 있지만 더 이상 vim-pi 데이터베이스에 별칭을 추가 할 수 없습니다. MR / PR은 더 이상 병합되지 않습니다

AFAIK, 백그라운드 / 병렬에 이러한 플러그인 복제 / 설치 / 업데이트 플러그인이 없습니다. 새로운 vim 환경을 설치하거나 한 달에 한 번 설치 한 플러그인을 업데이트하지 않기 때문에 솔직히 신경 쓰지 않습니다. 물론 업데이트 'helptags', 관리 등을 수행합니다 'rtp'.


vim-plugREADME에는 "그룹 종속성"이라는 예제가 있습니다. 그것을 시도 했습니까, 아니면 VAM / NeoBundle의 방법과 다른가요?
muru

vim-plug 문서에서 그룹 종속성을 놓쳤습니다. 그러나 코드베이스에서 종속성을 지원하려는 시도가 제거되었음을 알았습니다. 그룹 의존성에 관해서는 그것이 어떻게 도움이되는지 모르겠습니다. 최종 사용자가 종속성을 선언해서는 안됩니다. 플러그인 작성자가 선언해야합니다. lh-cpp 플러그인을 살펴보고 자세히 보면 종속성이 선형이 아니라는 것을 알 수 있습니다. 문제를 피하기 위해 비 주기적이어야하는 방향 그래프입니다.
Luc Hermitte

지금까지 10 년 이상 VAM을 사용해 왔으며 그 결과에 만족합니다. 그러나 나는 플러그인을 테스트하기 위해 트래비스에서 통합하는 것이 훨씬 간단하기 때문에 vim-flavor를 사용했습니다. 불행히도, 둘 다 다른 구문을 사용하여 종속성을 선언합니다.
Luc Hermitte

1
참고 : NeoBundle 개발이 중단되었습니다 (2016 년 2 월 23 일부터). 대신 동일한 작성자 의 후속 버전 인 Dein.vim을 권장 합니다.
Peter V. Mørch

3

이러한 플러그인 관리자는 대부분 플러그인 관리 작업을 훌륭하게 수행하지만 vimrc사용자 관리에 어려움을 겪습니다 . 여러 대의 컴퓨터가 있고 동일한 구성을 원하는 경우 Vire를 사용하면 매우 쉽습니다. 자식 모듈이나 자식 모듈을 알아낼 필요가 없으며 설정이나 마이그레이션을위한 추가 노력이 필요하지 않습니다.

  • 가장 현대적인 Vim 플러그인을 작성하고 필요로하는 Python 설치
  • pip install vire
  • 기존의 vimrcGithub에 요점을 게시 하고 유지하십시오.
  • Windows의 경우 vire -i최신 Vim 또는 (Neovim with -i -n) 을 설치하려면
  • 기존 플러그인 함수 호출을 제거하고 플러그인을 설치하기 위해 주석 처리 된 호출을 정의하십시오. " Plug 'tpope/vim-unimpaired'
  • vire gistID

그런 다음 플러그인을 업데이트하거나 앱을 업데이트 vire할 때마다 실행 하십시오 .vimrc-i

Vire는 Vim / Neovim의 pack기능을 활용 하여 플러그인을로드합니다. 기존 플러그인 관리자를 계속 사용할 수 있지만 Vire를 사용하여 원하는 경우 Vim vimrc, 및 플러그인 관리자 만 설치할 수 있습니다.


1

Pathogen을 사용하는 완전한 플러그인 관리자를 원하는 사람들을 위해 apt-vim도 있습니다. https://www.linuxsecrets.com/1715-vi-editor-tips-trick-and-secrets-into-the-vi-vim-editor-part-ii에curl -sL https://raw.githubusercontent.com/egalpin/apt-vim/master/install.sh | sh 설명 된대로 설치할 수 있습니다 . 일단 설치되면 Ubuntu apt 패키지 관리자와 비슷한 유형 의 패키지 리포지토리 이름 만 입력하면됩니다 .apt-vim install


1
이것은 본질적으로 링크 전용 답변입니다. apt-vim을 설치하고 사용하는 방법에 대해 좀 더 자세히 살펴보면 괜찮을 것입니다.
텀블러 41

업데이트했습니다. 실제로 나는 그것이 병원체에 관한 게시물에 대한 의견이어야한다고 생각했지만, 의견을 제시 할 충분한 의견이 없다
Melanie Day

1
플러그인에 링크가 없습니다. 또한 다시 제안하는 플러그인 curl URL |sh. 아무도 인터넷에서 임의의 코드를 실행하도록 제안하지 않습니다. 실제로 그것은 나쁜 보안 습관입니다.
Christian Brabandt

0

사용 방법을 찾고 pathogen있었지만 쉽게 업데이트하고 이식 가능하게 만들었으므로 bash스크립트가 도움이 될 수 있습니다 ( vim-plug기능 사용 ).

#!/bin/sh

# inspired by https://github.com/thoughtbot/dotfiles/blob/master/hooks/post-up

if [ ! -e "$HOME"/.vim/autoload/pathogen.vim ]; then
  curl -fLo "$HOME"/.vim/autoload/pathogen.vim --create-dirs \
      https://raw.githubusercontent.com/tpope/vim-pathogen/master/autoload/pathogen.vim
fi

if [ -e "$HOME"/.vim/autoload/plug.vim ]; then
  vim -E -s +PlugUpgrade +qa
else
  curl -fLo "$HOME"/.vim/autoload/plug.vim --create-dirs \
      https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
fi
vim -u "$HOME"/.vimrc.bundles +PlugUpdate +PlugClean! +qa

그리고 예 .vimrc.bundle-

"installed via the Githubs
call plug#begin('~/.vim/bundle')
Plug 'bling/vim-airline'
Plug 'scrooloose/syntastic'
Plug 'scrooloose/nerdtree'
Plug 'tpope/vim-fireplace'
Plug 'vim-scripts/paredit.vim'
" etc

call plug#end()

"disable vim-plug sugar-- actual config should be set via .vimrc
filetype plugin indent off 
syntax on

1
이것에 세부 사항을 추가 할 수 있습니까? OP가 제기하는 주요 질문은 "누군가 [패키지 관리자]의 차이점에 대해 간략하게 설명해 주시면 어느 것이 가장 적합한 지 결정할 수 있습니까?"입니다. 제출 한 내용이 어떻게 대답하는 데 도움이됩니까? 병원체에 구체적으로없는 것이 무엇입니까? 그런 종류의 것.
B 레이어
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.