読者です 読者をやめる 読者になる 読者になる

異なる vim プロセスで yank/paste するプラグイン yanktmp.vim

http://www.vim.org/scripts/script.php?script_id=1598
自分のプログラミング環境はもっぱら screen + vim なので、ある vim と別の screen で開いた vim と yank/paste をしたいときは screen の copy 機能を使ってやりとりしてました。この方法でも問題無いといえば無いのですが、vim の visual モードから yank できた方が絶対便利ですし、いちいち screen の機能を使うのではなく vim だけで完結させたいものです。
というわけで yank したときに tmp ファイルに内容を書き出し、paste するときにその tmp ファイルから paste することで、別プロセスの vim 同士でも簡単に yank/paste ができるプラグイン、yanktmp.vim を作ってみました。~/.vim/plugin/yanktmp.vim にプラグインを置き、.vimrc などで

map <silent> sy :call YanktmpYank()<CR> 
map <silent> sp :call YanktmpPaste_p()<CR> 
map <silent> sP :call YanktmpPaste_P()<CR> 

と関数をキーにマッピングすることで利用できます。上記設定では sy で tmp ファイルに yank、sp, sP で paste となってます。それぞれ通常の y ,p ,P と同じ挙動をしますので、別プロセスの vim で paste したいときは sy で、のように使い分けると便利です。自分で作っておいてアレですが、だいぶ vim life が便利になりました。
ただしこのプラグインは vim7 でしか動きません。vim script が vim6 と vim7 の間で新しい機能がだいぶ加わって、また vim7 から vim script を覚え出した自分は vim6 での書き方がよくわからないのと、vim6 の環境が自分のマシンには無いのが原因です。たぶん数行書き換えるだけで vim6 でも動くようになる、はず。なお vim7 の win32 kaoriya版 は正式版ではありませんが http://www.kaoriya.net/testdir/vim7-daily-w32j.exe から落とすことができます。
それと vim script の話なのですが、vim7 からは List(Array みたいな) や Dictionary(Hash みたいな)が使えたり、OOP っぽいことができたりvimprocを使うとソケット通信ができて http クライアントが作れたり、なかなか思った以上にいろいろなことができて面白いです。今まで vim script を使ったことが無い人は一度弄ってみてはどうでしょうか。:h eval.txt でだいたいできることは把握できると思います。あとあと、 vim の雑誌記事書き(ry