tl; dr
... | tmux loadb -
tmux saveb - | ...
Giải thích & Bối cảnh
Trong tmux, tất cả hoạt động sao chép / dán đi qua ngăn xếp bộ đệm trong đó đỉnh (chỉ số 0) là văn bản được sao chép gần đây nhất và sẽ được sử dụng để dán khi không có chỉ số bộ đệm được cung cấp rõ ràng -b
. Bạn có thể kiểm tra bộ đệm hiện tại bằng tmux list-buffers
hoặc phím tắt mặc định tmux-prefix+ #.
Có hai cách để dẫn vào bộ đệm tmux mới ở đầu ngăn xếp, set-buffer
lấy đối số chuỗi và load-buffer
lấy đối số tệp. Để chuyển vào bộ đệm, bạn thường muốn sử dụng load-buffer
với stdin, vd.:
print -l **/* | tmux loadb -
Tuy nhiên, việc dán lại vào trình chỉnh sửa và điều này khá rõ ràng ( tmux-prefix+ ]hoặc bất cứ điều gì bạn đã ràng buộc paste-buffer
), tuy nhiên, việc truy cập dán từ bên trong vỏ không phải là vì việc gọi paste-buffer
sẽ ghi dán vào stdin, kết thúc trong chỉnh sửa của thiết bị đầu cuối của bạn bộ đệm và bất kỳ dòng mới nào trong dán sẽ khiến shell thực thi bất cứ thứ gì đã được dán cho đến nay (có khả năng là một cách tuyệt vời để làm hỏng ngày của bạn).
Có một vài cách để tiếp cận điều này:
tmux pasteb -s ' '
: -s
thay thế tất cả các kết thúc dòng (dấu phân cách) bằng bất kỳ dấu phân cách nào bạn cung cấp. Tuy nhiên, bạn vẫn nhận được hành vi paste-buffer
có nghĩa là dán kết thúc trong bộ đệm chỉnh sửa thiết bị đầu cuối của bạn, có thể là những gì bạn muốn, nhưng thường thì không.
tmux showb | ...
: show-buffer
in bộ đệm thành thiết bị xuất chuẩn và gần như là những gì được yêu cầu, nhưng như Chris Johnsen đã đề cập trong các nhận xét , show-buffer
thực hiện mã hóa bát phân của các ký tự ASCII không in được và các ký tự không phải ASCII. Đây không may vi phạm thường xuyên đủ để được gây phiền nhiễu, thậm chí với những điều đơn giản như null chấm dứt chuỗi hoặc có dấu ký tự Latin (ví dụ. (Trong zsh) print -N á | tmux loadb - ; tmux showb
in \303\241\000
).
tmux saveb - | ...
: save-buffer
không chỉ đơn giản là đảo ngược load-buffer
và ghi các byte thô chưa được sửa đổi thành stdin, đó là điều mong muốn trong hầu hết các trường hợp. Sau đó, bạn có thể tiếp tục lắp ráp một đường ống khác, và vd. thông qua | xargs -n1 -I{} ...
để xử lý dòng khôn ngoan, vv ..
tmux show-buffer
sẽ thực hiện mã hóa bát phân các ký tự điều khiển C0 và các byte không ASCII (ví dụ: các ký tự Latinh có dấu, v.v.). Bạn có thể sử dụngtmux save-buffer -
nếu bạn muốn các byte thô (đây thường là những gì bạn muốn).