他のウィンドウにコマンドを送りつける
本日のvimscript。やべぇ。すげぇ可能性を感じた。
" return current window number function! MoveWindow(buf_name, split) let cur = winnr() if !buflisted(a:buf_name) return -1 else let winnr = bufwinnr(a:buf_name) if winnr == -1 if a:split exe "sp " . a:buf_name else exe "b " . a:buf_name end else exe winnr . "wincmd w" endif endif return cur endfunction function! SendCommand(buf_name, cmd) let cur = MoveWindow(a:buf_name, 1) if cur != -1 exe a:cmd exe cur . "wincmd w" else echo "SendCommand : " a:buf_name . " not exists." endif endfunction " vimsh専用。 function! SendNormalCommand(buf_name, lines) for cmd in split(a:lines, "\n") call SendCommand(a:buf_name, "normal GA" . cmd . "\<CR>") endfor endfunction command! -nargs=1 VimShNewBuf call Vimsh( "_<args>_" ) " テスト VimShNewBuf vimsh call SendNormalCommand("_vimsh_", "gosh\n(+ 1 1)\n(exit)\n")
まだまだvimshで遊び中(笑
実行すると。こんな感じ。
sh-3.1$ gosh gosh> (+ 1 1) 2 gosh> (exit) sh-3.1$
他のウィンドウをリモート操作しちゃいます。
色々出来そうな予感。