私はtextwidth
80 文字に設定し、gitcommit
ファイルの場合は 75 文字に設定しました。
問題は、私の会社の Git コミットには常に、コミットに関するメタデータ (バージョン番号を上げるかどうか、関連するチケットなど) を示す最後の行があることです。私がやりたいのは、この最後の行のテキスト幅をオフにすることです。この最後の行は常に「(patch)」、「(minor)」、または「(major)」(semver 自動公開用) で始まります。
現在、構文ファイルで次のようにして、このメタデータ行が強調表示されるようにしています。
syn match autoPublishLine "^\((patch)\|(minor)\|(major)\).*"
hi def link autoPublishLine Special
これは期待通りに動作しますが、私が本当にやりたいのはまたこの行のテキスト幅を設定解除して、この 1 行の単語が折り返されないようにします。
これについてどうしたらよいか、何かアイデアはありますか?
答え1
簡単なハックとして、'textwidth'
カーソルが移動するたびに値を調整できます。
:autocmd CursorMoved,CursorMovedI <buffer> let &l:textwidth = (getline('.') =~# '^\((patch)\|(minor)\|(major)\)' ? 0 : 75)
このコマンドを に配置する~/.vim/ftplugin/gitcommit_textwidth.vim
と、Git コミット メッセージに自動的に適用されます。
代替
パターンの重複を避けるために、私のOnSyntaxChangeプラグイン基礎となる構文グループの変更に反応するを設定できます:autocmd
。基本的には上記のソリューションと同じように機能しますが、はるかに複雑なレベルです。
call OnSyntaxChange#Install('AutoPublish', '^autoPublishLine$', 1, 'a')
autocmd User SyntaxAutoPublishEnterA setlocal textwidth=0
autocmd User SyntaxAutoPublishLeaveA setlocal textwidth=75