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

407
jwir3

Ich habe textwidthauf 80 Zeichen gesetzt, und ich habe es für gitcommitDateien auf 75 Zeichen gesetzt .

Die Sache ist, die git-Commits in meinem Unternehmen haben immer eine letzte Zeile, die einige Metadaten über das Commit anzeigt (ob die Versionsnummer, das zugehörige Ticket usw.). Ich möchte die Textbreite für diese letzte Zeile deaktivieren. Diese letzte Zeile beginnt immer mit "(patch)", "(minor)" oder "(major)" (für halbautomatisches Publizieren).

Derzeit habe ich es so, dass diese Metadatenzeile hervorgehoben wird, indem ich Folgendes in meiner Syntaxdatei verwende:

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

Dies funktioniert, wie ich es zu erwarten, aber was würde ich wirklich tun möchte, ist auch ungesetzt die Textbreite für diese Linie, so dass es nicht einwickeln Worte für diese eine Zeile.

Irgendeine Idee, wie ich das angehen könnte?

4

1 Antwort auf die Frage

3
Ingo Karkat

Als schnellen Hack können Sie den 'textwidth'Wert anpassen, wenn sich der Cursor bewegt:

:autocmd CursorMoved,CursorMovedI <buffer> let &l:textwidth = (getline('.') =~# '^\((patch)\|(minor)\|(major)\)' ? 0 : 75) 

Sie können diesen Befehl ~/.vim/ftplugin/gitcommit_textwidth.vimso eingeben, dass er automatisch auf Git-Commit-Nachrichten angewendet wird .

Alternative

Um das Duplizieren des Musters zu vermeiden, können Sie mit meinem OnSyntaxChange-Plugin:autocmd s einrichten, die auf Änderungen in der zugrunde liegenden Syntaxgruppe reagieren. Es funktioniert im Grunde wie die vorstehende Lösung, jedoch auf einer viel aufwendigeren Ebene.

call OnSyntaxChange#Install('AutoPublish', '^autoPublishLine$', 1, 'a') autocmd User SyntaxAutoPublishEnterA setlocal textwidth=0 autocmd User SyntaxAutoPublishLeaveA setlocal textwidth=75 
Genial. Das Plugin war genau das, wonach ich gesucht hatte. Vielen Dank! jwir3 vor 7 Jahren 0