LoginSignup
58
62

More than 5 years have passed since last update.

Quickfixを知ってからfugitiveを使うと捗る

Posted at

vimgrepとQuickfix知らないVimmerはちょっとこっち来い - http://qiita.com/items/0c1aff03949cb1b8fe6b

こんな記事が上がっていたので、勝手に応用編を書いてみる。
まあ、以前LT等で話したことをQiitaに書き移してるだけですが。

QuickFixの拡張

QFixGrepというプラグインがあります。
これを入れていると、以下のような事が出来ます。

  • QuickFixバッファで選択した検索対象をプレビューして確認できる
  • QuickFixの表示を更に絞り込んで検索
  • QuickFixの表示をファイル名、更新時間、内容でソートする

他にもいくつか機能がありますし、Windowsで利用するのに便利な解説などもあります。

また、以前自分のブログなどで書きましたが、qfreplaceというプラグインがあります。
QuickFixで出力されている各行をまとめて置換することが出来ます。
メソッド名の変更のお供に。

fugitiveの真価

fugitiveというvimからgitを操作するためのプラグインがあります。
導入した後で、以下のようなコマンドを打ってみましょう。

  • :Glog | copen (現在開いているファイルの過去の編集履歴をQuickFixで参照)
    • 選択するとその時点でのファイルの断面を開く
  • :Glog -- | copen (gitリポジトリのコミットログの一覧をQuickFixで参照)
    • 選択するとログとdiffの内容を表示するバッファが開く
  • :Glog master..HEAD -- | copen (masterから現在のブランチまでのコミットログの一覧をQuickFixで参照)
    • 選択するとログとdiffの内容を表示するバッファが開く
  • :Ggrep hoge | copen (hogeでgit grepした結果をQuickFixで参照)
    • 選択するとヒットした箇所に移動する
    • qfreplaceでまとめて置換可能

(GlogのQuickFix機能はQfixGrepのプレビューとは余り相性が良くない)

gitのコミットをvimから直接扱えるので、過去の編集履歴から削除したコードを持ってきたりできるわけです。
過去の編集履歴を参照している状態でGdiffコマンドを使えば、即座に現在の状態との差分を確認する事も可能です。

これで、gitのコミットの活用が捗りますね。

58
62
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
58
62