문제

방금 최근에 모달 입력에 중독 된 후 TextMate에서 VIM 환경을 설정했습니다.

그러나 구문 하이라이트는 VIM에서 그렇게 아름답 지 않은 것 같습니다. C ++로 코드를 코딩하고 함수 호출 및 클래스 이름을 강조 표시 할 수 없으므로 코드를 읽기가 더 어렵습니다. 나는 색 구성표를 조금 동안 연주했지만 "클래스 이름"또는 "함수 이름"에 해당하는 필드를 찾을 수 없었습니다.

아래 그림에서 방법에 주목하십시오 DroughtLayer:: 그리고 *.size() MacVim의 오른쪽에 강조 표시되지 않습니다.

Picture comparison between Textmate(left) and Vim(right)
(원천: ivzhao.com)

이것을 해결하는 방법이 있습니까? 내가 시각적으로 민감한 사람이기 때문에 정말 짜증이납니다.

도움이 되었습니까?

해결책

흥미롭게도 VIM의 구문 형광펜은 식별자 또는 기능 이름에 구문을 적용하는 것을 지원하지 않습니다. 따라서, 당신이 그렇게하더라도 :

:hi Function guifg=red

또는

:hi Identifier guifg=red

이 색상을주지 않습니다. 나는 단지 이러한 언어의 키워드와 상수 이상이 아닌 것 같습니다.

여기서 누군가 CPP 구문 파일을 메소드 이름을 지원하기 위해 확장하기 시작했습니다. 그것은 내가 추측하는 시작이다.http://vim.wikia.com/wiki/highlighting_of_method_names_in_the_definition

다른 팁

VIM을 사용하기 시작했을 때이 똑같은 문제가있었습니다. 솔루션은 간단합니다. VIM에서 사용하는 C 구문 파일을 편집하면됩니다. 다음 방법은 다음과 같습니다.

C 또는 C ++ 파일 편집을 시작하면 vim은

$VIMRUNTIME/syntax/c.vim

