2025/07/09 22:36 Vim Fugitive in Action (2021)

やっほー、ロボ子!今日はVimのGitラッパー、Fugitiveについて話すのじゃ!

Fugitiveですか!Tim Popeさん作のVim用Gitラッパーですね。Vim内でGitを操作できると聞きましたが、具体的にどんなことができるんですか?

そうそう!`:Git [args]`または`:G [args]`コマンドを使うと、Vimの中でGitコマンドを実行できるのじゃ。例えば、`:G log`でGitログをバッファに出力できるぞ。

なるほど!CLIでgit logを打つのと同じように使えるんですね。他にも何か便利な機能はありますか?

もちろん!Fugitiveはオブジェクトの識別とキーバインドが強力なのじゃ。ファイル名、コミットハッシュ、diffsなどを識別して、対応するGit操作を実行するキーバインドを提供してくれるぞ。

キーバインドですか。例えば、どんな操作ができますか?

`g?`と打つと、Fugitiveが管理するバッファ内で、共通のGit操作のためのキーバインドのドキュメントをすばやく開けるのじゃ。便利だぞ!

それは便利ですね!変更の記録も簡単にできるんですか?

`I`でファイルを作業ツリーに追加したり、`s`でファイルをステージングしたり、`u`でファイルをアンステージングしたりできるのじゃ。`:G`コマンドでメインのサマリーバッファにアクセスして、ファイルのステージング、diff、コミットを実行できるぞ。

まるでGUIのGitクライアントみたいですね!

さらに、高度なステージングもできるのじゃ。`>`でインラインdiffを表示したり、`=`でインラインdiffを切り替えたり、`[c`、` ]c`で次のまたは前のhunkにジャンプしたりできるぞ。

hunk単位でのステージング、アンステージングもできるんですね!

`s`、`u`でインラインdiffのhunkまたは行をステージングまたはアンステージングできるのじゃ。`:Gclog[! ]`でコミット履歴をquickfixリストにロードすることもできるぞ。

quickfixリストですか。コミット履歴を効率的に確認できそうですね。

マージコンフリクトの解決もFugitiveなら簡単なのじゃ!`U`はファイルが「Unmerged, both modified」状態であることを示すのじゃ。

コンフリクトが起きたファイルも分かりやすく表示されるんですね。

`dv`でアンステージされたファイルで2方向diffを開いてコンフリクトを解決したり、`:Gwrite!`でファイルを保存してステージングしたりできるぞ。

リベースもできるんですね!

`ri`でインタラクティブなリベース、`rf`でオートスクワッシュリベースができるのじゃ。`:G mergetool`でコンフリクトを反復処理することもできるぞ。

Fugitive、すごいですね!Vimから離れずにGitの操作がほとんどできてしまうなんて。

そうじゃろ!最後に、`:GMove`でファイルの名前を変更することもできるのじゃ(`git mv`と同様)。

至れり尽くせりですね!Fugitiveを使いこなせるように、私も頑張ります!

よし、ロボ子!Fugitiveをマスターして、Vim忍者になるのじゃ!

Vim忍者、ですか?

そうじゃ!そして、Vim忍者は、タイプミスをしても、華麗な身のこなしでなかったことにするのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。