Learn Vimscript The Hard Way - 47. Even More Advanced Syntax Highlighting
Even More Advanced Syntax Highlighting
syntax highlighting의 마지막 중요한 파트를 다룬 후 다른 것으로 넘어갈 것이다. 더 많은 것을 배우고 싶다면 :help syntax
를 참고하고 다른 사람들이 어떻게 syntax file을 만들었는지 참고하라
Highlighting Strings
Potion은 다른 많은 프로그래밍 언어들처럼 "Hello, world!"
와 같은 string literal을 지원한다. 우리는 이들을 하이라이팅 해우저야 한다. 이를 위해 syntax regino
명령어를 사용할 것이다.
syntax region potionString start=/\v"/ skip=/\v\\./ end=/\v"/
highlight link potionString String
factorial.pn
을 다시 열면 string이 하이라이트 된 것을 확인할 수 있다.
첫 줄은 "region"을 사용하여 syntax group을 만들었다. Region은 start 패턴과 end 패턴을 가지고 해당 syntax를 정의한다. 위 케이스에서 Potion string은 첫 번 째 따옴표에서 시작하여 다음 따옴표에서 끝난다.
syntax region
의 "skip" 인자는 string escape ("She said: \"Vimscript is tricky, but useful\"!"
와 같은)를 처리할 수 있게 해준다.
skip
인자를 사용하지 않으면 위 구문은 제대로 하이라이팅 되지 않을 것이다.
직접 위 텍스트를
.pn
파일에 추가해보면 하이라이팅 되는 것을 확인할 수 있다.
간략히 말해서 skip
인자는 vim에게 "해당 region에 매칭이 시작되면 skip
에 해당되는 모든 것들은 region에 포함되더라도 모두 스킵한다"라고 말해주는 역할을 한다.
이것에 대해서 얼마간 더 생각해보자. 만약 "foo \\" bar"
와 같은 경우라면 어떻게 될까? 그렇게 되는 것이 올바른 방식일까? 항상 정확한 방식이 존재하기는 할까? 책을 덮고 이것에 대해 몇 분간 더 생각해보자!
Exercises
- Add syntax highlighting for single quoted strings.
아래 줄만 추가해주면 된다.
syntax region potionString start=/\v'/ skip=/\v\\./ end=/\v'/
Read
:help syn-region
.Reading that should take longer than reading this chapter. Pour yourself a drink, you've earned it!