วิธีเลื่อนพื้นที่ข้อความที่เลือกใน Emacs ด้วยช่องว่างจำนวนหนึ่ง?


26

ฉันกำลังเขียนโค้ดไพ ธ อนดังนั้นการขยับ / ย้ายบล็อกของเส้นจึงเป็นสิ่งสำคัญเพื่อหลีกเลี่ยงการผ่านแต่ละบรรทัด ฉันจะทำสิ่งนี้โดยไม่ใช้แอดออนได้อย่างไร? มีคำสั่งการกดแป้นการดำเนินการชนิดหนึ่งที่จะทำสิ่งนี้


3
สำหรับคำตอบที่ไม่ใช่งูหลามเฉพาะดูemacs.stackexchange.com/q/11และemacs.stackexchange.com/q/18
legoscia

คำตอบ:


40

ใช้คำสั่งindent-rigidlyซึ่งถูกผูกไว้C-x TABโดยค่าเริ่มต้น

คุณสามารถระบุจำนวนของช่องว่างที่จะเยื้องโดยใช้อาร์กิวเมนต์คำนำหน้าC-5 C-x TABเช่น

หรือคุณสามารถเรียกใช้คำสั่งจากนั้นใช้ลูกศรซ้าย / ขวาเพื่อปรับระดับการเยื้อง


คุณจะเพิ่มอาร์กิวเมนต์คำนำหน้าได้อย่างไร
Vass

1
ลองยกตัวอย่างC-5 C-x TABเพื่อเยื้องช่องว่างภูมิภาค 5 ปัจจุบัน
ลูกัส

ดีมาก แต่ทำไมบรรทัดแรกไม่ขยับเช่นกัน ฉันต้องคว้าส่วนสุดท้ายของบรรทัดด้านบนการเลือกเพื่อให้ชุดของบรรทัดที่ฉันต้องการย้าย
Vass

1
คุณไม่จำเป็นต้องเลือกอะไรจากบรรทัดก่อนหน้า แต่คุณต้องการเลือกจากจุดเริ่มต้นของบรรทัดแรกที่คุณต้องการเยื้อง ตัวอย่างเช่นหากC-aต้องการย้ายไปที่จุดเริ่มต้นของบรรทัดC-SPCเพื่อเริ่มทำเครื่องหมายภูมิภาคC-n C-nเพื่อเลื่อนลงสองบรรทัดC-5 C-x TABเพื่อเยื้องสองบรรทัด
ลูกัส

1
"ใช้ลูกศรซ้าย / ขวาเพื่อปรับระดับการเยื้องแบบโต้ตอบ" จริงเหรอ? ที่ดี! ฉันไม่รู้สิ่งนี้และบางครั้งฉันต้องเดาว่าต้องเพิ่มหรือลบช่องว่างจำนวนเท่าใด ฉันหวังว่านี่จะช่วยได้
imz - Ivan Zakharyaschev

9

หากคุณใช้ python-mode.el C-c >หรือC-c <เลื่อนบล็อกไปทางซ้ายหรือขวา


ทำไมบรรทัดแรกของการเลือกยังคงไม่ได้รับการเลือกถ้าฉันไม่เลือกส่วนสุดท้ายของบรรทัดด้านบน
Vass

ฉันไม่สามารถทำซ้ำพฤติกรรมนี้ บรรทัดของการเลือกทั้งหมดจะถูกย้าย Emacs 24.4
Lompik

ความคิดเห็นของกลูกัสบอกว่าสิ่งนี้จะเกิดขึ้นหากคุณไม่ได้เลือกตั้งแต่จุดเริ่มต้นของบรรทัด
Vass

6

string-rectangleคำสั่ง ( C-x r t) สามารถใช้ในการแทรกข้อความใด ๆ โดยพล (พื้นที่รวม) ในพื้นที่ที่เลือก

สมมติว่าคุณมีบล็อกข้อความนี้และคุณต้องการแทรกช่องว่าง 5 ช่องด้านหน้าบรรทัดทั้งหมด

abc
  def
    ghi

ขั้นแรกให้เลือกภูมิภาค "คอลัมน์ 0" ดังที่แสดงด้านล่าง (จุดอยู่ที่ตัวอักษร 'a' และเครื่องหมายอยู่ในคอลัมน์เดียวกันในแถวที่มี 'ghi':

▮bc
  def
▯   ghi

ตอนนี้ใช้string-rectangleแทรกข้อความที่คุณต้องการแทรกในพื้นที่ที่เลือก ในตัวอย่างนี้เราจะแทรก 5 ช่องว่างในแถวทั้งหมดรวมถึงและอยู่ระหว่างจุดและเครื่องหมาย

C-x r t M-5 SPC RET

ที่จะให้ข้อความเยื้องด้านล่างแรง

     abc
       def
         ghi

4

มีC-x TAB(ผูกไว้กับindent-rigidly) ให้อาร์กิวเมนต์คำนำหน้าเพื่อระบุจำนวนช่องว่างที่คุณต้องการเยื้องและลบเพื่อลบช่องว่างจำนวนมาก


0

ฉันพบว่าการกด Alt-4 แล้ว SPC ฉันจะได้ผลลัพธ์ที่ต้องการ ไม่แน่ใจว่านี่เป็นวิธีที่ดีที่สุด แต่ก็ใช้ได้เช่นกัน

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