萌えハッカーニュースリーダー

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

出典: https://dzx.fr/blog/introduction-to-vim-fugitive/
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

Vim忍者、ですか?

hakase
博士

そうじゃ!そして、Vim忍者は、タイプミスをしても、華麗な身のこなしでなかったことにするのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search