如何禁用特定行的vim文本宽度?


3

我已textwidth设置为80个字符,我将其设置为75个字符的gitcommit文件。

问题是,我公司的git提交总是有一个最后一行,表明有关提交的一些元数据(是否要破坏版本号,相关票证等等)。我想做的是关闭最后一行的textwidth。最后一行将始终以“(patch)”,“(minor)”或“(major)”(对于semver autopublishing)开头。

我目前拥有它,以便在我的语法文件中使用以下内容突出显示此元数据行:

syn match   autoPublishLine     "^\((patch)\|(minor)\|(major)\).*"
hi def link autoPublishLine             Special

这可以按照我的预期工作,但我真正想要做的还是取消设置此行的textwidth,因此它不包含这一行的单词。

知道我怎么会这样做吗?

Answers:


3

作为快速入侵,您可以'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

真棒。这个插件正是我想要的。谢谢!
jwir3
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.