GNU-Linux

Vim 8의 native package support

동건 2018. 1. 21. 11:32

Pathogen, Vundle, Vim-plug, minpac, Dein.vim ...

위 이름들이 무엇을 의미하는지는 Vim 사용자라면 알 수 있을 것이다. 3rd-party Vim 플러그인 관리 도구는 꽤나 많아서 마치 리눅스 데스크탑 환경들(GNOME, KDE, Unity, Cinnamon, ...)을 보는 것 같다. 이런 도구 없이 Vim 플러그인을 설치한다면 많은 수작업이 요구되기 때문에 이를 자동화하는 것에 대한 필요성을 많은 사람들이 느꼈을 것이고, 그 와중에 vimscript의 대가들이 만들어낸 수 많은 역작들이 다양하게 존재하고 있다.


버전 8부터 Vim은 자체적인 패키지 관리 기능을 지원한다는 것을 뒤늦게 알았고, 마침 Ubuntu에서 Arch로 갈아탄 참이라 시도해 보기 딱 좋은 시점이었다 -- Debian은 패키지 업데이트를 매우 보수적으로 하기 때문에 Ubuntu에서는 아직도 Vim 7이 공식적으로 제공되고 있는 반면 (물론 개인 repository를 통해 Vim 8로 업데이트하는 것은 무척 쉽다), Arch Linux는 그 반대 편에 서서 최신 업데이트를 빠르게 제공한다. 그래서 Vim 8을 pacman을 통해 바로 설치할 수 있었다. 다른 배포판들은 안 사용해봐서 모르겠다.


이 글의 목적은 나보다 더욱 소식에 느린 분들에게 "Vim 8부터는 패키지 관리가 바로 된대요!" 라고 알려주고자 하는 것이다. 따라서 이 글은 여기까지만 써도 되나, 그래도 간단하게 Vim 8이 새롭게 선보이는 패키지 관리 규칙을 정리한다.


결론부터 말하자면 Pathogen이 추구하는 방식과 같다 (어떤 경로에 있는 git 프로젝트들을 runtimepath에 추가해주는 방식). git 프로젝트를 clone해서 정해진 경로에 갖다 붙여주기만 하면 되는 것이다. 물론 그 경로를 예전에는 Pathogen이 정해줬지만, 이제는 Vim 8님이 직접 정해주는 것이다. 경로만 연결해주는 것이기 때문에 업데이트는 사용자의 몫이라는 점도 따라온다.


폴더 구조만 맞춰주면 된다

  • 우선 .vim/pack 폴더를 만들어줘야 한다.
  • 그리고 그 다음 폴더는 플러그인 그룹을 위한 경로로, 이름은 본인이 마음대로 지어도 된다.
  • 그 그룹 폴더 위에 startopt를 생성해주면 된다.
    start 폴더에는 Vim이 실행되는 순간부터 적용되야 하는 패키지를 넣으면 되고,
    opt 폴더에는 :packadd 명령을 통해 그 때 그 때 불러오고 싶은 패키지를 넣어두면 된다.


정리하면 아래와 같다.

.vim/pack/<GROUPNAME>/start
.vim/pack/<GROUPNAME>/opt



내가 현재 적용시킨 예를 보여드린다. 아직 전반적인 환경 세팅하기 바빠서 Vim 플러그인은 필수적인 몇 개만 추가해 둔 상태이다.

$ tree -L 4 .vim
.vim
├── ftplugin
│   ├── c.vim
│   └── make.vim
└── pack
    └── don
        ├── opt
        └── start
            ├── ale
            ├── goyo.vim
            ├── nerdtree
            └── vim-surround
            └── vim-picker

ftplugin에는 그냥 내가 간단하게 필요한 기능을 직접 써 놓은 것이고, pack 폴더부터가 관련 내용이다. 이렇게 폴더 구조를 맞춰주고 사용하고자 하는 플러그인을 git clone해서 갖다 넣은 후, 기존에 사용하던 Pathogen을 완벽히 지웠다. 그리고 아무 문제 없이 플러그인이 잘 적용되었다! 따라서 troubleshooting에 관한 내용은 없음을 양해바란다.


여담. 터미널 이용이 DE (Desktop Environment)보다 훨씬 자유로운 Suckless 환경에서 새롭게 세팅을 하면서 Vim에 대한 기대가 낮아졌다. 텍스트 편집기는 텍스트 편집만 잘하면 된다. 덕분에 필요없어진 Vim 플러그인 목록이 조금 정리가 되었다 (예를 들면 fugitive, dispatch 등). 아직 색상 스킨이나 Python virtualenv 세팅에 대해서는 고민할 시간이 필요하다.



꼭 써야 하는가?

No, 취향 차이의 문제다. 내가 Pathogen 하나만 써보고 안착했기 때문에, 다른 플러그인 관리 도구에 대해 잘 모르긴 하지만, 내가 생각하기에 가장 널리 쓰이고 있는 Vim 플러그인 관리 도구는 3가지이다.

Pathogen vs. Vundle, Vim-plug

  • Pathogen은 Vim의 runtimepate를 특정 경로와 연결해주는 기능만 수행하기 때문에, 폴더 구조를 만들고 플러그인을 설치하고 업데이트하는 것은 순전히 사용자의 몫이다.
  • Vundle이나 Vim-plug는 여기에 더해서 플러그인 설치, 업데이트까지 책임져준다. .vimrc에 사용하고자 하는 플러그인들을 나열만 해두면 관리 도구가 설치해주고 업데이트를 체크해주는 것이다. Vim-plug는 async하게 플러그인 체크를 하기 때문에 굉장히 빠르다고 한다!


만약 당신이...

  • Pathogen 취향이라면 native support를 사용하지 않을 이유가 없다. 똑같은 일을 Pathogen 없이 할 수 있기 때문이다.
  • Vundle 또는 Vim-plug 취향이라면 자동 업데이트 체크 등의 부가적인 편의 기능을 포기할 지 가늠해봐야 할 일이다.

어찌됐든 취존합니다.



Good bye Pathogen.



참조 링크

vim help :help package
https://neovim.io/doc/user/repeat.html#packages

Stackoverflow
https://vi.stackexchange.com/questions/9522/what-is-the-vim8-package-feature-and-how-should-i-use-it

Reddit
https://www.reddit.com/r/vim/comments/6x64oh/vim_8_any_reason_to_use_the_buildin_package

반응형