2014年12月13日土曜日

vim で cpprefjp や cplusplus.com を即座に参考にできるようにする方法

Vimを使ってソフトウェア開発をしている最中にリファレンス系のウェブサイトの情報を見たい事はよくあります。都度、GUIのフォーカスをウェブブラウザーへ移して対象のウェブサイトを開きキーワードを打ち込むのにも少々コストが掛かります。

そういうわけで、Vimで直接リファレンスサイトを見れたら便利なので見れるようにプラグインと設定を施してみました。

参考: Vim で英語を書く時に便利なプラグインいくつか

以下、例として cpprefjp と cplusplus.com を Vim で直接参照できるようにします。

(前提: NeoBundle が導入されていること、 w3m などテキストブラウザーが導入されていること)

NeoBundle 'thinca/vim-ref'
NeoBundle 'mfumi/ref-dicts-en'
NeoBundle 'tyru/vim-altercmd'

autocmd FileType ref-* nnoremap <buffer> <silent> q :<c-u>close<cr>

let g:ref_source_webdict_sites = {
      \   'cplusplus.com': { 'url': 'http://www.cplusplus.com/search.do?q=%s', },
      \   'cpprefjp': { 'url': 'http://cpprefjp.github.io/reference/%s.html', },
      \ }

let g:ref_source_webdict_sites.default = 'cpluspluscom'

call altercmd#load()
CAlterCommand rcxx Ref webdict cplusplus.com
CAlterCommand rcxxjp Ref webdict cpprefjp

これで Vim 動作中にコマンドモードで

:rcxxjp vector

とタイプすると実際には:Ref webdict cpprefjp vector と展開され、以下のようにバッファーで cpprefjp の vector の解説を開けます。(そして、qだけで閉じられます。)

enter image description here

cpprefjp ではドキュメントのパスがクラスについては {class-name}.html 、クラスのメンバーについては {class-name}/{member-name}.html となっています。今回例示したVimの設定では、 vector とするとクラス、 vector/emplace_back とすると vector::emplace_back メンバーを参照できます。また、コンストラクターは vector/vector 、デストラクターは vector/-vector となります。

先の設定例ではもう1つ、C++erが参考にする事も多いと思われる cplusplus.com の設定例も書いてありました。こちらは、

:rcxx vector

のように使え、 cplusplus.com の検索&リダイレクト機能へクエリーしているので、それっぽいキーワードを打ち込むと、キーワードベースでそれっぽいページか検索結果を参照できます。

Vimべんり(╹◡╹)

0 件のコメント:

コメントを投稿