我已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