TL; DR
... | tmux loadb -
tmux saveb - | ...
คำอธิบายและความเป็นมา
ใน tmux สำเนาทั้งหมด / วางกิจกรรมไปผ่านสแต็คบัฟเฟอร์ที่ด้านบน (ดัชนี 0) เป็นข้อความที่คัดลอกส่วนใหญ่เมื่อเร็ว ๆ -b
นี้และจะนำมาใช้สำหรับการวางเมื่อไม่มีดัชนีบัฟเฟอร์ที่มีให้อย่างชัดเจนด้วย คุณสามารถตรวจสอบบัฟเฟอร์ปัจจุบันด้วยtmux list-buffers
หรือทางลัดเริ่มต้น+tmux-prefix#
มีสองวิธีในการไพพ์เข้าสู่บัฟเฟอร์ tmux ใหม่ที่ด้านบนของสแต็กset-buffer
การรับอาร์กิวเมนต์สตริงและload-buffer
การโต้แย้งไฟล์ ในการไพพ์ลงในบัฟเฟอร์คุณมักต้องการใช้load-buffer
กับ stdin เช่น:
print -l **/* | tmux loadb -
การวางกลับเข้าไปในตัวแก้ไขและสิ่งนี้ค่อนข้างชัดเจน ( tmux-prefix+ ]หรืออะไรก็ตามที่คุณผูกพันpaste-buffer
) อย่างไรก็ตามการเข้าถึงการวางจากด้านในของเปลือกไม่ใช่เพราะการเรียกpaste-buffer
จะเขียนการวางลงใน stdin ซึ่งสิ้นสุดลงในการแก้ไขเทอร์มินัลของคุณ บัฟเฟอร์และการขึ้นบรรทัดใหม่ใด ๆ ในการวางจะทำให้เชลล์ดำเนินการตามที่วางไว้ (อาจเป็นวิธีที่ดีในการทำลายวันของคุณ)
มีสองวิธีในการเข้าถึงสิ่งนี้:
tmux pasteb -s ' '
: -s
แทนที่ส่วนท้ายบรรทัดทั้งหมด (ตัวคั่น) ด้วยตัวคั่นที่คุณระบุ อย่างไรก็ตามคุณยังคงได้รับพฤติกรรมpaste-buffer
ซึ่งหมายความว่าการวางลงในบัฟเฟอร์แก้ไขเทอร์มินัลซึ่งอาจเป็นสิ่งที่คุณต้องการ แต่มักจะไม่
tmux showb | ...
: show-buffer
พิมพ์บัฟเฟอร์ที่ stdout และเกือบจะเป็นสิ่งที่จำเป็น แต่เป็นคริสจอห์นสันกล่าวถึงในการแสดงความคิดเห็น , show-buffer
การดำเนินการเข้ารหัสฐานแปดของที่ไม่สามารถพิมพ์อักขระ ASCII และอักขระที่ไม่ใช่ ASCII นี้โชคไม่ดีที่มักจะแบ่งพอที่จะเป็นที่น่ารำคาญกับสิ่งที่ง่ายชอบ 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 (เช่นอักขระละตินที่เน้นเสียง ฯลฯ ) คุณสามารถใช้tmux save-buffer -
ถ้าคุณต้องการไบต์ดิบ (นี่คือสิ่งที่คุณต้องการ)