2017-05-12 14 views
5

私はしばしばvimを使ってgit commitメッセージをフォーマットします。 increasingpopularityと表示されている傾向は、コミットメッセージの最初の行を50文字に制限し、その後の行を72文字に制限することです。gitコミットメッセージの件名を50文字に制限してください

I already know how to make my commit wrap at 72 characters based on my vimrc file

syntax on 
au FileType gitcommit set tw=72 

は、その後50文字で、最初の行AUTOWRAP vimを作るための方法と、その後72の文字がありますか?

同様に良い答えは私のヘッダーが長すぎることを示すためにのみ最初の行の第50列の後にすべてを強調表示することができ...

答えて

4

あなたが希望textwidthを設定するCursorMovedCursorMovedIオートコマンドを使用することができます行に基づいて(またはその他の設定)カーソルが現在オンである:ネストされた自動コマンドは、それはかなりファンキーに見えるようものの、let &l:textwidth = line('.') == 1 ? 50 : 72

augroup gitsetup 
     autocmd! 

     " Only set these commands up for git commits 
     autocmd FileType gitcommit 
       \ autocmd CursorMoved,CursorMovedI * 
         \ let &l:textwidth = line('.') == 1 ? 50 : 72 
augroup end 

基本的なロジックは単純です。スクリプトローカル関数(fun! s:setup_git())にその一部を抽出して、それを呼び出すこともできます。

setlocalの構文はsetlocalと同じですが(ただし、setlocalでは右側のような式は使用できません)、単純な文字列のみです。

いくつかの関連質問:


デフォルトgitcommit.vim構文ファイルが既に50個の文字の後の最初の行をハイライト表示を停止していることに注意してください。 /usr/share/vim/vim80/syntax/gitcommit.vimから:それ何のハイライトが適用されていない後

syn match gitcommitSummary "^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow [email protected] 
[..] 
hi def link gitcommitSummary  Keyword 

のみ最初の50行は、「キーワード」(私のカラースキームでライトブラウン)として強調されます。

は、Ifもあります。それは少しも独断だためか、コメントアウトされます

syn match gitcommitOverflow ".*" contained [email protected] 
[..] 
"hi def link gitcommitOverflow  Error 

お知らせ方法。あなたは簡単にかかわらず、あなたのvimrcにこれを追加することができます:50の文字は(あなたがしたい場合は、また別のハイライトグループを選択することで、目立たない色を使用することができます)、エラーとして表示した後、すべてを行います

augroup gitsetup 
     autocmd! 

     " Only set these commands up for git commits 
     autocmd FileType gitcommit 
       \ hi def link gitcommitOverflow Error 
       \| autocmd CursorMoved,CursorMovedI * 
         \ let &l:textwidth = line('.') == 1 ? 50 : 72 
augroup end 

を。

+0

偉大な答え、私は前に '&l:'トリックを見たことがない、それは役に立つだろう! – nickspoon

関連する問題