Ich habe es auf 80 Zeichen eingestellt, und für Dateien textwidth
habe ich es auf 75 Zeichen eingestellt .gitcommit
Die Sache ist, dass die Git-Commits in meiner Firma immer eine letzte Zeile haben, die einige Metadaten zum Commit angibt (ob die Versionsnummer erhöht werden soll, das zugehörige Ticket usw.). Ich möchte die Textbreite für diese letzte Zeile ausschalten. Diese letzte Zeile beginnt immer mit „(Patch)“, „(Minor)“ oder „(Major)“ (für Semver Autopublishing).
Ich habe es derzeit so eingerichtet, dass diese Metadatenzeile hervorgehoben wird, indem ich in meiner Syntaxdatei Folgendes verwende:
syn match autoPublishLine "^\((patch)\|(minor)\|(major)\).*"
hi def link autoPublishLine Special
Das funktioniert, wie ich es erwarte, aber was ich wirklich gerne tun würde, istAuchHeben Sie die Textbreite für diese Zeile auf, sodass in dieser Zeile keine Wörter umbrochen werden.
Irgendeine Idee, wie ich das angehen könnte?
Antwort1
Als schneller Trick können Sie den 'textwidth'
Wert bei jeder Cursorbewegung anpassen:
:autocmd CursorMoved,CursorMovedI <buffer> let &l:textwidth = (getline('.') =~# '^\((patch)\|(minor)\|(major)\)' ? 0 : 75)
Sie können diesen Befehl einfügen ~/.vim/ftplugin/gitcommit_textwidth.vim
, sodass er automatisch auf Git-Commit-Nachrichten angewendet wird.
Alternative
Um die Duplizierung des Musters zu vermeiden, meineOnSyntaxChange-Pluginermöglicht es Ihnen, s einzurichten :autocmd
, die auf Änderungen in der zugrunde liegenden Syntaxgruppe reagieren. Es funktioniert im Grunde wie die obige Lösung, jedoch auf einer weitaus ausgefeilteren Ebene.
call OnSyntaxChange#Install('AutoPublish', '^autoPublishLine$', 1, 'a')
autocmd User SyntaxAutoPublishEnterA setlocal textwidth=0
autocmd User SyntaxAutoPublishLeaveA setlocal textwidth=75