구문 강조가 간단하게 작동하는 방법 :
에서 syntax/<filetype>.vim
구문 규칙은 정의됩니다 :syntax
명령. 이 명령은 구문을 정의합니다. "텍스트가이 정규식과 일치하면 문자열입니다"등이 표시됩니다. 이를 위해 강조 그룹을 할당합니다 . 색상에 대해서는 아무 말도 하지 않습니다 .
:highlight
"이 색상으로이 그룹을 강조 표시합니다."라고 말합니다. 이것은 구문 파일이 아닌 색 구성표 로 수행 됩니다. 기본 하이라이트 그룹의 무리가있다 ( String
, Function
, Special
, 등) 모든 색 구성표를 정의해야한다.
그러나 이러한 기본 그룹으로 제한되지 않으며 원하는 수의 그룹을 만들 수 있지만 기본 구문 파일은 그렇지 않습니다.
indent/<filetype>.vim
파일은 자동 들여 쓰기를 제어합니다. 예를 들어 Ruby의 경우 "다음 줄 def
은 들여 쓰기 수준을 높여야합니다"와 "다음 줄 end
은 들여 쓰기를 한 수준 낮추어야합니다"라고되어 있습니다. 색상이나 구문 강조 기능을 사용하지 않습니다.
다른 프로그래밍 언어가 다르게 강조되는 이유는 무엇입니까? 개인의 미학과 그것을 쓴 사람의 의견 때문입니다. 예를 들어 Ruby에서는 Type
강조 그룹이 클래스 이름으로 사용됩니다. 그러나 그것은 또한 Function
다른 것일 수 있습니다 . 왜 그렇 Type
습니까? 아마도 저자가 자신의 색 구성표가 더 좋아 보인다고 생각했기 때문일 것입니다.
그러나 더 중요한 것은 언어의 의미와 민감성이 다릅니다. 루비에서는 self
특별한 키워드입니다. 당신은 할 수없는 self = "foo"
나 def self()
. 이들은 오류입니다. 그러나 이것은 파이썬의 경우 가 아닙니다 . 특별한 속성이없는 또 다른 변수 일뿐입니다. 하기:
x = Object()
x.foo()
파이썬에 의해 실제로 "번역"됩니다 :
Object.foo(x)
이름 self
은 관습에 불과하지만 (거의 보편적으로 채택 됨) 원하는 이름을 지정할 수 있습니다. def x(this):
또는 def x(xxx):
똑같이 유효합니다. 원하는 self
곳 어디에서나 이름을 사용할 수 있습니다 . self = 'foo'
그리고 def self():
완벽하게 정상적으로입니다.
나는 self
특별한 키워드도 아니고 사전 정의 된 변수 (예 :) 가 아니므로 강조 표시해서는 안된다고 주장합니다 str
. self
구문 파일에 단어의 흔적이 없으므로 작성자가 동일한 추론을 한 것처럼 보입니다.
당신이 원하는 경우에 self
강조 당신은 그것을위한 구문 규칙을 만들어야합니다 :
:syn keyword pythonBuiltin self
pythonBuiltin
그룹 이름이 이미 기본 구문 파일에 정의와 연결되어 Function
하이라이트 그룹. 새로운 하이라이트 그룹을 사용하려면 다음과 같이 사용하십시오.
:syn keyword pythonSelf self
:highlight def link pythonSelf Special
이러한 변경을 위해 vimrc 파일에 'em'을 넣을 수는 없습니다. 구문 파일이이를 무시합니다. 대신 구문 파일이로드 된 후 다음 두 가지 방법으로 실행할 수 있습니다.
FileType
autocmd를 사용하십시오 .
augroup python
autocmd!
autocmd FileType python
\ syn keyword pythonSelf self
\ | highlight def link pythonSelf Special
augroup end
를 사용 after-directory
, ~/.vim/after/syntax/python.vim
:
syn keyword pythonSelf self
highlight def link pythonSelf Special
두 방법은 사실상 동일합니다. 원하는 것을 사용하십시오.