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で)。
あとは
function! SyncClipboard()let cliptext = substitute(getreg(), "'", "'\"'\"'", 'g')let cmd = "echo '" . cliptext . "' | clsync.py"call system(cmd)endfunctionnmap ,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では役に立つかも。
No comments yet
trackback uriLeave a Comment