จะเพิ่มคำนำหน้าให้กับทุกบรรทัดได้อย่างไร


35

ฉันมีรหัสด้านล่าง:

Hello
There
I am some code

และต้องการเพิ่มโค้ดไว้ข้างหน้าเช่น:

I said Hello
I said There
I said I am some code

ดังนั้นฉันจะเพิ่มคำนำหน้าให้กับแต่ละบรรทัดได้อย่างไร

คำตอบ:


47

คุณสามารถเพิ่มคำนำหน้าด้วยซึ่งถูกผูกไว้กับ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

3
คุณเป็นคนที่สองที่จะได้รับคำตอบที่ดีป้าย :)
nicael

M-x string-insert-rectangleทางเลือกคือการใช้งาน มันคล้ายกันมาก แต่string-insert-rectangle จะแทรกที่จุดเริ่มต้นของแต่ละบรรทัดของสิ่งที่เลือกขณะที่string-rectangle แทนที่ดังนั้นคุณจะต้องแม่นยำมากขึ้นเกี่ยวกับสิ่งที่คุณเลือกหากคุณไม่ต้องการเขียนทับอะไรเลย
Jeff Clites

32

คุณสามารถใช้หลายเคอร์เซอร์โหมดเพื่อวางเคอร์เซอร์ในทุกบรรทัด จากนั้นข้อความที่คุณพิมพ์จะถูกแทรกในแต่ละบรรทัด

คุณจะเริ่มต้นด้วยจุดที่จุดเริ่มต้นของชิ้นส่วนของรหัส:

▮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

นี่คือวิดีโอที่แสดงวิธีการทำงาน



12

อีกทางเลือกหนึ่งคือการใช้มาโครซึ่งสามารถจัดการงานได้มากกว่าการเลือกรูปสี่เหลี่ยมผืนผ้าหรือเคอร์เซอร์หลายตัวแม้ว่าจะเป็น clunkier เล็กน้อยสำหรับกรณีนี้

วางเคอร์เซอร์ที่จุดเริ่มต้นของบรรทัดแรกและกดF3เพื่อเริ่มการบันทึกแทรกข้อความย้ายเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดถัดไปและกดF4เพื่อหยุดการบันทึก จากนั้นกดF4อีกครั้งเพื่อทำซ้ำแมโครC-2 F4เพื่อทำซ้ำสองครั้งหรือC-0 F4ทำซ้ำจนกว่าจะพบข้อผิดพลาด (เช่นเส้นขาด)


9

คุณสามารถติดตั้งความชั่วร้ายและทำมันได้หลายวิธีเช่นกัน - ฉันชอบการเลือกบล็อกภาพโดยใช้Ctrl+ Vเพื่อทำเครื่องหมายแต่ละบรรทัดแล้วShift+ Iเพื่อแทรกจากนั้นพิมพ์ข้อความที่คุณต้องการแทรกและกดปุ่มสุดท้ายESCเพื่อออกจากโหมดแทรกและ ข้อความจะถูกเติมให้แต่ละบรรทัด สิ่งนี้คล้ายกับการเลือกสี่เหลี่ยมของ emacs แต่มีการกดแป้นน้อยกว่าเล็กน้อย


7

นี่คล้ายกับคำตอบของ artagnon แต่replace-regexpไม่มีข้อผูกมัดกับคีย์ใด ๆ

ดังนั้นฉันใช้จริงquery-replace-regexpซึ่งถูกผูกไว้โดยค่าเริ่มต้นC-M-%แล้วแทนที่^ด้วยคำนำหน้าให้I saidแล้วพิมพ์!เพื่อแทนที่ทั้งหมดโดยไม่ต้องแจ้งอีกต่อไป


4

หากคุณcua-modeเปิดใช้งานแล้ว:

  • C-a เพื่อเลื่อนไปยังจุดเริ่มต้นของบรรทัด
  • C-RET เพื่อเริ่มสี่เหลี่ยมผืนผ้า
  • (ปุ่มลง) สองครั้งเพื่อเลื่อนไปที่บรรทัดที่สาม
  • I said เป็นข้อความที่จะแทรก
  • C-RET เพื่อสิ้นสุดสี่เหลี่ยม

ฉันชอบcua-modeวิธีการทำงานมากกว่าสี่เหลี่ยมจัตุรัสมาตรฐานของ Emacs ซึ่งเทียบเท่า:

  • C-a เพื่อเลื่อนไปยังจุดเริ่มต้นของบรรทัด
  • C-SPC เพื่อเริ่มสี่เหลี่ยมผืนผ้า
  • (ปุ่มลง) สองครั้งเพื่อเลื่อนไปที่บรรทัดที่สาม
  • C-x r t I said RET เพื่อแทรกข้อความ

cua-modeบันทึกสองกดปุ่มเมื่อเทียบกับมาตรฐาน Emacs สี่เหลี่ยมผืนผ้า

แต่สำหรับฉันข้อดีเพิ่มเติมของโหมด cua คือฉันสามารถต่อท้ายข้อความในสี่เหลี่ยมผืนผ้าได้ (โดยส่วนตัวแล้วฉันไม่รู้วิธีต่อท้ายข้อความด้วยสี่เหลี่ยมผืนผ้ามาตรฐานของ Emacs) ด้วยโหมดเชาก็เป็นหนึ่งRETกดปุ่มเท่านั้น inputed I saidก่อน

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