Wie kann ich die Textbreite von Vim für bestimmte Zeilen deaktivieren?

Wie kann ich die Textbreite von Vim für bestimmte Zeilen deaktivieren?

Ich habe es auf 80 Zeichen eingestellt, und für Dateien textwidthhabe 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

verwandte Informationen