Humanity

Edit the world by your favorite way

Google ChromeやFirefoxのタブのようにバッファを複数Vim間でやりとりできるプラグイン作りました

※この記事はVim Advent Calendar 2012の256日目の記事です。


tyru/transbuffer.vim · GitHub

使い方

2つのVimが起動しているとします。

---------       ---------
| GVIM1 |       | GVIM2 |
---------       ---------

そしてGVIM1がhello.txtというファイルを編集しているとしましょう。
その場合、次の2つのコマンドでhello.txtのバッファをGVIM2に移動させることができます。
(その際GVIM1のバッファは閉じられます。もしhello.txtのウインドウしか開いていなかったらVimも終了します)

" GVIM2で実行
:TransGetBuffer GVIM1 hello.txt

もしくは

" GVIM1で実行
" ("hello.txt"が省略された場合、現在のバッファがGVIM2に移動されます)
:TransPutBuffer GVIM2 hello.txt

補完

これらのExコマンドはwildcharに設定しているキーを押せば補完が効きます。
特に設定していなければがwildcharに割り当てられているはずです。

" ここで<Tab>を押せば現在起動しているVimの一覧が表示されます。
:TransPutBuffer 
" ここで<Tab>を押せば現在GVIM1で編集しているファイルの一覧が表示されます。
" <C-d>を押せば通常の補完と同じく一覧表示できます。
:TransPutBuffer GVIM1 

新しいVimを起動

もし現在のバッファを新しいVimの中で開きたいなら次のコマンドが使えます。

:TransPutBuffer +NEWVIM

上記のコマンドはv:servernameが「NEWVIM」であるVimを起動して、
そのVimで現在のバッファを開きます。

ところで

8/16(金)は私の誕生日です。
特に意味はないのですが、ふとウィッシュリストを公開しておきたい衝動に駆られたので公開します。

Amazon.co.jp