Learn Vimscript The Hard Way - 44. Detecting Filetypes
Detecting Filetypes
이제 우리의 플러그인에서 사용할 간단한 Potion 파일을 만들자. factorial.pn
파일을 만들어서 다음 코드를 추가하라
factorial = (n):
total = 1
n to 1 (i):
total *= i.
total.
10 times (i):
i string print
'! is: ' print
factorial (i) string print
"\n" print.
이는 간단한 factorial 함수를 보여준다. potion factorial.pn
을 실행시키면 다음 결과가 반환된다.
0! is: 0
1! is: 1
2! is: 2
3! is: 6
4! is: 24
5! is: 120
6! is: 720
7! is: 5040
8! is: 40320
9! is: 362880
잠시 시간을 가지고 위 코드가 어떻게 동작하는지 확인해보자. Potion docs를 참고해보자. 이는 vimscript를 이해하는데에는 중요하지 않지만 더 나은 프로그래머가 되게 해 줄 것이다. (저자가 Potion을 참 좋아하나보다)
Detecting Potion Files
vim에서 factorial.pn
파일을 열고 다음 명령어를 실행시켜보자.
:set filetype?
filetype=
.pn
파일이 무엇인지 모르기 때문에 filetype=
이라는 결과가 나올 것이다. 이를 고쳐보자.
전 장에서 만든 플러그인 레파지토리 안에 ftdetect/potion.vim
을 추가해보자.
au BufNewFile,BufRead *.pn set filetype=potion
이는 간단한 autocommand를 만들어준다: .pn
확장자를 가진 파일에 potion
파일타입을 주는것이다.
평소에 하던 것처럼 autocommand group을 만들지 않은 것에 주목하라. vim은 자동으로 ftdetect/*.vim
파일을 래핑하여 그룹으로 만들어 주기 때문에 걱정할 필요 없다.
factorial.pn
을 닫고 다시 열어보자. 이제 filetype 이 potion이 나오는 것을 볼 수 있다.
:set filetype?
filetype=potion
vim이 실행될 때 ~/.vim/bundle/potion/ftdetect/potion.vim
를 로드하여 factorial.pn
을 열었을 때 자동으로 filetype
을 potion
으로 세팅해 준 것이다.
만약 이렇게 나오지 않으면
pathogen
이 제대로 설치되지 않았을 수 있다. 요새는vundle
이나plug
를 쓰기 때문에pathogen
이 없을 수 있으니 설치해주자. 다음 두 줄이면 설치가 가능하다.
mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
plug에서 하려면
~/.vim/plugged/potion/
을 추가하고,~/.vimrc
파일에Plug '~/.vim/plugged/potion'
를 추가해주면 된다.call plug#begin('~/.vim/plugged')
와call plug#end()
사이에 추가하여야 한다.
Exercices
Read
:help ft
. Don't worry if you don't understand everything there.Read
:help setfiletype
.Modify the Potion plugin's
ftdetect/potion.vim
script to use setfiletype instead of set filetype.
au BufNewFile,BufRead *.pn setfiletype potion