วิธีการเยื้องรหัสอัตโนมัติในตัวแก้ไข Atom


393

คุณจะเยื้องรหัสของคุณโดยอัตโนมัติในเครื่องมือแก้ไข Atom ได้อย่างไร ในโปรแกรมแก้ไขอื่น ๆ คุณสามารถเลือกรหัสและเยื้องอัตโนมัติได้

มีแป้นพิมพ์ลัดเช่นกัน?

คำตอบ:


664

ฉันพบตัวเลือกในเมนูภายใต้แก้ไข> เส้น> เยื้องอัตโนมัติ ดูเหมือนว่าจะไม่มีคีย์แมปเริ่มต้นที่ถูกผูกไว้

คุณสามารถลองเพิ่มการจับคู่คีย์ (Atom> เปิด Keymap ของคุณ [ใน Windows: ไฟล์> การตั้งค่า> การโยงคีย์> "ไฟล์ keymap ของคุณ"]) เช่นนี้:

'atom-text-editor':
  'cmd-alt-l': 'editor:auto-indent'

มันใช้งานได้สำหรับฉัน :)


สำหรับ Windows:

'atom-text-editor':
  'ctrl-alt-l': 'editor:auto-indent'

1
ขอบคุณ! จะดีถ้ามันทำแกน: เลือกทั้งหมดก่อน แต่ไม่มีเงื่อนงำในการสคริปต์ที่
doobdargent

3
@doobdargent ฉันสร้างคำถามพร้อมคำตอบเกี่ยวกับวิธีการเขียนสองคำสั่งเป็นคำสั่งใหม่ที่นี่: stackoverflow.com/questions/24456995/…
Lee

15
นอกจากนี้คุณยังสามารถcmd + shift + pค้นหาEditor: Auto Indent
codingninja

1
ฉันหาวิธีผูกวิธีนี้ด้วย "เลือกทั้งหมด" ก่อน (แล้วเรียกคืนการเลือกดั้งเดิมหลังจาก) ดังนั้นคุณสามารถทำได้ทั้งหมดในการกดปุ่มเดียว - ดูคำตอบของฉันด้านล่าง stackoverflow.com/a/33927654/398630
BrainSlugs83

4
สำหรับ Ubuntu นั้น [แก้ไข> เปิด Keymap ของคุณ] และเช่นเดียวกับctrl-alt-lทางลัดเริ่มต้นของอูบุนตูสำหรับล็อคหน้าจอฉันกำลังจับคู่กับctrl-shift-]ตอนนี้
vusan

91

คำตอบที่ได้รับการยอมรับใช้งานได้ แต่คุณต้อง "เลือกทั้งหมด" ก่อน - ทุกครั้ง - และฉันก็ขี้เกียจเกินไปสำหรับสิ่งนั้น

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

1. ) ขั้นแรกให้เพิ่มคำสั่งที่กำหนดเองลงในสคริปต์เริ่มต้นของคุณ (ไฟล์ -> เปิดสคริปต์เริ่มต้นของคุณแล้ววางที่ด้านล่าง):

atom.commands.add 'atom-text-editor', 'custom:reformat', ->
    editor = atom.workspace.getActiveTextEditor();
    oldRanges = editor.getSelectedBufferRanges();
    editor.selectAll();
    atom.commands.dispatch(atom.views.getView(editor), 'editor:auto-indent')
    editor.setSelectedBufferRanges(oldRanges);

2. ) ผูก "กำหนดเอง: ฟอร์แมต" กับคีย์ (ไฟล์ -> เปิด Keymap ของคุณจากนั้นวางที่ด้านล่าง):

'atom-text-editor':
    'ctrl-alt-d': 'custom:reformat'

3. ) รีสตาร์ท Atom (สคริปต์ init.coffee จะทำงานเฉพาะเมื่อเปิดตัวอะตอมครั้งแรก)


น่าสนใจ ฉันไม่แน่ใจว่าฉันต้องการให้เยื้องอัตโนมัติทุกอย่าง ในตัวช่วยในการเยื้องการเลือก คุณสามารถโต้แย้งว่าการเยื้องที่เหมาะสมนั้นเป็นสิ่งที่ควรมี
Zelphir Kaltstahl

2
@Zelphir ฉันมักจะมีปุ่มลัดหนึ่งอันสำหรับการเลือกเยื้อง - ฉันไม่ได้ใช้การเยื้องทุกครั้ง แต่ก็ดีที่มีไว้เมื่อคุณต้องการ
BrainSlugs83

@ BrainSlugs83 อาจจะเป็นความผิดปกติเล็กน้อย: ฉันสังเกตว่ามีปัญหาเมื่อพยายามอัตโนมัติภาษาเยื้องซึ่งไม่ใช้วงเล็บปีกกาเพื่อทำเครื่องหมายบล็อกของรหัสและอนุญาตให้กำหนดฟังก์ชั่นหรือชั้นเรียนในคนอื่น ๆ ผู้แก้ไขไม่สามารถรู้ได้ว่าระดับใดในกรณีดังกล่าว
Zelphir Kaltstahl

2
if oldRanges != null && oldRanges[0].start.column == oldRanges[0].end.column && oldRanges[0].start.row == oldRanges[0].end.rowการเพิ่มเงื่อนไขนี้เพื่อeditor.selectAll();จะยังคงอนุญาตให้เยื้องการเลือกเท่านั้น หากไม่มีการเลือกจะเป็นการเยื้องไฟล์ทั้งหมด
manish_s

