ใน Vim วิธีที่ยอดเยี่ยมในการดึงเอาท์พุทจากบรรทัดคำสั่งคืออะไร


14

ถ้าฉันอยู่ในกลุ่มและต้องการเอาท์พุทบางส่วนจากบรรทัดคำสั่งและตะปูลงบนไฟล์ปัจจุบันของฉันฉันสามารถเรียกใช้นี้:

:! echo "foo" >> %

ที่จะผนวก "foo" ลงในไฟล์ปัจจุบันของฉันและฉันจะต้องโหลดซ้ำ

มีวิธีที่สง่างามกว่านี้ไหม - เอาท์พุทนั้นเข้าไปในบัฟเฟอร์ที่ฉันสามารถแปะได้ไหม?

คำตอบ:


24

ใช่:

:r !echo "foo"

ดู

:help :r!

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

:let @a = system('echo "foo"')

ตอนนี้การส่งออกของคำสั่ง (รวมทั้งขึ้นบรรทัดใหม่) aคือในการลงทะเบียน ดู

:help let-@
:help system()

หลังจากดูความช่วยเหลือและการทดลองฉันเห็นว่า 1) :rสั้นสำหรับ "อ่าน" (เพื่อให้คุณพิมพ์ 'อ่าน' หรือเพียงแค่ 'r' และมันเป็นคำสั่งเดียวกัน) และ 2) การทำ:r path/to/foo.txtจะแทรกเนื้อหาของสิ่งนั้น ไฟล์หลังจากเคอร์เซอร์
Nathan Long

อีกทั้ง - ฉันไม่รู้เกี่ยวกับการsystemโทร ที่น่ากลัว!
Nathan Long

1
ฉันก็ไม่รู้เหมือนกันว่าคุณสามารถตั้งค่าการลงทะเบียนด้วยตนเองได้เช่นlet @a = 'foo'กัน หนึ่งแนวคิดที่น่าสนใจคือหลังจากทำการค้นหาและแทนที่คุณสามารถบันทึกข้อความค้นหาลงทะเบียนเพื่อวางที่อื่นโดยทำlet @a = @/- "ทำให้การลงทะเบียนประกอบด้วยสิ่งที่ / การลงทะเบียนประกอบด้วยคือการค้นหาล่าสุดของฉัน"
Nathan Long

1
@ นาธานลอง: ไม่เป็นไร วิธีอื่น ๆ ในการวางจาก / register คือ 1) เพื่อดำเนินการ:put /เพื่อใส่เนื้อหาการลงทะเบียนในบรรทัดถัดไปและ 2) ในขณะที่อยู่ในโหมดแทรกให้พิมพ์ Ctrl-R ตามด้วย/การแทรกเนื้อหาลงทะเบียนที่ตำแหน่งเคอร์เซอร์ สำหรับข้อมูลเพิ่มเติมเกี่ยวเหล่านั้นเห็นและ:help :put :help i_CTRL-R
garyjohn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.