vimで変更箇所を強調する

vimで変更箇所を強調するプラグインとしてはchanged.vimがあります。ないとやっていられないほど便利なのですが、Changedコマンドが実行されるたびにマーク欄が開閉して非常にうっとおしいです。後ちょっと重い。これをなんとか改善出来ないかと考えました。

結論から言うと、常に何かのマークを表示させておくしかないようです。折り畳み欄がfoldcolumnの設定で常に表示可能であるのに対し、マーク欄には該当する設定がなく、しかも実際にファイルがないとマーク出来ないようです。なのでファイルを開くと自動で行頭にダミーマークが表示されるように設定しました。

" changed
nnoremap ,c :Changed<CR>
" ダミーマーク(\)でsign欄が開閉するのを防ぐ
sign define SIGN_DEFAULT text=\ 
function! s:Show_constant_sign()"{{{
    if filereadable(expand("%:p"))
    execute "sign place 134893619283 line=1 name=SIGN_DEFAULT buffer=" . bufnr('%')
    endif
endfunction"}}}
augroup changed_vim"{{{
    autocmd!
    autocmd BufRead * call s:Show_constant_sign()
augroup END"}}}

これで少なくともマーク欄が開閉することはなくなりました。

折角なのでChanged.vim自体ももう少し軽くならないでしょうか?今はvimprocというvimで非同期実行が可能な便利プラグインがあります。これで非同期に出来る部分を探してみました。ファイル削除部分が単純に置き換え可能だったのでフォークして書き換えます。
フォークしたもの(https://github.com/kyouryuukunn/vim-changed/)

これだけでもかなり軽くなりました。もうちょっと動作が軽快になるといいのですが、きりがないのでこのあたりでやめにします。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です