Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Agit.vim に最近追加した機能とか紹介

$
0
0

この記事は Vim Advent Calendar 2014の2日目の記事です。

僕が作成した Vim から Git のログを見るためのプラグイン、Agit.vimについてです。
Agit.vim の基本的なことについては以前の記事を参照ください。

gitk クローンみたいな Vim プラグイン作った

ファイルモード

:AgitFile

と実行することにより Agit をファイルモードとして開くことができます。
ファイルモードではリポジトリ全体の履歴ではなく、ある特定のファイルのみの履歴と、その時のファイルの中身を表示します。

shot1

また、--file=path/to/fileというオプションで履歴を見たいファイルを指定することもできます。
これだけだとあまり意味はないのですが、後述する unite.vim との連携等 Agit を外部から呼び出したい場合には便利です。

--dir オプション

:Agit --dir=path/to/dir

で指定したディレクトリを起点として Agit を起動することができるようになりました。
起点として、というのは指定したディレクトリが含まれるリポジトリ全体の履歴を見るということです。

これだけだと特に面白くはないのですが、unite.vim 等と連携するなどすればとても便利になります。
例えば、下記のようなコードを vimrc に書きます。

let agit_action = {}
function! agit_action.func(dir)if isdirectory(a:dir.word)letdir= fnamemodify(a:dir.word,':p')elseletdir= fnamemodify(a:dir.word,':p:h')endif
  execute 'Agit --dir=' . direndfunctioncall unite#custom#action('file,cdable','agit', agit_action)

こうすると、例えば Unite file_mruのあと (aを押してアクションの絞り込みを行い) agitというアクションを実行することができるようになります。

この場合 agitアクションは指定したファイル、ディレクトリを起点に Agit を起動します。

unite-agit

(もしかしたらそのうちプラグイン化するかもしれない)

<C-g> でコミットメッセージを echo エリアに出せるようになった

いちにぃさんが要望を出してくれました。
最初は diff エリアにもコミットメッセージ出ているし不要かなとも思ったんですが、ファイルモードではコミットメッセージが出るエリアはないので実装しました。

c-g

言い訳のような何か

いろいろ他のことも忙しくてこれくらいしか機能追加できてないんですが、将来的にはファイルだけじゃなくて Author とか日付とかで柔軟に絞り込んだり、diff を Vim の diff 機能を使って表示するとかも実装するつもりです。

実際ファイルモード実装するの簡単だろwとか思ってたんですが、やってみるとかなりの部分で if filemodeみたいなコードが出てきてしまってこれじゃアカンと思ってコード全体をリファクタリングしてから実装にとりかかりました。
(余談ですが gitv.vim はそういうコードになっています)

時間はかかったのですが、そのおかげで今後の拡張が少しやりやすくなったので今後はもう少し開発スピードを上げていきたいです。。。

明日は koron さんです。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>