VIM에서 강조 표시 및 기능 이름
-
09-09-2019 - |
문제
방금 최근에 모달 입력에 중독 된 후 TextMate에서 VIM 환경을 설정했습니다.
그러나 구문 하이라이트는 VIM에서 그렇게 아름답 지 않은 것 같습니다. C ++로 코드를 코딩하고 함수 호출 및 클래스 이름을 강조 표시 할 수 없으므로 코드를 읽기가 더 어렵습니다. 나는 색 구성표를 조금 동안 연주했지만 "클래스 이름"또는 "함수 이름"에 해당하는 필드를 찾을 수 없었습니다.
아래 그림에서 방법에 주목하십시오 DroughtLayer::
그리고 *.size()
MacVim의 오른쪽에 강조 표시되지 않습니다.
(원천: 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가있는 경우에만 사용) :
그리고 의무 스크린 샷 :
이것은 여기서 첫 번째 게시물이며, 에두아르도의 대답은 관찰하는 방법을 몰랐습니다.
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을 편집해야합니다. 그러나 맞춤화는 로드맵에 배치되었습니다.
아직 개발 중이지만 점점 더 주목을 받고 있습니다.
Sergey, 첫 번째 줄을 변경했습니다
syn match cCustomParen "(" contains=cParen,cCppParen
에게
syn match cCustomParen "(" contains=cParen contains=cCppParen
나를 위해 그것을 고치는 것 같습니다.
이 플러그인을 사용해보십시오 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
.