2012-12-27 2 views
3

내가 Direct3D를위한 구문 파일을 writting있어의 시작에 대괄호 일치 실패하고 난 속성에 문제가 : 여기빔 정규식 라인

[unroll] 
for(int i = 0...) 

는 "풀다"는 속성입니다. 정규식을 사용하여 대괄호 안에 키워드를 찾아 속성으로 식별합니다. 그것은 지금까지이 같은 개방 대괄호 전에 공백 (또는 탭)의 수를 중요하지 않습니다

[unroll] // does not work 
[unroll] // works 

: 여는 대괄호 앞에 공백이없는 경우를 제외하고 내가 작품을 사용하고 정규식 하나 이상.

syn match hlslAttribute /^\s*\[unroll\]/ 

같은 문제를 경우 사용 :

내가 사용하고 있습니다 (단 풀다에 맞게 간체) 정규식입니다

syn match hlslAttribute /.*\[unroll\]/ 

편집 : 코멘트에 명시된 바와 같이 : 그것은 파일에서 검색하는 동안 작동하지만 구문 강조 표시에 패턴을 일치시킬 때 작동하지 않습니다. http://pastebin.com/zr1bGLt0

당신의 위치로 hlsl.vim 파일 (페이스트 빈의 하나)을 복사해야합니다 .FX 또는 .hlsl 파일을 구문 hilighting을 사용하려면 :

파일을 강조 현재 구문에서 찾을 수 있습니다 어떤 빔 설치에 구문 파일

autocmd BufNewFile,BufRead *.fx,*.fxc,*.fxh,*.hlsl set ft=hlsl 

그런 다음 이전 인 파일을 생성하고 쓰기 (/ 구문 :는/usr/share/정력/vim73/문법 /)과의 .vimrc에 다음 행을 추가합니다 :

[unroll] 
[unroll] 

두 번째 줄은 모두 같은 색상이지만 첫 번째 줄은 그렇지 않습니다. 둘 다 두 번째 것과 같아야합니다.

+0

'/ \ s * \ [unroll]'은 공백 문자와 함께 또는 공백없이 작동합니다. – romainl

+0

그것은 나를 위해 파일을 검색하는 동안 작동하지만 구문 강조 표시를 위해 패턴을 일치시킬 때 작동하지 않습니다. : 나는 왜 그런지 모르겠다. –

+0

파일을 16 진수로 씁니다. 그런 속성과 개행 문자 뒤에 다른 문자가 있습니까? 귀하의 regexes 두 _ 모두 작동해야합니다, 이상합니다. – fge

답변

1

의견에서 알 수 있듯이 다른 원인 (다른 플러그인, Rainbow 괄호)으로 인해 다른 구문 그룹에 영향을주는 경우가 종종 있습니다. 이것이 같은 구문의 일부라면 중첩 계층 구조를 변경하여 문제를 해결할 수도 있지만 외부 플러그인을 사용하면 운이 좋지 않을 것입니다.

Vim은 강조 표시를위한 두 가지 메커니즘 인 (버퍼에 바인딩 된) :syntax과 윈도우에 바인딩 된 :match/matchadd()만을 제공합니다. 따라서 버퍼에 대한 사용자 지정 강조 표시를 원할 경우 :syntax을 사용하고 파일 형식의 구문에 방해가 될 위험이 있거나 matchadd()을 사용해야하며 복잡한 자동 작성을 사용해야 현재 버퍼에만 적용됩니다.

+0

@Ingo Karkat, 고맙다고 생각합니다. –