特定の行のvimのテキスト幅を無効にするにはどうすればよいですか?


3

私がしているtextwidth80文字に設定されており、私はそれがために75文字に設定されているgitcommitファイル。

問題は、私の会社のgitコミットには、コミットに関するメタデータを示す最後の行が常にあるということです(バージョン番号、関連付けられたチケットなどをバンプするかどうかなど)。私がやりたいのは、この最後の行のテキスト幅をオフにすることです。この最後の行は、常に「(patch)」、「(minor)」、または「(major)」で始まります(semver自動発行の場合)。

現在、このメタデータ行が強調表示されるように、構文ファイルで以下を使用しています。

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

これは、私はそれが期待どおりに動作しますが、私が本当にしたいことはある、このラインのtextwidth解除、それはこの1行の言葉をラップしません。

私はこれについてどうすればいいのでしょうか?

回答:


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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.