저는 textwidth
80자로 설정했고, 파일은 75자로 설정했습니다 gitcommit
.
문제는 우리 회사의 git 커밋에는 항상 커밋에 대한 일부 메타데이터(버전 번호 충돌 여부, 관련 티켓 등...)를 나타내는 마지막 줄이 있다는 것입니다. 내가 하고 싶은 것은 이 마지막 줄의 텍스트 너비를 끄는 것입니다. 이 마지막 줄은 항상 "(patch)", "(minor)" 또는 "(major)"(semver 자동 게시용)로 시작됩니다.
현재 구문 파일에서 다음을 사용하여 이 메타데이터 줄이 강조 표시되도록 했습니다.
syn match autoPublishLine "^\((patch)\|(minor)\|(major)\).*"
hi def link autoPublishLine Special
이것은 내가 기대한 대로 작동하지만 내가 정말로 하고 싶은 것은또한이 줄의 텍스트 너비를 설정 해제하여 이 한 줄의 단어를 줄 바꿈하지 않도록 합니다.
이 문제를 어떻게 해결할 수 있을지 아시나요?
답변1
빠른 해킹으로 커서 'textwidth'
가 움직일 때마다 값을 조정할 수 있습니다.
:autocmd CursorMoved,CursorMovedI <buffer> let &l:textwidth = (getline('.') =~# '^\((patch)\|(minor)\|(major)\)' ? 0 : 75)
~/.vim/ftplugin/gitcommit_textwidth.vim
Git 커밋 메시지에 자동으로 적용되도록 해당 명령을 에 넣을 수 있습니다 .
대안
패턴의 중복을 피하기 위해,OnSyntaxChange 플러그인:autocmd
기본 구문 그룹의 변경 사항에 반응하는 를 설정할 수 있습니다 . 기본적으로 위의 솔루션과 유사하게 작동하지만 훨씬 더 정교한 수준에서 작동합니다.
call OnSyntaxChange#Install('AutoPublish', '^autoPublishLine$', 1, 'a')
autocmd User SyntaxAutoPublishEnterA setlocal textwidth=0
autocmd User SyntaxAutoPublishLeaveA setlocal textwidth=75