HTML 속성에서 철자를 확인하려면 어떻게해야합니까?


9

Vim 맞춤법 검사 기능은 대부분의 경우 훌륭하게 작동합니다. 대부분의 언어에서 코드를 리터럴 및 주석과 구분할 수있을 정도로 똑똑합니다. 그러나 HTML 맞춤법 검사에 문제가 있습니다.

  <div title="text with mistaek #1" data-text="text with mistaek #2">text with mistaek #3</div>

위의 예에서는 실수 만 div강조 표시되어 있습니다 (# 3). 모든 관련 속성을 확인 title하고 data-*이상적으로 구성 가능한 속성 목록을 확인하는 것이 좋습니다 .

구성 또는 VimScript를 통해 달성 할 수 있습니까? 플러그인도 마찬가지이지만 다른 HTML유사 파일 (예 : ASP .NET MVC cshtml파일)에 대해 구성 할 수 있어야합니다 .

답변:


5

Vim이 철자 실수를 강조하는 구문 항목은 @Spell@NoSpell클러스터를 사용하여 정의 됩니다. 자세한 내용은 :help spell-syntax(및 나머지 파일 :help spell:help syntax파일)을 참조하십시오.

원하는 결과를 얻는 빠르고 더러운 수정은 Vim 설정 디렉토리에 다음 .vim/after/syntax/html.vim과 같은 내용 으로 새 파일을 만드는 것입니다 .

syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell
syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell

이 줄은 HTML 속성에 대한 구문 강조를 정의하며 Vim의 표준 구문 파일에 포함 된 html.vim 파일에서 복사되었습니다. 그런 다음 각 구문 항목 내에서 맞춤법을 검사 할 수 있도록 필드에 @Spell클러스터를 추가했습니다 contains.

이를 "title"및 "data- *"속성에만 적용하려면 항목 일치에 사용되는 정규식을 미세 조정하고 HTML 강조 표시가 작동하는 방식을 약간 더 광범위하게 편집해야합니다. 다음은 "title"속성에 대해서만 작동하는 솔루션입니다.

syn region htmlStringSpell contained start=+title=["']+hs=s+6 end=+["']+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell containedin=htmlTag,ScriptTag
hi def link htmlStringSpell String

NB

  1. 정규식에는 이제 title속성 이름 과 오프셋이 포함되어 구문 항목의이 부분이 강조 표시에 포함되지 않습니다. (참조 :help syn-pattern-offset)
  2. 구문 항목은 이제 자체 이름을 가지므로 (i) containedinhtmlStrings가 해당 contains설정 을 통해 포함 된 모든 구문 항목이어야 합니다. (ii) 자체 강조 표시가 적용되었습니다.

1
감사! 작은 따옴표 라인을 추가하도록 답변을 업데이트했습니다. (전체 수정 작업)
Rich

3

보낸 사람 /usr/share/vim/vim74/syntax/html.vim:

syn region  htmlString   contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
syn region  htmlString   contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc

맞춤법 지원을 추가하려면 다음과 같이 @Spell키워드 를 추가해야 합니다 (참조 :help spell-syntax).

syn region  htmlString   contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell
syn region  htmlString   contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,@Spell

~/.vim/after/syntax/html.vim기본 구문 규칙을 무시하도록 이것을 넣어야합니다 .

보너스 팁 :
첫 번째 줄은 큰 따옴표로 묶인 문자열 ( attr="value")의 속성을 나타내고 두 번째 줄은 작은 따옴표로 묶인 문자열 ( attr='value')을위한 것입니다. 이 중 하나만 재정의 할 수 있으므로 맞춤법 검사 여부를 선택할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.