($ vimruntime이 VIM을 설치 한 곳인 경우. VIM을 열고 명령을 사용하여 기본값을 찾을 수 있습니다.

이 파일을 덮어 쓸 수 있거나이 위치에서 사용자 정의 C 구문 파일 (기본값 대신 VIM으로로드 됨)을 만들 수 있습니다.

$HOME/.vim/syntax/c.vim      (for UNIX)
$HOME/vimfiles/syntax/c.vim  (for PC or OS/2)

(나는 Mac을 사용한 적이 없어서 당신을 위해 일할 수있는 Dunno입니다. VIM 도움말에서 더 많은 것을 찾을 수 있습니다. ": Help Vimfiles")

이제 재미있는 부분. 기본 "$ vimruntime/syntax/c.vim"파일을 Vimfiles 디렉토리 ( "$ home/.vim/syntax/c.vim")에 복사 하고이 줄을 추가하여 편집하십시오.

" Highlight Class and Function names
syn match    cCustomParen    "(" contains=cParen,cCppParen
syn match    cCustomFunc     "\w\+\s*(" contains=cCustomParen
syn match    cCustomScope    "::"
syn match    cCustomClass    "\w\+\s*::" contains=cCustomScope

hi def link cCustomFunc  Function
hi def link cCustomClass Function

그게 다야! 이제 함수와 클래스 이름은 "function"하이라이트에 정의 된 색상으로 강조 표시됩니다 ( ": hi function"). 색상을 사용자 정의하려면 위의 마지막 두 줄을 다음과 같은 것으로 변경할 수 있습니다.

hi def cCustomFunc  gui=bold guifg=yellowgreen
hi def cCustomClass gui=reverse guifg=#00FF00

또는 C 구문 파일을 단독으로 남겨두고 VIMRC 파일에서 색상을 정의 할 수 있습니다 ( ": HELP VIMRC") :

hi cCustomFunc  gui=bold guifg=yellowgreen
hi cCustomClass gui=reverse guifg=#00FF00

(자세한 내용은 "DEF"키워드가 없음을 참고하십시오. ": hi"명령을 참조하십시오. ": help : Highlight"에 사용 가능한 매개 변수의 경우.

이 링크에서 VIM 7.2의 전체 C.VIM 파일을 찾을 수 있습니다 (참고 : 수정되지 않은 VIM 버전 7.2가있는 경우에만 사용) :

http://pastebin.com/f33aeab77

그리고 의무 스크린 샷 :

enter image description here

이것은 여기서 첫 번째 게시물이며, 에두아르도의 대답은 관찰하는 방법을 몰랐습니다.

syn match    cCustomParen    "?=(" contains=cParen,cCppParen
syn match    cCustomFunc     "\w\+\s*(\@=" contains=cCustomParen
syn match    cCustomScope    "::"
syn match    cCustomClass    "\w\+\s*::" contains=cCustomScope
hi def cCustomFunc  gui=bold guifg=yellowgreen
hi def link cCustomClass Function

한 가지 솔루션은 빌드 된 CTAGS 데이터베이스를 사용하는 것입니다. 따라서 하나를 만듭니다 ctags 공익사업. 그런 다음 '태그'변수를 설정하고 다음을

~/.vim/after/syntax/c.vim

function! s:highlight()
    let list = taglist('.*')

    for item in list
        let kind = item.kind

        if kind == 'f' || kind == 'c'
            let name = item.name
            exec 'syntax keyword Identifier '.name
        endif
    endfor
endfunction

call s:highlight()

나는 이것이 매우 큰 CTAGS 데이터베이스에서 매우 느리게 작동 할 수 있다고 경고해야합니다.

또한 있습니다 하나의 해결책 vim.org에서는 이것을 시도하지 않았습니다. 그것이 당신에게 효과가 있는지 알려주세요.

편집 : Color_Coded는 너무 무거울 수 있습니다. 노력하다 Octol/VIM-CPP- 강화-높은 조명. C ++ 11/14를 지원하고 @eduardo가 대답 한 내용을 통합합니다.

시맨틱 기반 형광펜 :
추천합니다 jeaeye/color_coded, libclang 기반 강조 표시를위한 VIM 플러그인
STACKOVERFLOW를 처음 접한 것은 죄송합니다. 이는 이미지를 게시 할 수있는 명성이 충분하지 않습니다. 당신이 그것을주고 싶다면 그 효과를 보러 가십시오. :)

장점 :

  • 쉬운 설치
  • 시맨틱 하이라이트
  • 위와 같이 언급 된 클라이더는 VIM을 편집해야합니다 python2.7. 그러나 Color_Coded는 C ++로 작성되었으며 LUA 바인딩 -> C ++를 제공합니다.

단점 :

  • VIM 이벤트를 만들지 않으면 지연됩니다.
  • 사용자 정의는 조금 더 어렵습니다. 구문/color_coded.vim을 편집해야합니다. 그러나 맞춤화는 로드맵에 배치되었습니다.

아직 개발 중이지만 점점 더 주목을 받고 있습니다.

before after

Sergey, 첫 번째 줄을 변경했습니다

syn match    cCustomParen    "(" contains=cParen,cCppParen

에게

syn match    cCustomParen    "(" contains=cParen contains=cCppParen

나를 위해 그것을 고치는 것 같습니다.

Vim Like에 플러그인을 사용하십시오 태그리스트 또는 설정 ctags 또는 cscope VIM과의 통합 (여기에 있습니다 VIM/CSCOPE를위한 튜토리얼.)

이 플러그인을 사용해보십시오 http://www.vim.org/scripts/script.php?script_id=2646그것은 당신을 위해 매우 효율적으로 강조하는 모든 CTAG를 수행합니다

정말 추천합니다 taghighlight 플러그인, 클릭 여기 웹 사이트를 위해.

그만큼 Clighter 플러그인도 고려할 수 있습니다

plugin for c-family semantic source code highlighting, based on Clang

그러나 상당히 최근 버전과 소프트웨어가 필요합니다. vim 7.4.330 +python2 그리고 libclang.

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