Vim+Screenプログラミング

僕の初のVim+Screenプログラミングはやはりコレ。emacsのC-x C-eが欲しい。

if !has('gui_running')
  function! ScreenSpiritOpen(cmd)
    call system("screen -X eval split  focus 'screen " . a:cmd ."' focus")
  endfunction

  function! ScreenEval(str)
    let s = substitute(a:str, "[\n]*$", "\n\n", "") " 最後が改行 * 2で終わるようにする。
    call writefile(split(s, "\n"), "/tmp/vim-screen", "b")
    call system("screen -X eval focus 'readreg p /tmp/vim-screen' 'paste p' focus")
  endfunction

  nmap ,e :call ScreenEval(getline('.'))<CR>
  vmap ,e "zy:call ScreenEval(@z)<CR>

  command! -nargs=1 Screen call ScreenSpiritOpen("<args>")
endif

使ってみよう。

まず、vimを立ち上げて。

% vim hoge.rb

Screenコマンドでirbを立ち上げる。

:Screen irb

そしたら,rubyプログラミングをはじめよう。

5.times do
  puts "Hello, Vim + Sceen!!"
end

おもむろにVでガガーっと選択して、「,e」

irb(main):001:0> 5.times do
irb(main):002:1*   puts "Hello, Vim + Sceen!!"
irb(main):003:1> end
Hello, Vim + Sceen!!
Hello, Vim + Sceen!!
Hello, Vim + Sceen!!
Hello, Vim + Sceen!!
Hello, Vim + Sceen!!
=> 5
irb(main):004:0>

おぉぉぉぉ。

超適当ですがVim + Screen + irbな環境が出来ました。

追記

おぉぉぉ。感動。

if文取っぱらって、screenから、

% gvim hoge.rb
% irb

gvim立ち上げて、「,e」したら!!GVimからでも、screenが操作出来る!!

tanakaはGVimperなのですげぇ助かる。screenイイ!!