Sendkey
vimから他のアプリケーションにキーシーケンスを送って制御する関数を作った。
って、単にWScript.Shellを呼び出してるだけだけど。
使い方
:call Sendkey('対象アプリケーションのウインドウタイトル','送信するキーシーケンス')
コード本体
function! Sendkey(app,keys) ruby << require 'win32ole' wsh=WIN32OLE.new('WScript.Shell') wsh.AppActivate(VIM.evaluate('a:app')) wsh.SendKeys(VIM.evaluate('a:keys')) wsh.AppActivate($curbuf.name.gsub(/.*\//,'')) . endfunction
使用例
F5を押すと、編集中のHaskellソースを一時ファイルに書き出してghciにロードさせてmainを実行させる
map <F5> :silent! w! d:/tmp/tmp/a.hs<CR>:call Sendkey('ghci','{:}l d{:}/tmp/tmp/a~main~')<CR>
おぼえがき
改行は~
()[]{}:+^%~の文字自体を使うときは{}で囲む
mapするキーにshift,ctrl等を併用するものを使うと、sendkeys実行時にも影響するので注意。