tmuxコピーパイプの切り抜きの選択

tmuxコピーパイプの切り抜きの選択

私はtmuxコピーパイプが選択項目を切り捨てることを確認しました(選択項目の最後の部分を省略)。

たとえば、

bind-key -T copy-mode-vi y send-keys -X copy-pipe "xclip -in -sel clipboard"

時には最初の100バイトだけがバッファにコピーされます。

xclipこれも起こったので、これが問題になるとは思いませんxsel

何らかの理由でファイルにパイピングしてスリープしてからxclipに渡すとうまくいきます。

bind-key -T copy-mode-vi y \
  send-keys -X copy-pipe "cat > /tmp/tmux_clip.txt" \; \
  run "sleep 0.1" \; \
  run -b "xclip -in -sel clipboard /tmp/tmux_clip.txt > /dev/null" \; \
  display "Clipboard Copy"

これは既知の問題ですか?この問題を解決する方法はありますか?

答え1

set-clipboardオプションをonまたはexternal(デフォルト)に設定し、端末がOSC 52をサポートしている場合は、copy-pipextermエスケープシーケンスを使用して選択も設定され、コピーされたデータをttyに送信します。 tmuxはコピーされたテキスト全体を正しく送信しますが、端末にはデータを受信するためのバッファサイズが制限されている可能性があります。これはティーモックス#1119

時には、呼び出しがxclipバックグラウンドに配置され、組み込みのクリップボード設定操作の後に完了する可能性があるため、機能することがあります。また、端末を更新してOSC 52サポートを実装する場合(例:キンチャン)。

あなたのオプションは次のとおりです。

  • set-option -g set-clipboard offtmux 構成に追加
  • 可能であれば、端末でより高いバッファサイズ制限を設定(または質問)し、copy-pipe完全に放棄してください。

キーワード:tmuxクリップボードが切り捨てられます。 tmuxはすべての文字をコピーしません。 tmux コピーが切り捨てられます。

答え2

私は同じ問題を見始めましたが、理由の良い説明はありません。ただし、tmux> = 2.5で提案されている解決策は次のものを超えています。https://unix.stackexchange.com/a/131187/44909私のためにこの問題を解決しました。具体的には、次のように.tmux.confします。

bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'

これが-and-cancelちょっと効果があるようです。ただ使うとcopy-pipe役に立たないと思います。

関連情報