- 追記: 9/28
現在,Webアプリを作成する際に,MacからLinuxサーバへログインして作業しています.
tmuxには,デフォルトでコピーモードが用意されているようですが,どうにも使いづらかったので,マウスを使ってコピーアンドペーストする方法を探していました.
リモートログインせずに同様のことを行う記事は数多くあったのですが,今回の状況はWeb検索でもなかなか解決しなかったので,ログを載せておきます.
やりたかったこと
Mac PC (OS X Marvericks)から,Linuxサーバ(Ubuntu 13.10)にSSHを用いたリモートログインを行い,接続先のLinuxサーバでtmuxを立ち上げた状況を仮定します.
SSH接続には公開鍵認証を使っているとします.
このtmux上でマウスによるコピーアンドペーストを行いたいです.
以下,Mac PCを「クライアント」,Linuxサーバを「サーバ」と呼ぶことにします.
手順
クライアントの設定
こちらの,"Macの場合"の設定を参考にする.
.zshrcは上記の記事の,「追記(2013-07-08)」の設定を参照した.
lethe2211@client$ brew install reattach-to-user-namespace
set-window-option -g mode-mouse on
alias tmux-copy='tmux save-buffer - | pbcopy'
if [ -n "$TMUX" ]; then
alias pbcopy="reattach-to-user-namespace pbcopy"
fi
こちらの記事では,OSによって.zshrcを使い分けているが,今回はあまり気にしない方向で.
設定ができたら,クライアント上のtmuxでコピペができているか確認する.
lethe2211@client$ tmux
# マウスで適当に領域を指定する
lethe2211@client$ tmux-copy
lethe2211@client$ tmux save-buffer - # またはC-vを押下
これでコピーした領域の文字が標準出力に出てくればOK.
.ssh/configの設定
クライアント・サーバ間でクリップボードを共有するためには,X11プロトコルの転送が必要らしい(よくわからない).
ubuntu - Using clipboard through SSH in vim - Super User
こちらを参考に,クライアントの~/.ssh/configを設定する.
Host {myserver}
HostName {myserver}
User {myusername}
IdentityFile {/path/to/your/private/key}
ForwardX11 yes
ForwardX11Trusted yes
重要なのは,"ForwardX11"と,"ForwardX11Trusted"を"yes"にしておくこと.
{}内は各自読み替えて下さい.
サーバの設定
まず,サーバ側がX11転送を許可しているかを確認する.
こちらを参考にする.
lethe2211@server$ cat /etc/ssh/sshd_config | grep X11
これで,
X11Forwarding yes
みたいな記述が見つかればOK.
あとは,
と,
tmux上のコピペをうまく設定する方法
の"Ubuntuの場合"
を参考に,xselのダウンロードとaliasの設定を行う.
lethe2211@server$ sudo apt-get install xsel
set-window-option -g mode-mouse on
alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'
alias tmux-copy='tmux save-buffer - | pbcopy'
これでできたはず.
Mac上での確認と同じようにして,問題がなければOK.
"tmux-copy"の初回実行の際に,XQuartzのインストールを求められるかもしれない.
その際は,素直にインストールする.
領域の選択後に,いちいち"tmux-copy"を入力するのが少し面倒ですが,かなりマシになったかと思います.
追記: 9/28
指摘をいただき,「option + 範囲選択」で,ここでやりたかったことはできることがわかりました…
今までの苦労は何だったのか…