tmux のコピーモードでのコピーがうまくいかない件
イントロ
告白すると tmux
+ reattach-to-user-namespace
でコピーできます! って記事を見てその通りにやってみるものの、うまくいかない人でした。
ようやくこの病気を克服したので残す。
tmux 1.8 のお話。
現象
どううまくいかないかというと、長い文字列をコピーしようとすると失敗する。
確かにコピーしたはずの文字列が、何故か truncate されてしまう現象といったらいいのだろうか。
ちなみに文字列が短かったりすると、ちゃんとコピーできる。
今までは文字が切れそうなら option
押しながらドラッグしていたが、相当苦しかった。
今まで
set-option -g default-command "reattach-to-user-namespace -l zsh"
曰く、tmux 上で pbcopy/pbpaste がうまく動かないらしく、そのバグを直した wrapper が reattach-to-user-namespace
である、とのこと。
そこで上記の設定を追加することで、tmux 上で pbcopy/pbpaste 使える、という話をよく聞く。
だがこれだけだとダメだった。
解決法
以下の二行を .tmux.conf
に追加する。
bind -t emacs-copy M-w copy-pipe "reattach-to-user-namespace pbcopy" bind -t emacs-copy C-w copy-pipe "reattach-to-user-namespace pbcopy"
デフォルトでは M-w の方には copy-pipe が設定されておらず、文字が切れてしまうようだ。
C-w は copy-pipe されていたが、M-w は copy-pipe されておらず、いつも M-w を使っていたので気付かなかった。
M-w でも C-w でも両方 copy-pipe するためには、両者設定を書く必要がある。
ちゃんと設定されたかどうかは、以下のコマンドで確認できる。-t
は key-map のデーブルを指定するオプション。(テーブルだから t )
tmux list-keys -t emacs-copy ... C-w copy-pipe "reattach-to-user-namespace pbcopy" M-w copy-pipe "reattach-to-user-namespace pbcopy" ...
copy-pipe
されていたら、設定されている証拠。