🙈
Vimでコミットメッセージ編集時にstatusの一部を非表示にする
git commit
時にコミットメッセージを編集するためにエディタが展開されます。
このとき、画面下側に各ファイルのstatusとdiffが表示されますが、コミット対象のファイルの情報はともかく、コミット対象外のファイルのstatusまで表示されなくても良い気がします。
ということで、Vim(Neovim)向けに、不要な範囲を非表示にする(折りたたむ)設定を紹介します。
以下をftpluginに設定してください。
after/ftplugin/gitcommit.vim
call cursor(1, 1)
silent! /Changes not staged for commit:\|Untracked files:/,/--- >8 ---/fold
旧版
after/ftplugin/gitcommit.vim
call cursor(1, 1)
let fold_pattern = 'Changes not staged for commit:\|Untracked files:'
let fold_from = search(fold_pattern, 'n')
if fold_from
execute fold_from .. ',/--- >8 ---/fold'
endif
当初はこのようにsearch()
がヒットするかチェックしてエラー回避していましたが、silent!
を使うほうが簡単でした。
Changes not staged for commit
またはUntracked files
から、diffの始まりの ✂️ マークまで[1]を折りたたみます。
rangeにパターンを指定できることを利用しています。パターンが見つからない場合(ここでは、すべての変更をステージングしている状態)のエラーはsilent!
で止めています。
範囲を変更したい場合は適宜パターンを調整してみてください。
Changes not staged for commitからハサミマークまで(画像の赤枠部分)が自動で折りたたまれる
-
statusに表示されているファイル名に
--- >8 ---
が含まれていると折りたたみ範囲がおかしくなります。まあ普通はそんな名前のファイル作らないよね ↩︎
Discussion