coLinux で Emacs の kill-ring の内容をWindowsのクリップボードと同期する とか coLinux 上の Emacs の kill-ring の内容をWindowsのクリップボードと同期する by Perl から。
上記のサイトのをもってきて.vimrcをちょろっと書けばいいんだけど、テキストを受信するサーバーは常時立ち上げていそうで、スクリプトだとなんとなくアレなので、exeがいいなあ。簡単にできそうなので、とりあえず探すよりは作ってみるメソッド。
ファイル一式
内容は
- clipboard_server.exe:Windows側で実行するサーバー
- clipboard_server.ini:サーバーのポートの設定
- clsync.py:vmware側におくクライアントスクリプト
使い方など
Windows側ではclipboard_server.iniで適当にポートを設定して(当然外部から見えないやつを)、clipboard_server.exeを起動しておいてください。タスクトレイにアイコンが表示されてますので、そこから終了できます。
vmware上のLinuxですが、まずnkfがインストールされている必要があります。すみません、クライアント側手抜きするために使っています。そしてclsync.pyをパスの通ったところにおきます。clsync.pyにはホストのWindows側で動いてるサーバーのポートとIPを設定する箇所があるので、適宜書き換えます。またポートとIPはオプションでも渡せます(詳しくはclsync.py -hで)。
あとは
1function! SyncClipboard()
2 let cliptext = substitute(getreg(), "'", "'\"'\"'", 'g')
3 let cmd = "echo '" . cliptext . "' | clsync.py"
4 call system(cmd)
5endfunction
6nmap ,c :call SyncClipboard()<CR>
こんな感じなのを.vimrcに追加すればOK。最後にyankしたものが,cでホストのWindowsのクリップボードに送られます。
追記: っとよく考えたらvmw copyとまったく一緒。.vimrcのclsync.pyの部分をvmw copyに置き換えれば同じように動作する。ただ、vmwの説明には
コピーするテキストに改行コード以外の非 ASCII 文字を含めることはできません。 ゲストおよびホスト OS によっては、キャリッジリターンの付与・除去が行われ ます。 コピー可能なテキストの最大長は約 65,000 バイトです。
ってある。 今回作ったモノの場合はnkfをかませているのでもちろんいつでも日本語オーケー。 それ以上は深くみてないけど、UTF-8だと日本語でもvmw copyしても問題なさそうだ。EUC-JPの「ほげほげ」とかいう内容のtest.txtをvmw copy test.txtとかするとダメだった。
ま、というわけで、 cat test.txt | nkf -w | vmw copyで万事解決なんだけど。
というわけでこのツールは使われないまま終わる(笑 coLinuxはよく知らないけど、coLinuxにこういうホストOSへのクリップボードコピーコマンドがないなら、coLinuxでは役に立つかも。