ฉันมีสองไฟล์ที่เปิดเป็นกลุ่มแต่ละไฟล์ในหนึ่งบานหน้าต่าง tmux ฉันต้องการคัดลอกสมมติว่า 10 บรรทัดจากไฟล์หนึ่งไปยังอีก
ฉันจะทำสิ่งนี้สำเร็จโดยไม่ใช้เมาส์Copy-> ได้Pasteอย่างไร
ฉันมีสองไฟล์ที่เปิดเป็นกลุ่มแต่ละไฟล์ในหนึ่งบานหน้าต่าง tmux ฉันต้องการคัดลอกสมมติว่า 10 บรรทัดจากไฟล์หนึ่งไปยังอีก
ฉันจะทำสิ่งนี้สำเร็จโดยไม่ใช้เมาส์Copy-> ได้Pasteอย่างไร
คำตอบ:
คุณจะต้องใช้ทางลัด tmux สมมติว่าทางลัดคำสั่ง tmux ของคุณเป็นค่าเริ่มต้น: Ctrl+ bจากนั้น:
Ctrlโหมดป้อน+ b, [คัดลอก (?)
เลื่อนไปที่จุดเริ่มต้น / สิ้นสุดข้อความเพื่อเน้น
Ctrlspace
เริ่มเน้นข้อความ (บน Arch Linux) เมื่อฉันรวบรวม tmux จากซอร์สบน OSX และ Linux อื่น ๆSpaceโดยปกติแล้วมันจะใช้งานได้ ข้อความที่เลือกเปลี่ยนสีดังนั้นคุณจะรู้ว่าคำสั่งทำงาน
เลื่อนไปที่ด้านตรงข้ามของข้อความเพื่อคัดลอก
Alt+ wคัดลอกข้อความที่เลือกไปยังคลิปบอร์ด tmux (สำหรับ Mac ให้ใช้Esc+ w.)
เลื่อนเคอร์เซอร์ไปที่บานหน้าต่างตรงข้าม tmux หรือหน้าต่าง tmux ที่แตกต่างอย่างสิ้นเชิง วางเคอร์เซอร์ที่คุณต้องการวางข้อความที่คุณเพิ่งคัดลอก
Ctrl+ b, ]วางข้อความที่คัดลอกมาจากคลิปบอร์ด tmux
tmux ค่อนข้างดีที่คำสั่งการแมปไปยังแป้นพิมพ์ลัดที่กำหนดเอง
ดูCtrl+ b, ?สำหรับรายการเต็มรูปแบบของชุดแป้นพิมพ์ลัด
screenทางลัด: Ctrl + A [(เข้าสู่โหมดคัดลอก), Space(เริ่มการไฮไลต์), Enter(การไฮไลต์ที่สิ้นสุด), Ctrl + A ](วาง)
Enterคีย์
น่าเสียดายที่ฉันยังไม่สามารถเพิ่มความคิดเห็นในคำตอบของ Alex Leach ดังนั้นฉันจะรวมภาคผนวกที่นี่สำหรับผู้ใช้ Mac OS X:
byobu/ tmuxด้วยการตั้งค่าเริ่มต้นทั้งหมดใช้งานได้ Alt + w ไม่ทำงาน
หากคุณใช้ vim และ tmux บน macOS (ทดสอบบน macOS 10.12.2, tmux 2.3):
(สมมติว่าคีย์ผสมของprefixส่วนนำหน้าของ tmux คือส่วนนำหน้าคือctrl+ bในค่าเริ่มต้น)
ฉันกำลังเชื่อมต่อกับเซิร์ฟเวอร์ CentOS ของฉันบนเครื่อง Windows โดยใช้ZOC terminalของลูกค้าZOC นี่คือสิ่งที่ได้ผลสำหรับฉัน:
<prefix>+[<Space><Enter><prefix>+]คุณสามารถใช้บอร์ดคลิประบบด้วย "* y และ" * p แทนที่จะใช้ y และ p ปกติ
"+2yy- คัดลอกสองบรรทัดไปที่คลิปบอร์ด X11 "+dd- ตัดเส้นไปที่คลิปบอร์ด X11 "+p- วางคลิปบอร์ด X11
h,j,k,lในการ ย้ายฉันเคยเห็นบางครั้งบน ubuntu VM ของฉัน "+" การลงทะเบียนหายไปโดยไม่ทราบสาเหตุเพื่อตรวจสอบว่าคุณมีการ+ลงทะเบียนคุณสามารถพิมพ์:regและตรวจสอบว่ามีสตริง"+ในคอลัมน์แรกหรือไม่
yและpไปที่"+yและ"+pหรือไม่
หากคุณvimเปิดไว้จะเป็นการดีกว่าถ้าใช้ vim copy paste เพื่อคัดลอกข้อความ
Tmux copy paste จะทำงานได้อย่างไรก็ตามมีข้อเสียหลายประการ
ขั้นแรกเมื่อคัดลอกข้อความหลายบรรทัดคุณจะต้องเลือกหลายบรรทัด Tmux copy paste โดยทั่วไปไม่เข้าใจว่าvimมีหมายเลขบรรทัดหรือมีเครื่องหมายในร่อง gim (เช่นหมายเลขสัมพัทธ์ / หมายเลขสัมบูรณ์) เป็นผลให้มันจะคัดลอกเหล่านั้นเช่นกัน
ประการที่สองฉันได้พบว่าถ้าข้อความมีการจัดรูปแบบเฉพาะบางภาษาและคุณพยายามคัดลอกวางโดยใช้ tmux ไปเป็นกลุ่มนั้นจะทำให้การจัดรูปแบบยุ่งเหยิง set paste!นี้สามารถหลีกเลี่ยงโดยใช้ อย่างไรก็ตามสิ่งนี้ต้องใช้งานมากขึ้น
"+yเพื่อคัดลอกและ"+pวางVimกำเนิดมีวิธีการคัดลอกวางระหว่างบัฟเฟอร์เป็นกลุ่มและคลิปบอร์ดระบบโดยใช้อย่างใดอย่างหนึ่งหรือ"+y "*yแล้ววางใช้หรือ"+p "*pการทำเช่นนี้จะเป็นการคัดลอกตัวเลขที่เกี่ยวข้องในรางน้ำหรือเครื่องหมายสุ่มอื่น ๆ ซึ่งไม่เกี่ยวข้องกับเสียงเรียกเข้า
คู่ของตัวเลือกสำหรับการใช้ vim เนื่องจากลำดับทางลัด tmux ค่อนข้างยาวและฉันคิดว่ามันยากที่จะจำ
เช่นเดียวกับคำตอบข้างต้นที่กล่าวว่าคุณสามารถใช้"+yและ"*yเพื่อคัดลอกและจากนั้น"+pและ"*pตามลำดับเพื่อวาง หากคุณต้องการให้กลุ่มใช้คลิปบอร์ดเป็นค่าเริ่มต้นเพื่อให้คุณสามารถใช้งานy/pได้โดยตรง
set clipboard=unamed "sets the default copy register to be *
set clipboard=unamedplus "sets the default copy register to be +
แหล่งที่มาสำหรับคำสั่งคลิปบอร์ด: https://vi.stackexchange.com/questions/84/how-can-i-copy-text-to-the-system-clipboard-from-vim
:w /tmp/linesจากนั้น:r /tmp/linesในอีกกรณี) หรือถ้า Vim ของคุณรู้วิธีพูดคุยกับคลิปบอร์ดระบบของคุณคุณสามารถใช้+หรือ*ลงทะเบียนเพื่อหลีกเลี่ยงไฟล์ชั่วคราว