tools/vim

Learn Vimscript The Hard Way - 56. What Now?

seul chan 2020. 5. 12. 21:41

What Now?

여기까지 모든 예시와 exercise를 풀었다면 이제 꽤 기본적인 vimscript를 알게 되었을 것이다. 아직 배울 게 많으니 걱정하지 마라 (?)

더 공부하고 싶은 사람들을 위한 몇몇 토픽을 소개한다.

Color Schemes

이 책의 앞 장에서 우리는 Potion 파일에 대한 syntax highlighting을 추가하였다. syntax highlighting의 짝은 각 syntax가 어떤 색깔이 될 것인지에 대한 custom color scheme을 만드는 것이다.

vim의 color scheme 꽤 직관적이고, 약간은 반복적이다. :help highlight를 읽어보자. 몇몇 built-in coloer scheme을 보고 구조가 어떤지 확인할 수 있을 것이다.

도전할 것을 찾고 싶다면 나(저자)의 Bad wolf color scheme을 보고 어떻게 vimscript를 사용하였는지 확인해보자. "palette" 딕셔너리와 HL 함수, 그리고 동적으로 highlight 명령어를 빌드한 것들을 주요깊게 확인해 보자.

The Command Command

많은 플러그인들은 키 매핑과 함수 호출을 통해 사용자가 인터렉트하게 플러그인을 사용할 수 있게 하지만, 몇몇은 대신 Ex 커맨드를 만드는 것을 선호하기도 한다. 예를 들면, Fugitive 플러그인은 :Gdiff:Gbrowse 등의 명령어를 만들고 이를 어떻게 호출할지는 사용자의 선택에 맡겼다.

이런 명령어들은 :command 명령어로 만든다. :helm user-commands를 읽고 어떻게 만드는지 알아보자. 당신은 vim 문서를 읽고 새로운 명령어를 배울 정도의 충분한 vimscript를 알고 있다.

runtimepath

이 책에서는 vim이 어떤 파일을 로드하는지에 대해서 겉핥기 식으로만 다루고 "pathogen을 사용하라"고만 얘기했다. 이제 :help runtimepath를 읽을만한 수준의 vimscript를 알아으므로 Pathogen의 소스코드를 보고 어떻게 동작하는지 확인해보자.

Omnicomplete

vim은 다양한 형태로 complete text를 지원한다. (:help ins-completion을 읽어보자) 대부분은 간단하지만 "onmicomplete"는 자동 완성을 결정하는 custom vimscript를 호출할 수 있게 해 주는 강력한 기능이다.

onmicompletion에 뛰어들 준비가 되었다면 :help omnifunc:help compl-omni를 읽어보자.

Complier Suppoer

우리의 포션 플러그인에서 Potion 파일을 컴파일하고 실행해주는 매핑을 만들었다. vim은 컴파일 에러를 파싱하고, 각 에러를 이동할 수 있게 해주는 등의 다양한 기능을 제공하는 컴파일러 인터랙션을 지원한다.

만약 관심이 있다면 :help quickfix.txt가 좋은 시작점이 될 것이다.

Other Languages

이 책은 Vimscript에 집중되어있지만 vim은 Python, Ruby나 Lua 등과 같은 다양한 다른 언어의 인터페이스도 제공한다. 이는 vimscript가 싫다면 다른 언어로 스크립트를 작성할 수 있다는 뜻이다.

여전히 vimscript는 당신이 ~/.vimrc를 수정할 때 유용하게 쓰일 것이고, 다양한 언어를 제공하는 vim API를 이해하는데 도움이 될 것이다. 하지만 다른 언어를 사용하는 것은 vimscript의 불쾌한 것들에서 탈출하는 좋은 방안이 될 수 있다.

만약 다른 언어로 vim에서 script를 작성하는 방법을 알고 싶다면 다음 문서들을 확인하라.

  • :help Python
  • :help Ruby
  • :help Lua
  • :help perl-using
  • :help MzScheme

Vim's Documentation

마지막 노트로, 특히 유용하고 정보가 풍부하며 흥미롭거나 그냥 재미있는 vim의 여러가지 토픽을 소개한다.

  • :help various-motions
  • :help sign-support
  • :help virtualedit
  • :help map-alt-keys
  • :help error-messages
  • :help development
  • :help tips
  • :help 24.8
  • :help 24.9
  • :help usr_12.txt
  • :help usr_26.txt
  • :help usr_32.txt
  • :help usr_42.txt

Exercises

  • Go write a Vim plugin for something you've always wanted and share it with the world!