ฉันจะป้องกันการขึ้นบรรทัดใหม่ใน Vim ได้อย่างไรเมื่อใช้: r! date และคำสั่งเชลล์อื่น ๆ ?


0

เวลาส่วนใหญ่ของฉันเมื่อฉันใส่วันที่ฉันพยายามที่จะทำในช่วงกลางของบรรทัด ตามค่าเริ่มต้นดูเหมือนว่า:r!รสชาติของการแทรกจะทำให้เกิดผลลัพธ์ในบรรทัดใหม่เสมอ สิ่งนี้ทำให้ฉันรู้สึกบางอย่างเนื่องจากคำสั่งเชลล์ส่วนใหญ่สร้างบรรทัดใหม่ขึ้นมาก่อนที่จะแสดงผลลัพธ์คำสั่ง ในกรณีของการปอกเปลือกออกจาก Vim สำหรับคำสั่งเล็ก ๆ เช่นdate +%xนี้ไม่ได้เป็นพฤติกรรมที่ฉันต้องการ ฉันจะแก้ไขสิ่งนี้ได้อย่างไร

คำตอบ:


2

ในโหมดแทรกคุณสามารถใช้Ctrl-R=เพื่อแทรกนิพจน์ที่ตำแหน่งเคอร์เซอร์ปัจจุบัน

คุณสามารถใช้เช่นsystem()ฟังก์ชั่นโชคไม่ดีที่สิ่งนี้แก้ได้เพียงครึ่งเดียวของปัญหาเนื่องจากการส่งออกของsystem()จะมีอย่างน้อยที่สุดก็จะมีการเพิ่มบรรทัดสุดท้ายเพื่อมันจะทำลายเส้นหลังจากอินพุต สำหรับการแก้ปัญหาวิธีการหลีกเลี่ยงการขึ้นบรรทัดสุดท้ายผู้ที่อยู่ในที่system()กรณีที่มีลักษณะที่นี้คำตอบที่ vi.stackexchange ของฉัน

(เพื่อให้คุณสามารถใช้Ctrl-R=รายการระบบ ('วันที่') [0] Enter)


ทางเลือกอื่นสำหรับการแทรกวันที่ที่ตำแหน่งเคอร์เซอร์ปัจจุบันคือการใช้Ctrl-R=strftime ('% c')Enter

Ctrl-R=ใช้นิพจน์รีจิสเตอร์เพื่อแทรกเนื้อหา ท่านสามารถหาข้อมูลเพิ่มเติมกับ:help i_ctrl-rคำสั่งหรือดูเอกสารเกี่ยวกับ appspot


0

ฉันเชื่อว่าปัญหาไม่มากที่คำสั่งเชลล์มักจะจบลงด้วยการขึ้นบรรทัดใหม่ แต่นั่นreadคือคำสั่ง line-oriented (เช่นคำสั่งex ) มันมีอยู่ในรุ่นดั้งเดิมของedในปี 1970 ก่อนที่จะมีอยู่และกรณีการใช้งานทั่วไปคือการอ่านกลุ่มของเส้น (เช่นฟังก์ชั่น C หรือข้อความในย่อหน้า) จากไฟล์หนึ่งไปยังอีกไฟล์หนึ่ง ผู้ใช้ส่วนใหญ่ต้องการแทรกเป็นบรรทัดใหม่แยกส่วนใหญ่:r!command

คุณสามารถตรวจสอบ / :r!printf Tuesdayแสดงให้เห็นถึงนี้โดยการทำ แม้ว่าprintf Tuesdayคำสั่งจะไม่เขียนบรรทัดใหม่ (เนื่องจากคุณไม่ได้ระบุ\n) คุณจะได้รับTuesdayบรรทัดทั้งหมดด้วยตัวเอง

บางทีวิธีแก้ปัญหาที่ง่ายที่สุดคือการทำ i Enter Esc(เพื่อแบ่งบรรทัดปัจจุบัน) -หรือkเพื่อสำรองข้อมูลบรรทัดจากนั้นทำของคุณแล้วไปยังบรรทัดที่กลับมารวมกัน หากนี่เป็นสิ่งที่คุณทำบ่อยครั้งอาจเป็นประโยชน์ในการแมโคมาโคร:r!commandJJoin

การเปิดเผยข้อมูล: ฉันรู้viดีพอสมควร แต่มีหลายสิ่งvimที่ฉันยังไม่ได้เรียนรู้ vimอาจจะมีวิธีที่ง่ายต่อการทำเช่นนี้ใน

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