GitHub のアレコレを補完する github-complete.vim をつくりました

GitHub のユーザ名やリポジトリ名,絵文字,リンクURLを GitHub API を使って補完する github-complete.vim をつくりました.

https://github.com/rhysd/github-complete.vim

Vim では Markdown 編集中のオムニ補完は HTML のものになっていて使わないので,どうせなら GitHub のアレコレが補完できれば便利だなと思ってつくってみました. 5カ月前ぐらいに8割方できていたんですが,最後のリンク URL 補完を完成させずに放置してしまっていたので,yokohama.vim #6 で完成させました.使えるのは下記の5種類の補完です.

  • 絵文字補完
  • ユーザ名補完
  • リポジトリ名補完
  • issue 番号補完
  • リンクURL補完

markdown および gitcommit ファイルタイプでのオムニ補完として実装されていますので,Markdown なファイルや git のコミットメッセージの編集中に <C-x><C-o> (Ctrl + x → Ctrl + o)で補完を発動できます.

また,一応 neocomplete.vim のソースも同梱されており,g:github_complete_enable_neocomplete1 をセットすることで使えますが,自動補完で大量の API 呼び出しが発生すると思うので呼び出し制限にひっかかる恐れがあります.

せっかくなので各補完を簡単に紹介します.

絵文字補完

emoji completion

":" の後にカーソルがある時に補完できます.GitHub の絵文字が補完できます.スクリーンショットでは絵文字が表示できていますが,これは Terminal.app が対応しているからで,それ以外の環境では表示できません.(現状 Vim の制限.gVim はフォント設定で何とかなる?)

ただ,これだけだと OS X + ターミナルでないと補完候補が分かりにくかったので,日本語での説明を頑張って追加しました.g:github_complete_emoji_japanese_workaround を 1 にセットすると,このように候補に日本語の説明が付きます.

Japanese workaround

ユーザ名補完

user name completion

"@何か" か "github.com/何か" の後ろにカーソルがある時に "何か" をユーザ名として検索して補完できます.僕のようにツイッターGitHub でユーザ名が違う場合など,ユーザ名思い出せない時に便利です.

リポジトリ名補完

repo name completion

"ユーザ名/何か" の後ろにカーソルがある時に "何か" をリポジトリ名として補完します.上のユーザ名と合わせて,GitHub の URL をユーザ名,リポジトリ名と順に補完することでリポジトリ名とか覚えていなくてもブラウザを開いて確認する必要が無くなります.

Issue 番号補完

issue number completion

"#番号" で参照できる issue/pull request 番号ですが,活発なリポジトリだとよく忘れます.そこで,"#" の後ろにカーソルがある時に補完できるようにしてみました.番号と一緒に issue のタイトルも表示されます. コミットから issue を閉じるためにタイトルに Close #1 とか書くことも多いかと思いますが,issue 番号を忘れてもその場で補完できるようになります.

リンクURL補完

link completion

[何か]( の後ろにカーソルがあるときに "何か" で GitHub を検索した結果の URL を候補として補完できます. 記事内やコミットメッセージで使ったライブラリや紹介したいツールなどのリポジトリへのリンクを書く時に,リンクタイトルにそのライブラリやツールの名前を書いておけば URL が分からなくても補完できます(特に作者名はよく忘れますね…). Vim 関連の記事を書く時に [プラグイン名](プラグイン URL) とかよく使うので,そこで重宝しています.

まとめ

GitHub のアレコレを補完できる github-complete.vim をつくってみました.

今この記事を書いている時もリンク補完などを使っていますが,補完速度も1〜2秒程度で手動補完で使う分にはかなり良い感じです.もしよろしければお試しください.