1
หากคุณต้องการยกเลิกขั้นตอนเดียวสำหรับคำสั่งทั้งหมดให้เพิ่มสิ่งนี้หลังจากนิยามเอดิเตอร์: checkpoint = editor.createCheckpoint();และนี่ท้าย:editor.groupChangesSinceCheckpoint(checkpoint);
Dan

43

มีการเยื้องอัตโนมัติของแพ็คเกจเพื่อใช้การเยื้องอัตโนมัติกับไฟล์ทั้งหมดด้วยทางลัดนี้ :

ctrl+ shift+i

หรือ

cmd+ shift+i

แพ็คเกจ URL: https://atom.io/packages/auto-indent


ต้องการการอัปเดตที่ฉันคิดว่า - ใช้งานไม่ได้สำหรับฉัน การใช้การโทรที่เลิกใช้กับ API
Dean_Wilson

1
แต่ฉันดาวน์โหลดและติดตั้งด้วยตนเองจากgithub.com/griiin/atom-auto-indentและตอนนี้ดูเหมือนว่าจะทำงาน ...
Dean_Wilson

หมายเหตุ: ใช้การเยื้องหนึ่งแท็บโดยค่าเริ่มต้น: /
ตัวตลกของ King

24

ฉันชอบใช้ atom-beautify, CTRL+ ALT+ B(ใน linux, อาจอยู่ใน windows ด้วย) จัดการกับรูปแบบที่ดีกว่าและมันก็สามารถปรับแต่งได้ตามรูปแบบไฟล์

รายละเอียดเพิ่มเติมได้ที่นี่: https://atom.io/packages/atom-beautify


ด้วยกิ่งไม้มันเพิ่มพื้นที่สำหรับpathฟังก์ชั่นดังนั้นจึงไม่สามารถหาเส้นทางได้
Rodolfo Velasco

ฉันคิดว่านี่เป็นวิธีที่ง่ายและสะอาดกว่า ขอบคุณ
อเลสซานโดร

17

คุณสามารถเปิดพาเล็ตคำสั่งและทำที่นั่น
Cmd + Shift + pและค้นหาEditor: Auto Indent:

ภาพหน้าจอ


10
ไม่เร็วถ้าคุณเป็นผู้ใช้ระดับสูง :)
Jad Joubran

5

สิ่งนี้ใช้ได้กับฉัน:

'atom-workspace atom-text-editor':
    'ctrl-alt-a': 'editor:auto-indent'

คุณต้องเลือกทั้งหมดด้วยctrl-aก่อน



2

หากคุณมีปัญหากับอง, พยายามที่จะเปิดด้วยKey Binding Resolver Window Cmd + .มันจะแสดงให้คุณเห็นปุ่มที่คุณกดในเรียลไทม์

ตัวอย่างเช่นCmd + Shift + 'เป็นจริงCmd + "


2

บน Linux

(ทดสอบใน Ununtu KDE)

มีตัวเลือกในเมนูภายใต้แก้ไข> เส้น> เยื้องอัตโนมัติหรือกดCmd + Shift + pค้นหาEditor: Auto Indentโดยป้อนเพียง "ai"

หมายเหตุ: ใน KDE ctrl-alt-lนั้นถูกตั้งค่าไว้ทั่วโลกสำหรับ "ล็อคหน้าจอ" ดังนั้นควรใช้ctrl-alt-iแทน

คุณสามารถเพิ่มการจับคู่คีย์ใน Atom:

  • Cmd + Shift + pค้นหา "มุมมองการตั้งค่า: แสดงการโยงคีย์"
  • คลิกที่ "ไฟล์ keymap ของคุณ"
  • เพิ่มส่วนที่มีเช่นนี้:

     'atom-text-editor':
        'ctrl-alt-i': 'editor:auto-indent'
    

หากการเยื้องไม่ทำงานอาจเป็นเหตุผลว่า Atom ไม่รู้จักการสิ้นสุดไฟล์ เพิ่มการสนับสนุนภาษาของคุณแล้วเช่น "Lua" ติดตั้งแพคเกจ "language-lua"

หากไม่รู้จักไฟล์สำหรับภาษาของคุณ:

  • เปิด~/.atom/config.csonไฟล์ (โดย CTRL + SHIFT + p: พิมพ์ `` open config '')
  • เพิ่ม / แก้ไขcustomFileTypesส่วนใต้coreตัวอย่างเช่นรายการต่อไปนี้:

    core:
      customFileTypes:
        "source.lua": [
          "conf"
        ]
        "text.html.php": [
          "thtml"
        ]
    

(คุณค้นหาชื่อขอบเขตภาษา ("source.lua", "text.html.php" ... )) ในการตั้งค่าแพ็คเกจภาษาดูที่นี่ )


0

คุณสามารถลองเพิ่มการทำแผนที่แม่มดอัตโนมัติเลือกรหัสทั้งหมดในไฟล์และเยื้องมัน:

'atom-text-editor':
  'ctrl-alt-l': 'auto-indent:apply'

@IB ลองด้วย 'atom-text-editor': 'ctrl-alt-l': 'editor: เยื้องอัตโนมัติ' ก่อนกดปุ่มลัดเลือกข้อความทั้งหมดในไฟล์
Hordian Yordanov

0

ฉันทำงานกับโค้ด Groovy ซึ่งไม่ได้จัดรูปแบบอัตโนมัติในการบันทึก สิ่งที่ฉันทำคือคลิกขวาที่บานหน้าต่างรหัสจากนั้นเลือก ESLint Fix นั่นทำให้ฉันเยื้อง

ป้อนคำอธิบายรูปภาพที่นี่

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