Zsh tmux Emacs Vim で文字情報を共有する。MacOSX Windowsなど複数間PCもOK| Clipss

| コメント(0) | トラックバック(0)

※ 2013/8/30 TravisCl自動テスト機能追加のため、installの記述を一部修正しました。

そんな訳で、Clipssと言うツールを作ってみましたので紹介です。

Clipss とは

  • テキストのコピペ共有するためのツールです。
  • zsh tmux Emacs vim ではyank killなどにフックしてます。
  • Emacsなどtmuxで複数画面、多重プロセス起動していても、buffer共有します。
  • MacOSX windowsなどではクリップボードを監視してます。
  • 複数PC間でも共有OKです。
  • Ruby使って一部の同期部分を動かしてます。
  • 複数PC間はhttpで通信してます。

例、こんな使い方ができます。

  1. Emacsの画面で、

    hello worldと入力. 行頭に移動して C-k (kill-line)とする。

  2. 別 PC (windows)に移動して

    ペーストで張り付きます。

  3. また、別PC (windows)で、

    foo bar bazをコピーすると。

  4. もとPCのemacs画面で

    C-y (yank) すると、 foo bar bazが入力されます。

環境

Rubyのインストールは、rbenvと言うバージョン管理ツールがありますので下記参考まで。

インストール方法

ソース取得

cmd
$ cd ${HOME}
$ git    clone https://github.com/mukaer/clipss.git
$ cd     clippss
$ gem    install bundle
$ bundle install --without development test

MacOSX clipboard

MacOSXのiterm2などでtmuxを動かしていると。pbcopy pbpasteが動きません。 そこで、下記を取ってくると動きますのでインストールします。

example install

cmd
$ cd ~
$ git  clone https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard
$ cd   tmux-MacOSX-pasteboard
$ make reattach-to-user-namespace 
$ cp   reattach-to-user-namespace  /usr/local/bin

zsh

CLIPSS_FILEはRAMDISKの場所指定なんかを推奨します。

~/.zshrc
export CLIPSS_PATH="${HOME}/clipss"
export CLIPSS_FILE="/tmp/clipss_file.txt"
export CLIPSS_PORT="9116"
export CLIPSS_REMOTE_SV="http://192.168.0.100:9116 http://192.168.0.101:9116"
source ${CLIPSS_PATH}/zsh/clipss.zsh
clipss_initialize


bindkey '^Y'  clipss+yank
bindkey '^k'  clipss+kill-line
bindkey '^[w' clipss+copy-region-as-kill
bindkey '^W'  clipss+backward-kill-word-or-kill-region

zshの再起動は下記コマンドから

cmd
$ zsh

tmux

tmux1.8からcopy-pipeって記述がありがたいことにできたのでこいつを使います。

~/.tmux.conf
bind-key -t emacs-copy  M-w  copy-pipe "${CLIPSS_PATH}/bin/clipss_push"  #tmux 1.8 conf gramma
bind-key ]  run 'tmux load-buffer -- $CLIPSS_FILE;tmux paste-buffer --;'

emacs

~/.emacs
(add-to-list 'load-path (concat (getenv "CLIPSS_PATH") "/emacs"))
(require 'clipss)
(setq clipss-path (getenv "CLIPSS_PATH") )
(clipss-init)

vim

~/.vimrc
source  ${CLIPSS_PATH}/vim/clipss.vim
nmap yy yy:call Clipss_Push()<CR>
nmap p :call Clipss_Pop()<CR>

残りの設定&使い方

別PCのURL指定方法は下記2つあります。

  • zsh export CLIPSS_REMOTE_SV
  • ruby clipss/config/config.rb.

Rubyのconfig.rb を使うなら、設定を上書します。

cmd
$ cd clipss/config/
$ cp config.rb.template  config.rb
clipss/config/config.rb
config.remote_svs  = ["http://192.168.0.100:9116",
                        "http://192.168.0.101:9116"]

下記コマンドでClipssサーバーを立ち上げますので、ローカルPCと別PCで実行します。

cmd
$ clipss_httpd    #path clipss/bin/clips_httpd

ブラウザーでアクセスしてみます。

http://localhost:9116

おわり

Emacsの部分なんか秘伝のレシピみたいな感じで、放置しており、 結構前に作っていましたが全く整理してなかったんで この機会に全部オープンできるよう整理してみました。

当初は、MacOSXやwindowsのクリップボードの監視機能は捨てていたんですが 使っているとどうしても欲しくなり追加することになりました。 それで、そんな機能は設計初期から捨ててたんで ほぼ作りなおしと言う名のリファクタリングをいっぱいしました(笑) 8/10からコミットログがほぼ全部リファクタになってる・・・

不明点や質問、ツッコミなどありましたらTwitterなどでお待ちしてます。 また、気に入ってもらえたら、GitHubのスター、はてブなんかポチってくれると嬉しいです!

関連記事

トラックバック(0)

トラックバックURL: http://mukaer.com/cgi-bin/mt/mt-tb.cgi/109

コメントする

PR

PR





検索

Loading

メニュー

twitter