vimでJScriptとかrubyとか書いてる際にWindowsヘルプを操作するのが面倒だったので、vim上からWindows
ヘルプを開けるスクリプトを作ってみた。
単純に開くだけではなくて
- カーソル位置の単語でキーワード検索
- vim上でキーワード入力可能
にも対応した。
またファイルタイプ毎に異なるヘルプファイルを指定できる。
準備
まずHTMLヘルプはコマンドラインからキーワードを指定して実行出来ないみたいなのでそれに対応したツールを
ダウンロードする。
hhh.exe(vector)
またWindows Vista/Windows 7はWinHelp形式のファイルを開けないので、必要ならば以下のページから対応した
ものをダウンロードする。
http://support.microsoft.com/kb/917607/ja
導入
以下を$VIMRUNTIME/autoloadに置く(Windowsの場合 $HOME/vimfiles/autoload など)。
ファイル名はexternalhelp.vim
とする(変えると話がややこしくなるので注意)
設定可能な変数は以下の通り
g:external_hlp_hhhexe
- hhh.exeのパス
g:external_hlp_winhlpexe
- winhlp32.exeまたはwinhelp.exeのパス
b:externalhelp_file
- バッファ固有の外部ヘルプファイルのパス
g:external_hlp_files
- キー=ファイルタイプ、値=外部ヘルプのパスの辞書。
b:externalhelp_file
の方が優先
関数の呼びだし方はソースのコメント参照(ぉぃ
設定例
$MYVIMRC(~/_vimrc
)に以下のように記述
([F2]→カーソル上の単語でキーワード検索、Shift+[F2]→キーワードをVim上で入力)
$MYVIMRC(ex _vimrc)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| "実行ファイルのパス
let g:external_hlp_hhhexe = 'E:\Tools\hhh\hhh.exe'
let g:external_hlp_winhlpexe = 'C:\Windows\winhlp32.exe'
"ファイルタイプ毎のヘルプファイルを記述。
"空白が入っていても文字列自体をダブルクォーテーションで括っては駄目。
let g:external_hlp_files = {
\"ruby": expand('~/help/ruby-refm-1.9.2-20110729.chm'),
\"javascript": 'C:\Program Files\Microsoft Windows Script\ScriptDocs\Script56.CHM'
\}
"キーマッピング
nnoremap <expr><silent> <F2> externalhelp#show_windowhelp(0)
nnoremap <expr><silent> <S-F2> externalhelp#show_windowhelp(1)
inoremap <expr><silent> <F2> externalhelp#show_windowhelp(0)
inoremap <expr><silent> <S-F2> externalhelp#show_windowhelp(1)
|
externalhelp#show_windowhelp(2,"")
とするとキーワードなしで起動する。
あとVimヘルプのキーワード検索(タグ検索?)用関数(show_vimhelp
)を使うなら$MYVIMRC(~/_vimrc
)を
以下のようにする([F1]→カーソル上の単語でVimヘルプ表示)
$MYVIMRC(ex _vimrc)
1
2
| nnoremap <silent> <F1> :<C-u>call externalhelp#show_vimhelp(0)<CR>
inoremap <silent> <F1> <C-o>:call externalhelp#show_vimhelp(0)<CR>
|
nnoremap <expr>
とかだと動かなかった(エラーメッセージが表示される)ので、callコマンドを呼び出すよう
にしてある。
補足
WinHelp形式のヘルプにも対応してあるが、手でcallコマンドで呼び出して挙動を見ただけで、
実際にヘルプファイル割り当てて動かしてないので、若干怪しいところとかがあるかも