Vim에서 강조 표시된 클래스 및 함수 이름
최근에 Textmate에서 모달 입력에 중독 된 후 Vim 환경을 설정했습니다.
그러나 구문 강조는 Vim에서 그렇게 아름답 지 않은 것 같습니다. 저는 C ++로 코딩하고 함수 호출과 클래스 이름을 강조 표시 할 수 없기 때문에 코드를 읽기가 더 어렵습니다. 색 구성표를 약간 가지고 놀았지만 "클래스 이름"또는 "함수 이름"에 해당하는 필드를 찾을 수 없었습니다.
아래 그림 에서 MacVim의 오른쪽에 DroughtLayer::
및 *.size()
이 강조 표시되지 않은 것을 확인하십시오.
(출처 : ivzhao.com )
이것을 해결하는 방법에 대한 아이디어가 있습니까? 나는 시각적으로 민감한 사람이기 때문에 정말 짜증납니다.
흥미롭게도 VIM의 구문 하이 라이터는 식별자 또는 함수 이름에 구문을 적용하는 것을 지원하지 않습니다. 적어도 C 및 C ++의 구문 하이 라이터는 아닙니다. 따라서 다음과 같은 경우에도 :
: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은 다음 위치에있는 기본 c 구문 파일을 읽습니다.
$VIMRUNTIME/syntax/c.vim
($ VIMRUNTIME은 vim이 설치된 곳입니다. vim을 열고 ": echo $ VIMRUNTIME"명령을 사용하여 기본값을 확인할 수 있습니다.)
해당 파일을 덮어 쓰거나 기본 C 구문 파일 (기본 파일 대신 vim에 의해로드 됨)을 다음 위치에 만들 수 있습니다.
$HOME/.vim/syntax/c.vim (for UNIX)
$HOME/vimfiles/syntax/c.vim (for PC or OS/2)
(저는 Mac을 사용한 적이 없으므로 어느 것이 당신에게 적합한 지 모르겠습니다. 자세한 내용은 vim 도움말 ": help vimfiles"에서 확인할 수 있습니다.)
이제 재미있는 부분입니다. 기본 "$ VIMRUNTIME / syntax / c.vim"파일을 vimfiles 디렉토리 (UNIX의 경우 "$ 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"키워드가 없다는 점에 유의하십시오. 자세한 내용은 ": help highlight-default"로 이동하십시오). ": hi"명령에 사용 가능한 매개 변수는 ": help : highlight"를 참조하십시오.
이 링크에서 Vim 7.2 용 전체 c.vim 파일을 찾을 수 있습니다 (참고 : 수정되지 않은 Vim, 버전 7.2가있는 경우에만 사용).
그리고 필수 스크린 샷 :
이것은 내 첫 번째 게시물이며 관찰하는 방법을 몰랐습니다. Eduardo의 답변은 "("및 "{"가 풀린 것처럼 보이고 구문 버그가 접 히게 만듭니다.이 문제를 해결하기 위해 약간 변경했습니다.
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 유틸리티로 하나를 만드십시오 . 그런 다음 'tags'변수를 설정하고 다음을
~/.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-enhanced-highlight 사용해보십시오 . C ++ 11 / 14를 지원하고 @Eduardo가 대답하는 것을 통합합니다.
시맨틱 기반 하이 라이터 : libclang 기반 하이라이트를위한 vim 플러그인 인 jeaye / color_coded를
추천 합니다. 이미지를 게시하기에 충분한 평판이 없다는 것을 의미하는 stackoverflow 를 처음 접하게되어 죄송합니다. 시도해보고 싶다면 그 효과를 확인하십시오. :)
장점 :
- 쉬운 설치
- 의미 론적 강조
- 위에서 언급 한 Clighter는
python2.7
. 그러나 color_coded는 C ++로 작성되었으며 lua 바인딩-> C ++를 제공합니다.
단점 :
- vim 이벤트를 만들어 활성화하지 않으면 지연됩니다.
- 사용자 지정은 조금 더 어렵습니다. syntax / color_coded.vim을 직접 편집해야합니다. 그러나 사용자 정의는 로드맵에 배치되었습니다.
아직 개발 중이지만 점점 주목을 받고 있습니다.
Sergey, 첫 번째 줄 변경
syn match cCustomParen "(" contains=cParen,cCppParen
...에
syn match cCustomParen "(" contains=cParen contains=cCppParen
나를 위해 그것을 고치는 것 같습니다.
Taglist 와 같은 vim 용 플러그인을 사용 하거나 vim 설정 ctags
또는 cscope
통합 ( 여기 에 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
.
참고 URL : https://stackoverflow.com/questions/736701/class-function-names-highlighting-in-vim
'Nice programing' 카테고리의 다른 글
Chrome Fullscreen API (0) | 2020.11.06 |
---|---|
Xcode6에서 장치 콘솔을 얻는 방법은 무엇입니까? (0) | 2020.11.06 |
indexPath로 uitableViewCell을 어떻게 얻을 수 있습니까? (0) | 2020.11.06 |
두 어레이 사이의 교차점을 새 어레이로 어떻게 얻습니까? (0) | 2020.11.06 |
Python에서 3D 산점도를 만드는 방법은 무엇입니까? (0) | 2020.11.04 |