私は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-pipe
xtermエスケープシーケンスを使用して選択も設定され、コピーされたデータをttyに送信します。 tmuxはコピーされたテキスト全体を正しく送信しますが、端末にはデータを受信するためのバッファサイズが制限されている可能性があります。これはティーモックス#1119。
時には、呼び出しがxclip
バックグラウンドに配置され、組み込みのクリップボード設定操作の後に完了する可能性があるため、機能することがあります。また、端末を更新してOSC 52サポートを実装する場合(例:キンチャン)。
あなたのオプションは次のとおりです。
set-option -g set-clipboard off
tmux 構成に追加- 可能であれば、端末でより高いバッファサイズ制限を設定(または質問)し、
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
役に立たないと思います。