문제

VIM에서는 간단한 작업을 수행해야합니다 - "("및 ")" ". 두 가지 명령을 발행하여 쉽게 할 수 있습니다.

:syn match really_unique_name display "[()]"
:hi really_unique_name guifg=#FF0000

그러나 같은 명령 ( ':'물론 '없이)을 비우고 .vimrc를 비우고 vim- "("and ")"를 다시 시작하면 .CPP 파일에서 더 이상 강조 표시되지 않습니다. .CPP 파일을 작성/로드하면 VIM이 내 정의 하이라이트를 무시하는 구문 파일을로드하는 것 같습니다. 표준 구문 정의 후에 발생하거나 표준 구문 정의의 영향을받지 않도록 .VIMRC 파일에서 하이라이트를 구성하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

네 가지 옵션이 있습니다 (그 중 두 가지 옵션은 다른 옵션이 제안했습니다).

  1. 사용 after vimfiles의 구조 (~/.vim/이후/syntax/cpp.vim) :

    :help after-directory
    
  2. 현재 창에 일치하는 사용 :

    :match really_unique_name "[()]"
    
  3. 현재 창에 다시 MatchAdd ()를 사용하지만 나중에 필요한 경우 개별 일치를 삭제할 수 있습니다.

    :call matchadd('really_unique_name', "[()]")
    " Or
    :let MyMatchID = matchadd('really_unique_name', "[()]")
    " and then if you want to switch it off
    :call matchdelete(MyMatchID)
    
  4. DR 칩을 설치하십시오 레인보우 들여 쓰기 수준에 따라 다른 색상으로 버팀대 강조 표시를위한 플러그인.

이 상황에서는 일반 구문의 일부로 만들고 싶은 것처럼 옵션 1을 추천합니다. 매치를 사용하려고하고 버퍼 특정 (창 특정 대신)에 특정한 버퍼를 원한다면 다음과 같은 것이 필요합니다.

function! CreateBracketMatcher()
    call clearmatches()
    call matchadd('really_unique_name', "[()]")
endfunc
au BufEnter <buffer> call CreateBracketMatcher()

자세한 내용은 다음을 참조하십시오.

:help after-directory
:help :match
:help matchadd()
:help matchdelete()
:help clearmatches()
:help function!
:help autocmd
:help autocmd-buffer-local
:help BufEnter

당신은 또한 내 대답에 관심이있을 수 있습니다 이 질문, 더 일반적인 연산자 강조점을 다루는 것.

다른 팁

설정을 ~/.vim/after/syntax/cpp.vim에 넣습니다.

Syn Match를 사용하는 대신 매치를 사용하십시오. 예 :

hi really_unique_name guifg=#FF0000
match really_unique_name "[()]"

match Syn-Match보다 우선 순위가 높습니다 (즉, 강조 표시는 Syn-Match에 의해 생성 된 강조 표시를 무시할 수 있으며 (잘 행동 한) 구문 파일은 엉망이되어서는 안됩니다.

일치하는 경고는 반드시 부러가 아닌 창 당이라는 것입니다.

추가 일치가 필요한 경우 2Match 및 3Match를 사용할 수 있습니다.

보다 :help :match 자세한 내용은 VIM에서.

나는 보통 이렇게한다 :

:hi really_unique_name guifg=#FF0000
:au BufNewFile,BufRead * :syn match really_unique_name display "[()]"

au 의지합니다 autocmd. 도움이 더 많은 것을 말할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top