Vimのタブで開いているバッファのdiffを簡単に表示するpluginを書いた
この記事はVim Advent Calendar 2013の57日目の記事です。
56日目はmanga_osyoさんによる:substitute をプレビューする over.vim にスクロール機能を実装したでした。
本記事では、Vimのタブで開いているバッファのdiffを簡単に表示するpluginを書いたのでご紹介します。
※ちなみに本日1/26は、私derisの誕生日だったりします。いわゆる誕生日VACです。わーい、めでたいですね(棒
vim-diffbuf
vim-diffbufはタブで
開いているバッファ同士のdiffをとるのが面倒で作ったpluginです。
(同一タブ内で開いていればwindo diffthis
で一発なんですけどね…)
diffの対象にしたい1つ目のバッファをカレントバッファとした状態でDiffBuf
コマンドを
実行し、diff対象にしたいもう1つのバッファでも同様にDiffBuf
コマンドを実行すると、
新規タブ上で垂直分割した2つのdiff対象のバッファのdiffを開きます。
実際の動作は以下のGIFアニメを見てください。
上記GIFアニメの例では、別タブで2つの無名バッファが開かれており、
それぞれのバッファをカレントバッファとした状態でDiffBuf
コマンドを
実行することで2つのバッファのdiffを新規タブで開いています。
vim-diffbufでは、1つ目のdiff対象でDiffBuf
コマンドを実行すると
内部で、diff対象を保存します。2つめのdiffでDiffBuf
コマンドを
実行した時に、2つのdiffを表示します。この際内部で保存したdiff対象
はクリアするため、再度、DiffBuf
コマンドを実行することで、別の
diff対象同士のdiffをとることが可能です。
future work
まだ作りたてなので、インターフェースは、引数なしのDiffBuf
コマンド
(と同様の関数diffbuf#diffbuf
)のみと非常に単純なpluginです。
また、diffを開く際も、新規タブ&垂直分割と固定です。
そのうち機能拡張しようと思いますが、とりあえず使いながら使いづらいところを
拡張していこうと思っています。
今のところ思いつくのは以下のような拡張です。
- バッファ番号指定のdiff
- 開くウィンドウの指定(新規タブか既存タブか、垂直分割か水平分割か)
もし、要望があればフィードバックしていだけるとうれしいです。
まとめ
以上が、Vimで既存バッファをvimdiffしたいときに便利なpluginについてのご紹介でした。
本題とはそれますが、Vimレベルが上がるのでvimrc読書会に参加することをおすすめします。毎週土曜日23時からやってます。
それではVim Advent Calendar 2013の57日目を終わります。
明日のVim Advent Calendar 2013はhaya14busaさんです。