回答:
tl; dr
... | tmux loadb -
tmux saveb - | ...
説明と背景
tmuxでは、すべてのコピー/貼り付けアクティビティはバッファスタックを通過します。トップ(インデックス0)は最新のコピーテキストであり、バッファインデックスが明示的に提供されていない場合の貼り付けに使用され-b
ます。tmux list-buffers
またはデフォルトのショートカットtmux-prefix+を使用して、現在のバッファーを検査できます#。
スタックの一番上にある新しいtmuxバッファにパイピングするにはset-buffer
、文字列引数をload-buffer
取り、ファイル引数をとる2つの方法があります。通常load-buffer
、stdinで使用するバッファにパイプするには、次のようにします。
print -l **/* | tmux loadb -
編集者にこのバックを貼り付けると、そのようなはかなり明白である(tmux-prefix+ ]またはものは何でもあなたがバインドしましpaste-buffer
呼び出しがあるため、シェルの内部からペーストにアクセスし、しかし、されていないために)paste-buffer
あなたの端末の編集で終わる標準入力にペーストを、書きますバッファ、およびペースト内のすべての改行により、シェルはこれまでに貼り付けられたものをすべて実行します(1日を台無しにする素晴らしい方法)。
これにアプローチする方法はいくつかあります。
tmux pasteb -s ' '
:-s
すべての行末(区切り文字)を、指定した区切り文字に置き換えます。しかし、あなたはまだその動作を得るpaste-buffer
ので、ペーストは最終的に端末編集バッファに行き着きます。これはあなたの望むものかもしれませんが、通常そうではありません。tmux showb | ...
:show-buffer
バッファーをstdoutに出力します。これはほとんど必要なものですが、Chris Johnsenがコメントで述べているように、show-buffer
印刷不可能なASCII文字と非ASCII文字の8進エンコードを実行します。十分な頻度でこの残念な休憩は、NULL終端文字列やアクセントラテン文字(例えば。(zshの中)のようにもシンプルなもので、いらいらすることにするprint -N á | tmux loadb - ; tmux showb
版画\303\241\000
)。tmux saveb - | ...
:save-buffer
単に逆の処理をload-buffer
行い、未変更のバイトを変更せずにstdinに書き込みます。これはほとんどの場合に望ましいことです。その後、別のパイプを組み立て続けることができます。通過| xargs -n1 -I{} ...
など、賢明なプロセスラインに..
tmux show-buffer
C0制御文字および非ASCIIバイト(アクセント付きラテン文字など)の8進エンコードを行います。tmux save-buffer -
生のバイトが必要な場合に使用できます(通常はこれが必要です)。