Vim의 구문 강조는 Java의 람다 (->)를 오류로 간주합니다.


25

Vim을 사용하여 Java 8로 프로그래밍하고 구문 강조 표시에 문제가 있습니다.

Java 8의 새로운 기능은 람다 지원으로 화살표 연산자가 생성되었습니다 ->. Vim은 이것을 * .java 파일에서 유효한 연산자로 인식하지 않습니다. 따라서 "구문 에러"에주의를 기울이기 위해이 연산자를 밝은 빨간색으로 강조 표시합니다. (물론 이것은 실제로 유효한 구문입니다.)

이 문제를 피하기 위해 Vim의 허용 연산자에 대한 "사전"을 업데이트하거나 구문 강조를 수정하는 방법이 있습니까?

:version상태 의 처음 두 줄 :

VIM-Vi 개선 7.4 (2013 년 8 월 10 일, 2014 년 1 월 2 일 19:39:32 컴파일)

포함 된 패치 : 1-52

답변:


32

2016 년 업데이트

Vim 구문 파일 은 v7.4.649에서 업데이트되었습니다 (2015 년 3 월). 따라서이 패치가 있으면이 작업을 수행 할 필요가 없습니다.

이 문제를 해결하는 가장 쉬운 방법은 최신 syntax/java.vim파일 을 다운로드하여 파일 을 넣으면 ~/.vim/syntax/java.vim기본값을 무시하는 것 $VIMRUNTIME/syntax/java.vim입니다. html.vim다음에 java.vim따라 작동 하도록 심볼릭 링크가 필요합니다 .

ln -s /usr/share/vim/vim74/syntax/html.vim ~/.vim/syntax/

원래 답변

나는 /usr/share/vim/vim74/syntax/java.vim이것을 가지고있다 :

syn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|[^-]->\|\*\/"

[^-]->부분을 ​​보십니까? 오류 강조 표시가 발생합니다.

~/.vim/after/syntax/java.vim동일한 패턴에서 람다 구문을 뺀 파일 을 추가하여이 규칙을 무시할 수 있습니다 .

syn clear javaError
syn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|\*\/"

그리고 보너스 포인트의 경우이 라인을 추가하여이를 기능으로 강조 표시 할 수 있습니다.

syn match javaFuncDef "[^-]->"

버그 보고서 제출을 고려하십시오. :help bug-reports방법을 설명합니다. ...in 과 같이 오류로 강조 표시된 더 많은 (새로운?) 구성이있는 것 같습니다 public static void main(String... args).


1
보너스 포인트에 대한 일치 java_highlight_functions는 활성화되어 있는지 확인하지 않습니다 . 일관성에 대해 신경 질적이라면, syn match전화 하기 전에 확인해야합니다 . if exists("java_highlight_functions") | syn match javaFuncDef "[^-]->" | endif
Zachary Murray

4

기본 구문 파일을 편집 할 필요는 없습니다. VIM-자바 플러그인이 지원합니다. 다른 플러그인처럼 설치하면 람다 연산자가 올바르게 강조 표시됩니다.


확실합니까? 코드가 표시되지 않고 커밋유일한 커밋은-> "람다 기호 인 경우 javaError와 일치하지 않습니다"라는 메시지와 함께 javaError 에서만 제거합니다 (하지만 강조 표시는 함수로 추가하지 않음).
Martin Tournoij

@Caspetsmoker 당신이 맞아요. 오류 메시지 만 제거하십시오. 그러나 나는 이것을 좋아합니다.
adelarsq

2
런타임 파일이 2015 년 3 월 btw에 업데이트되었으며 연결하는 리포지토리 에이 업데이트에 소개 된 많은 수정 사항이 없습니다. 참고 :-)
Martin Tournoij

@Carpetsmoker 니스. 예상대로 작동했습니다. Thanks =)
adelarsq
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.