emacs: วิธีการเยื้อง / unindent ภูมิภาคของรหัสหลาม 4 ช่องว่าง?


60

ฉันมีส่วนของรหัสหลามที่เลือกใน emac อะไรคือวิธีที่มีประสิทธิภาพที่สุดในการเยื้องและการรวมเข้าด้วยกันทุกบรรทัดใน 4 ช่องว่าง?

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

(Python)ฉันแสดงโหมดออนไลน์ ค้นหาเว็บฉันพบการสนทนาจำนวนมากpython-modeแทนที่จะใช้pythonแต่ฉันเพิ่งเริ่มใช้ emacs เมื่อไม่กี่วันที่ผ่านมาดังนั้นฉันจึงระวังการเปลี่ยนค่าเริ่มต้นก่อนที่ฉันจะมีโอกาสเข้าใจและพวกเขา หากเปลี่ยนpython-modeเป็นตัวเลือกที่ดีที่สุดฉันยินดีที่จะยอมรับว่าเป็นคำตอบ

สิ่งที่ฉันได้ลอง (จากคู่มือ):

  • <TAB> ไม่มีผลอะไร
  • C-M-\ ไม่มีผลอะไร
  • C-x <TAB> (เยื้องอย่างเข้มงวด) เยื้องทุกบรรทัดโดยหนึ่งคอลัมน์ (และยกเลิกการเลือกภูมิภาค)
  • M-i เยื้องหนึ่งบรรทัดแรกด้วยแท็บ (ความยาว 8 ช่องว่าง)
  • C-M-q - "CMq ไม่ได้กำหนด"

วิธีเดียวที่ฉันพบคือใช้การแทนที่ regex แต่นั่นเป็นจำนวนการกดแป้นพิมพ์ที่น่ากลัวสำหรับงานง่าย ๆ

คำตอบ:



17

indent-rigidlyรับอาร์กิวเมนต์คำนำหน้าเพื่อระบุว่าจะเยื้องเท่าใดดังนั้นC-u 42 C-x TABเยื้องโดย 42 คอลัมน์และเนื่องจากอาร์กิวเมนต์คำนำหน้าเริ่มต้นคือ 4, การC-u C-x TABเยื้องด้วย 4 คอลัมน์

หากคุณต้องการเลือกภูมิภาคอีกครั้งให้ทำC-x C-xหลังจากนั้น


8

ใช้คำสั่ง indent-rigidly พร้อมคำนำหน้าเป็นตัวเลข

C-u 4 M-x indent-rigidlyเพื่อเยื้องพื้นที่ด้วยสี่ช่องว่างC-u -4 M-x indent-rigidlyเพื่อลบสี่ช่องว่าง


4

Cx Cx ทำเครื่องหมายรหัสจากนั้น Mx เยื้องสำหรับโหมดแท็บ

นั่นคือการบันทึกถ้าคุณกดแท็บสำหรับทุกบรรทัด


3

คุณสามารถใช้โหมดคอลัมน์ได้

เลือกบรรทัดในโหมดคอลัมน์จากนั้นเพิ่มช่องว่างสี่ช่องในบรรทัดทั้งหมดพร้อมกัน:

  1. ข้ามไปที่คอลัมน์ 1 ของบรรทัดแรกที่คุณต้องการเยื้อง
  2. C-<space> เพื่อตั้งเครื่องหมาย
  3. เลื่อนจุดลงไปที่บรรทัดสุดท้าย (อยู่ในคอลัมน์ที่หนึ่ง)
  4. C-x r tเพื่อเข้าสู่โหมดคอลัมน์ (หรือC-<RET>หากคุณมีโหมด CUA)
  5. <space><space><space><space><RET>

คุณสามารถทำการซ้อมที่คล้ายกันเพื่อลบสี่ช่องว่าง - เพียงแค่รวม 4 คอลัมน์ในภูมิภาคที่ทำเครื่องหมายไว้ของคุณ (ขั้นตอนที่ 2-3) และกดปุ่ม <DEL>


3

การอัปเดตโซลูชันของเฉินด้านบนในปัจจุบัน (ทดสอบบน Emacs 24.4.1) คำสั่งถูกเปลี่ยนชื่อ ดังนั้นสมมติว่าคุณต้องการเยื้องตามตัวแปร python-indent คำสั่งคือ python-indent-shift-left และ python-indent-shift-right คุณสามารถ:

  1. ออกให้โดยพิมพ์M-x python-indent-shift-rightหรือM-x python-indent-shift-left

  2. ใช้ทางลัดโหมดเริ่มต้นสั้น ๆC-c >และC-c <

  3. ปฏิเสธพวกเขา เช่นบนแป้นพิมพ์ที่มีปุ่ม windows ฉันใช้:

    (global-set-key (kbd "s-s") 'python-indent-shift-left) 
    (global-set-key (kbd "s-d") 'python-indent-shift-right)
    


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