tools/vim

Learn Vimscript The Hard Way - 42. Plugin Layout in the Dark Ages

seul chan 2020. 4. 22. 22:44

Plugin Layout in the Dark Ages

가장 먼저 다룰 내용은 어떻게 플러그인 구조를 구성하느냐이다. 과거에는 상당히 난잡하게 되어있었지만 지금은 여러 툴이 생겨 훨씬 자연스럽게 설치 가능하다.

Basic Layout

Vanila vim은 플러그인을 여러 개의 파일로 나누는 것을 지원한다. ~/.vim 하위에 많은 디렉토리가 있을 것이다.

시작하기 전에 먼저 용어부터 정리해보자.

"plugin"이라는 단어를 "연관된 것들에 대한 많은 vimscript 덩어리"로 사용할 것이다. vim은 "plugin"에 대해 더 구체적으로 ~/.vim/plugin/에 있는 파일을 의미하는 용어로 사용한다.

많은 경우에는 첫 번 째 정의로 사용할 것이다.

~/.vim/colors

~/.vim/colors에 있는 파일들은 color schemes로 취급된다. 예를들면, :color mycolors를 실행시키면 ~/.vim/colors/mycolors.vim을 찾아 실행시킬 것이다.

이 책에서 따로 color schemes을 다루지는 않을 것이다. 만약 만들고 싶다면 기존에 있는 스키마를 찾아 수정할 수 있다.

~/.vim/plugin/

~/.vim/plugin/에 있는 파일은 매번 vim이 실행될 때 한 번 수행된다.

~/.vim/ftdetect/

~/.vim/ftdetect/에 있는 파일도 vim이 시작될 때 실행된다.

ftdetect는 "filetype detection"을 의미한다.

~/.vim/ftplugin

~/.vim/ftplugin/은 조금 다르다.

vim의 버퍼에 filetype이 설정되면 vim은 ~/.vim/ftplugin/ 폴더를 찾는다. 예를들면 set filetype=derp라는 명령어를 실행시키면 vim은 ~/.vim/ftplugin/derp/ 디렉토리를 찾고, 존재한다면 이를 실행시킨다.

vim은 ~/.vim/ftplugin/의 하위 디렉토리도 지원한다. 즉, ~/.vim/ftplugin/derp/에 존재하는 모든 *.vim 파일을 실행시킨다.

~/.vim/indent/

~/.vim/indent/에 있는 파일은 ftplugin과 비슷하다. 이들 또한 각각의 이름에 기반하여 로드된다.

indent 파일은 각각의 파일타입에 대해 indentaion과 관련된 옵션을 제공해야 한다.

이를 ftplugin에 넣어도 무방하지만 이를 나누어서 vim user들이 플러그인이 무엇을 하려고 하는지 아는 것이 중요하다.

~/.vim/compiler/.

~/.vim/compilter에 있는 파일은 inden와 동일하게 작동한다. 이름에 기반하여 compiler와 관련된 옵션을 추가한다.

~/.vim/after/

~/.vim/after/ 디렉토리는 상당히 애매하다. 이 디렉토리에 있는 파일들은 vim이 시작할 때 모두 로드되지만, ~/.vim/plugin/의 파일들이 로드된 이후애 로드된다.

이는 vim의 internal file들을 오버라이드 할 수 있게 해준다.

~/.vim/autoload/

~/.vim/autoload/ 디렉토리는 상당히 중요하다. 이는 보기보다 훨씬 복잡하다.

간단히 얘기하자면: autoload는 플러그인의 로드를 실제로 필요할 때 까지 연기시키는 역할을 한다. 책의 뒷편에서 플러그인을 리팩토링하면서 장점을 다룰 것이다.

~/.vim/doc/

마지막으로, ~/.vim/doc/ 디렉토리는 플러그인의 문서를 넣을 수 있는 디렉토리이다. vim은 문서에 크게 의존하기 때문에 (:help) 문서를 잘 쓰는 것은 매우 중요하다.

Exercises

  • Reread this chapter. I'm not kidding. Make sure you understand (in a very rough way) what each directory we've talked about does.

  • For extra credit, find some Vim plugins you use and look at how they structure their files.

Plug같은 플러그인을 사용중이라면 해당 플러그인 디렉토리 (~/.vim/plugged/) 하위의 플러그인 디렉토리를 들어가 보면 위 디렉토리들을 볼 수 있다.