我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
對基礎語法組中的變更做出反應的 s。它的工作原理基本上與上述解決方案類似,但在更複雜的層面上。
call OnSyntaxChange#Install('AutoPublish', '^autoPublishLine$', 1, 'a')
autocmd User SyntaxAutoPublishEnterA setlocal textwidth=0
autocmd User SyntaxAutoPublishLeaveA setlocal textwidth=75