如何停用 vim 特定行的文字寬度?

如何停用 vim 特定行的文字寬度?

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

相關內容