เป็นไปได้หรือไม่ที่จะมีเอาท์พุตเป็น:! คำสั่งในการแยกมากกว่าทั้งหน้าต่าง?


11

หากฉันมีเซสชันเป็นกลุ่มที่มีสองแยกเมื่อฉันรัน:!คำสั่งผลลัพธ์จะปรากฏในหน้าต่างทั้งหมด เป็นไปได้หรือไม่ที่จะแสดงผลลัพธ์เฉพาะส่วนแบ่งที่ใช้งานอยู่


2
ไม่เป็นไปไม่ได้ เอาต์พุตหาก:!แสดงในบรรทัดคำสั่งซึ่งมีเพียงรายการเดียวเท่านั้นและสามารถอยู่ที่ด้านล่างของหน้าจอ ที่ดีที่สุดที่ฉันสามารถคิดคือการสร้างบัฟเฟอร์ใหม่ /: แยกใต้หนึ่งในปัจจุบัน ...
มาร์ติน Tournoij

@Carpetsmoker สำหรับฉันผลลัพธ์ของ:!ไม่ไปที่บรรทัดคำสั่ง แต่เซสชัน vim จะหายไปและหน้าต่างเทอร์มินัลทั้งหมดจะแสดงเอาต์พุตของเทอร์มินัลรวมถึงสิ่งที่พิมพ์ก่อนที่จะvimถูกเรียกใช้
drs

1
อาจเป็นเพราะเทอร์มินัลที่คุณใช้และ / หรือการTERMตั้งค่า?
Martin Tournoij

ความแตกต่างนี้เกี่ยวข้องกับaltscreen (ในscreen) หรือหน้าจอทางเลือก (ในtmux)
tommcdo

คำตอบ:


8

คุณสามารถใช้คำสั่งนี้:

:new | 0read ! command

สิ่งนี้จะเปิดการแบ่งใหม่และวางผลลัพธ์ของคำสั่งในการแยกนี้ ( แม้ว่าจะไม่ได้อยู่ในการแบ่งที่ใช้งานอยู่ในปัจจุบันตามที่คุณกล่าวถึง )

ใหม่ - สร้างการแยกใหม่

อ่าน - เพื่อรับเอาต์พุตคำสั่ง

command - คำสั่งจริง


6

คุณสามารถสร้างคำสั่งเพื่อทำสิ่งนี้:

  1. เปิดตัวแยกใหม่ (หรือแท็บ)
  2. เรียกใช้คำสั่งและแสดงผลลัพธ์ในการแยก (หรือแท็บ)

คำสั่งจะเป็นดังนี้:

:Rsplit command

หรือ

:Rtab command

ในของ.vimrcคุณคุณสามารถเขียนสิ่งนี้:

" execute a command and show its output in a split window
command! -nargs=* -complete=shellcmd Rsplit execute "new | r! <args>"

" execute a command and show its output in a new tab
command! -nargs=* -complete=shellcmd Rtab execute "tabnew | r! <args>"

:help :commandคุณสามารถหาวิธีที่จะทำให้คำสั่งของคุณเองด้วย


1

นั่นเป็นไปไม่ได้ คุณจะต้องแบ่งหน้าจอของคุณด้วยเครื่องมืออื่นเช่น tmux (IIRC), หน้าจอ, ...

หากคุณไม่จำเป็นต้องมีการโต้ตอบกับโปรแกรมดำเนินการอย่างไรที่คุณสามารถนำเข้าผลโดยตรงในหน้าต่างใด ๆ (ในความรู้สึกที่เป็นกลุ่ม:h windows) :r!command lineที่คุณต้องการด้วย:h :r!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.