Vim - 開いているファイルや選択しているコード行をGithubで開く

チーム開発をしている時など、「選択しているコード行のGithub URLが欲しい」ケースは多い。
URLで指定した行番号をハイライトしてくれる、こういうURL。
https://github.com/previm/previm/blob/12226fa0e3e807a6498cd6bd6de8af70278203fe/autoload/previm.vim#L64-L65
レビュー時やチャット上で共有する時に使う。

Vim上でサクッとやるには以下のどちらかのプラグインで実現できる。

vim-fugitive + vim-rhubarb

vim-fugitiveを入れるとgit管理下において:Gbrowseコマンドが使えるようになる。
このコマンドはg:fugitive_browse_handlersに設定されたハンドラを使用してURLを開く。
開きたいコードを行選択してから:GbrowseすればOK。もちろん行指定が不要なら引数なしでそのまま:Gbrowseを実行すればいい。

このg:fugitive_browse_handlersはもちろん自分で設定できるけど、vim-rhubarbを入れると勝手に設定してくれる。
(vim-rhubarbはhubを利用するためのプラグイン)

なお:Gbrowse実行時に「fugitive: "origin' is not a supported remote」というエラーが出る場合はプラグインが古いので更新すること。
g:fugitive_browse_handlersが空の場合は「fugitive: No Gbrowse handler found for '...'」といったエラーになる。

open-browser.vim + open-browser-github.vim

これは作者のtyruさんが紹介記事を書かれているのでそちらを参考に。
基本的な使い方は:Gbrowseと変わらない。
http://tyru.hatenablog.com/entry/20130125/useful_vim_commands_for_getting_along_with_github

どっちを使う?

どちらも素晴らしいのでお好きな方でいいと思う。
hubを良く使う人はvim-rhubarbを入れておくと便利なのかもしれない。僕はほとんど使っていないので便利度は分からない。
open-browser-github.vimのtyruさんは日本人なので、困った時に質問しやすいかもしれない。

この記事のきっかけ

今回のケースに対応するコードを、僕は.vimrcに書き捨てで設定していた。
Vim環境を整理するにあたってそのコードを消して、:Gbrowseが動くように四苦八苦した。
(最初はプラグインが古くて動かず、次にg:fugitive_browse_handlersがなくて動かなかった)

あとになって「そういえばopen-browser-github.vimがあったな」と思い出して結局そっちを使うことにしたのだけど、せっかくなので調べたことを残しておくことにした。