คุณอาจใช้เป็นกลุ่มได้ :!
คำสั่งให้เรียกใช้ tmux send-keys
เพื่อส่ง Control-R † ไปที่บานหน้าต่างอื่นของคุณ ตั้งแต่ send-keys
สามารถส่งการกดแป้นไปที่บานหน้าต่างใด ๆ (ไม่ใช่แค่ที่ใช้งานอยู่) คุณไม่จำเป็นต้องสลับบานหน้าต่างที่ใช้งานอยู่
นี่คือการทำแผนที่เป็นกลุ่ม (คุณสามารถใส่ไว้ในของคุณ .vimrc
หรือเพียงวางลงใน :
แจ้งให้ลอง):
:map <Leader>rl :w<Bar>execute 'silent !tmux send-keys -t bottom C-r'<Bar>redraw!<C-M>
แผนที่นี้ \rl
ลำดับสำคัญ ( <Leader>
ค่าเริ่มต้นเป็น \
แต่สามารถกำหนดเองได้) ตามลำดับของคำสั่ง Vim (คั่นด้วย <Bar>
; ดู :help map_bar
):
- เขียนบัฟเฟอร์ปัจจุบันไปยังไฟล์
- เรียกใช้ tmux คำสั่งเพื่อส่ง Control-R ไปที่ด้านล่าง ‡ บานหน้าต่าง
เราใช้ execute
ที่นี่เพื่อที่คำสั่ง Vim ถัดไป ( redraw
) ไม่ได้เป็นส่วนหนึ่งของ :!
คำสั่งเชลล์
เราใช้ silent
คำสั่งคำนำหน้าเพื่อหลีกเลี่ยงการพรอมต์“ กด ENTER เพื่อดำเนินการต่อ”
คุณสามารถละเว้น slient
ถ้าคุณต้องการให้พรอมต์หรือต้องการดูผลลัพธ์ของ :!
คำสั่ง (เช่น tmux คำสั่งไม่ทำงานและคุณต้องการดูว่ามันมีข้อความแสดงข้อผิดพลาด)
- วาดหน้าจออีกครั้ง
โดยปกติจะเกิดขึ้นหลังจากพรอมต์“ กด ENTER” แต่เราจะระงับ silent
.
† ฉันไม่มี แมวป่าชนิดหนึ่ง อยู่ในมือ แต่ดูเหมือนว่า Control-R จะเป็นคีย์รีโหลดตามการค้นหาของฉันสำหรับ“ ลินซ์โหลด” “ โหลดไฟล์และรีเฟรชจอแสดงผล” ของคู่มือผู้ใช้)
‡ นอกเหนือจาก bottom
มีวิธีอื่นในการระบุบานหน้าต่างเป้าหมาย (ค้นหา "บานหน้าต่างเป้าหมาย" ใน tmux หน้าคน ):
.+1
, .-1
: ถัดไปบานหน้าต่างก่อนหน้าในหน้าต่างนี้
top
, bottom
, left
, right
และการรวมกันของ top
/ bottom
กับ left
/ right
(นั่นคือ bottom-left
)
%42
( tmux 1.5+): %
หมายเลขบานหน้าต่างที่ถูกแก้ไขจากตัวแปรสภาพแวดล้อม TMUX_PANE ของบานหน้าต่างเป้าหมาย
แบบฟอร์มสุดท้ายนี้อาจมีประโยชน์หากบานหน้าต่าง Lynx ของคุณไม่เหมือนเดิม tmux หน้าต่างเป็นอินสแตนซ์ของ Vim ของคุณ ก่อนเรียกใช้ Lynx ให้บันทึกค่าของ TMUX_PANE ลงในไฟล์ชั่วคราวจากนั้นอ่านไฟล์เพื่อจัดทำอาร์กิวเมนต์อาร์กิวเมนต์บานหน้าต่าง
# before running Lynx (anytime really, but "before" is usually scriptable)
echo "$TMUX_PANE" > /tmp/my-lynx-pane
# in the Vim :! command in the mapping:
tmux send-keys -t "$(cat /tmp/my-lynx-pane)" C-r