ฉันมีรหัสด้านล่าง:
Hello
There
I am some code
และต้องการเพิ่มโค้ดไว้ข้างหน้าเช่น:
I said Hello
I said There
I said I am some code
ดังนั้นฉันจะเพิ่มคำนำหน้าให้กับแต่ละบรรทัดได้อย่างไร
ฉันมีรหัสด้านล่าง:
Hello
There
I am some code
และต้องการเพิ่มโค้ดไว้ข้างหน้าเช่น:
I said Hello
I said There
I said I am some code
ดังนั้นฉันจะเพิ่มคำนำหน้าให้กับแต่ละบรรทัดได้อย่างไร
คำตอบ:
คุณสามารถเพิ่มคำนำหน้าด้วยซึ่งถูกผูกไว้กับM-x string-rectangle
C-x r t
นี้เป็นส่วนหนึ่งของชุดของคำสั่งที่ดำเนินการในการเลือกรูปสี่เหลี่ยมผืนผ้า ; อันนี้แทรกข้อความที่ทุกบรรทัดในสี่เหลี่ยมผืนผ้า
เริ่มต้นด้วยการตั้งเครื่องหมายที่จุดเริ่มต้นของบรรทัดแรกและเลื่อนเคอร์เซอร์ไปที่อักขระตัวแรกของบรรทัดสุดท้ายที่คุณต้องการนำหน้า:
*Hello
There
▮I am some code
จากนั้นใช้C-x r t
ใส่คำนำหน้าของคุณ ( I said
) RET
และกด สิ่งนี้จะเพิ่มข้อความในแต่ละบรรทัดในสี่เหลี่ยมผืนผ้า:
I said Hello
I said There
I said I am some code
หากคุณไม่ได้จัดเคอร์เซอร์ของคุณในคอลัมน์เดียวกับเครื่องหมายของคุณมันจะเขียนทับส่วนนั้นของสี่เหลี่ยมผืนผ้า:
*Hello
There
I am▮ some code
ด้วยผลลัพธ์คำสั่งเดียวกันใน:
I said o
I said e
I said some code
M-x string-insert-rectangle
ทางเลือกคือการใช้งาน มันคล้ายกันมาก แต่string-insert-rectangle
จะแทรกที่จุดเริ่มต้นของแต่ละบรรทัดของสิ่งที่เลือกขณะที่string-rectangle
แทนที่ดังนั้นคุณจะต้องแม่นยำมากขึ้นเกี่ยวกับสิ่งที่คุณเลือกหากคุณไม่ต้องการเขียนทับอะไรเลย
คุณสามารถใช้หลายเคอร์เซอร์โหมดเพื่อวางเคอร์เซอร์ในทุกบรรทัด จากนั้นข้อความที่คุณพิมพ์จะถูกแทรกในแต่ละบรรทัด
คุณจะเริ่มต้นด้วยจุดที่จุดเริ่มต้นของชิ้นส่วนของรหัส:
▮Hello
There
I am some code
จากนั้นกดC->สองครั้ง (นี่คือการโยงคีย์ที่แนะนำคุณต้องตั้งค่าด้วยตัวคุณเอง) สิ่งนี้จะสร้างเคอร์เซอร์พิเศษสองอันในสองบรรทัดต่อไปนี้:
▮Hello
▮There
▮I am some code
I said
ประเภทแล้ว ข้อความจะถูกเพิ่มในแต่ละบรรทัด:
I said ▮Hello
I said ▮There
I said ▮I am some code
ในที่สุดกดRETเพื่อออกจากโหมดเคอร์เซอร์หลายและออกจากจุดที่เคอร์เซอร์สุดท้าย:
I said Hello
I said There
I said ▮I am some code
นี่คือวิดีโอที่แสดงวิธีการทำงาน
โดยส่วนตัวแล้วฉันชอบreplace-regexp
(แทนที่ "^" ด้วย "ฉันพูด")
อีกทางเลือกหนึ่งคือการใช้มาโครซึ่งสามารถจัดการงานได้มากกว่าการเลือกรูปสี่เหลี่ยมผืนผ้าหรือเคอร์เซอร์หลายตัวแม้ว่าจะเป็น clunkier เล็กน้อยสำหรับกรณีนี้
วางเคอร์เซอร์ที่จุดเริ่มต้นของบรรทัดแรกและกดF3เพื่อเริ่มการบันทึกแทรกข้อความย้ายเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดถัดไปและกดF4เพื่อหยุดการบันทึก จากนั้นกดF4อีกครั้งเพื่อทำซ้ำแมโครC-2 F4เพื่อทำซ้ำสองครั้งหรือC-0 F4ทำซ้ำจนกว่าจะพบข้อผิดพลาด (เช่นเส้นขาด)
คุณสามารถติดตั้งความชั่วร้ายและทำมันได้หลายวิธีเช่นกัน - ฉันชอบการเลือกบล็อกภาพโดยใช้Ctrl+ Vเพื่อทำเครื่องหมายแต่ละบรรทัดแล้วShift+ Iเพื่อแทรกจากนั้นพิมพ์ข้อความที่คุณต้องการแทรกและกดปุ่มสุดท้ายESCเพื่อออกจากโหมดแทรกและ ข้อความจะถูกเติมให้แต่ละบรรทัด สิ่งนี้คล้ายกับการเลือกสี่เหลี่ยมของ emacs แต่มีการกดแป้นน้อยกว่าเล็กน้อย
นี่คล้ายกับคำตอบของ artagnon แต่replace-regexp
ไม่มีข้อผูกมัดกับคีย์ใด ๆ
ดังนั้นฉันใช้จริงquery-replace-regexp
ซึ่งถูกผูกไว้โดยค่าเริ่มต้นC-M-%
แล้วแทนที่^
ด้วยคำนำหน้าให้I said
แล้วพิมพ์!
เพื่อแทนที่ทั้งหมดโดยไม่ต้องแจ้งอีกต่อไป
หากคุณcua-mode
เปิดใช้งานแล้ว:
I said
เป็นข้อความที่จะแทรกฉันชอบcua-mode
วิธีการทำงานมากกว่าสี่เหลี่ยมจัตุรัสมาตรฐานของ Emacs ซึ่งเทียบเท่า:
I said
RET เพื่อแทรกข้อความcua-mode
บันทึกสองกดปุ่มเมื่อเทียบกับมาตรฐาน Emacs สี่เหลี่ยมผืนผ้า
แต่สำหรับฉันข้อดีเพิ่มเติมของโหมด cua คือฉันสามารถต่อท้ายข้อความในสี่เหลี่ยมผืนผ้าได้ (โดยส่วนตัวแล้วฉันไม่รู้วิธีต่อท้ายข้อความด้วยสี่เหลี่ยมผืนผ้ามาตรฐานของ Emacs) ด้วยโหมดเชาก็เป็นหนึ่งRETกดปุ่มเท่านั้น inputed I said
ก่อน