ฟอร์แมต Intellij ในการบันทึกไฟล์


353

ฉันจำได้ว่าเห็นใน IntelliJ หรือ Eclipse การตั้งค่าให้ฟอร์แมตใหม่ (ล้างข้อมูล) ไฟล์ทุกครั้งที่มีการบันทึก ฉันจะหาได้อย่างไร (ไม่พบในการตั้งค่า)

คำตอบ:


235

ผมขอแนะนำให้ประหยัดการกระทำปลั๊กอิน นอกจากนี้ยังรองรับการเพิ่มประสิทธิภาพการนำเข้าและจัดเรียงรหัสใหม่

ทำงานได้ดีร่วมกับคราสจัดรูปแบบปลั๊กอิน

ค้นหาและเปิดใช้งานปลั๊กอิน:

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

กำหนดค่า:

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

แก้ไข:ดูเหมือนว่า Intellij รุ่นล่าสุดจะมีการเรียกใช้ปลั๊กอินการดำเนินการบันทึกโดย Intellij บันทึกอัตโนมัติ สิ่งนี้อาจสร้างความรำคาญให้กับผู้ใช้ในขณะที่กำลังแก้ไขอยู่

ปลั๊กอิน Github ฉบับนี้ให้คำแนะนำเกี่ยวกับวิธีแก้ปัญหาที่เป็นไปได้:

https://github.com/dubreuia/intellij-plugin-save-actions/issues/63

ฉันพยายามกำหนดฟอร์แมตใหม่ให้กับCtrl+ Sและมันใช้ได้ดีการออมจะทำโดยอัตโนมัติในตอนนี้


ฉันใช้สิ่งนี้ แต่หลังจากอัปเดตเป็น Android Studio 1.5.1 ฉันไม่พบอีกต่อไป
r1k0

1
ปลั๊กอินเป็น (ณ ตอนนี้) อัปเดตครั้งล่าสุด10.02.2016และบอกว่าCompatibility This plugin works with Java 6+ and Intellij IDEA Community Edition after 131 (around version 13).ฉันไม่ทราบว่าเวอร์ชั่นของ IntelliJ Android Studio เป็นอย่างไร คุณตรวจสอบสิ่งนี้ได้ไหม
Benjamin Peter

ไปด้านบนคุณไป!
Nick Grealy

เกือบทำงานให้ฉัน น่าเสียดายที่ "รหัสฟอร์แมต" จะทำเพียงส่วนย่อยของสิ่งที่ "รหัส> โค้ดฟอร์แมต" ทำ (อย่างน้อยก็สำหรับโค้ดสกาล่า) ทำไมถึงเป็นอย่างนั้น?
Thilo

พยายามทำเช่นนี้ แต่ IntelliJ ช่วยได้บ่อยครั้งมาก การจัดระเบียบการนำเข้าจะปรากฏขึ้น 2-3 ครั้ง
แอชลีย์

443

วิธีนี้ใช้ได้ผลดีกว่าสำหรับฉัน:

  1. สร้างมาโคร (ฉันใช้จัดการการนำเข้า, รหัสรูปแบบ, บันทึกทั้งหมด)
  2. กำหนดการกดแป้น (I overrode Ctrl+ S)

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

ทีละขั้นตอนสำหรับ IntelliJ 10.0:

  1. รหัส -> "เพิ่มประสิทธิภาพการนำเข้า ... " หากกล่องโต้ตอบปรากฏขึ้นให้ทำเครื่องหมายในช่องที่ระบุว่า "อย่าแสดงข้อความนี้อีก" จากนั้นคลิก "เรียกใช้"
  2. เครื่องมือ -> "เริ่มการบันทึกแมโคร"
  3. รหัส -> "เพิ่มประสิทธิภาพการนำเข้า ... "
  4. รหัส -> "ฟอร์แมตโค้ด ... "
  5. ไฟล์ -> "บันทึกทั้งหมด"
  6. เครื่องมือ -> "หยุดการบันทึกแมโคร"
  7. ตั้งชื่อแมโคร (บางอย่างเช่น "ฟอร์แมตบันทึก")
  8. ในไฟล์ -> การตั้งค่า -> Keymap ให้เลือกมาโครของคุณที่ "เมนูหลัก -> เครื่องมือ ->" การจัดรูปแบบการบันทึก "
  9. คลิก "เพิ่มแป้นพิมพ์ลัด" จากนั้นดำเนินการกดแป้นที่คุณต้องการ หากคุณเลือกCtrl+ Sเช่นฉันมันจะถามคุณว่าจะทำอย่างไรกับทางลัดCtrl+ ก่อนหน้า Sย้ายมัน. คุณสามารถกำหนดใหม่ได้ในภายหลังหากคุณต้องการ
  10. สนุก!

สำหรับ IntelliJ 11 ให้แทนที่

ขั้นตอนที่ 2 ด้วย: แก้ไข -> Macros -> "เริ่มบันทึกแมโคร"
ขั้นตอนที่ 6 ด้วย: แก้ไข -> แมโคร -> "หยุดบันทึกแมโคร"

ทุกอย่างอื่นยังคงเหมือนเดิม

IntelliJ 12

8. การตั้งค่าประกอบด้วยการตั้งค่า Keymap ใช้ฟิลด์อินพุตเพื่อกรองเนื้อหาดังแสดงในภาพหน้าจอ

Intellij / Preferences / Keymap / Macros


4
ใน IntelliJ 11: 1: เริ่มการบันทึกแมโคร: แก้ไข -> Macros -> เริ่มการบันทึกแมโคร 2: ทำตามคำแนะนำด้านบน 3: หยุดการบันทึกแมโคร: แก้ไข -> แมโคร -> หยุดการบันทึกแมโคร ใน Keymap แมโครจะถูกบันทึกลงในโฟลเดอร์ Macros แทนที่จะเป็นเมนูหลัก -> โฟลเดอร์เครื่องมือ
Markus K

3
หากคุณพอใจกับวิธีการฟอร์แมตโค้ดวิธีนี้จะทำงานได้ดีกว่ามากหากคุณเลือกฟอร์แมตโค้ดทั้งหมดในโครงการและบันทึกทั้งหมด มิฉะนั้นเมื่อคุณทำการแก้ไขไฟล์หลายไฟล์เฉพาะแอปที่ใช้งานเท่านั้นที่จะถูกฟอร์แมตใหม่ก่อนที่จะบันทึกการแก้ไขทั้งหมด
Drew Noakes

86

ด้านล่างนี้คือคำตอบของ Neil ที่ได้รับการอัพเดต

IntelliJ 13 ขั้นตอน:

  1. รหัส -> ฟอร์แมตโค้ด ป้อนคำอธิบายรูปภาพที่นี่
  2. แก้ไข -> Macros -> เริ่มการบันทึกแมโคร
  3. รหัส -> ฟอร์แมตโค้ด
  4. ไฟล์ -> บันทึกทั้งหมด
  5. แก้ไข -> Macros -> หยุดการบันทึกแมโคร
  6. ตั้งชื่อแมโคร (บางอย่างเช่น "ฟอร์แมตบันทึก")
  7. ไฟล์ -> การตั้งค่า -> Keymap
  8. คลิกขวาที่มาโคร เพิ่มแป้นพิมพ์ลัด ตั้งค่าแป้นพิมพ์ลัดเป็น Control + S. ป้อนคำอธิบายรูปภาพที่นี่
  9. IntelliJ จะแจ้งให้คุณทราบถึงข้อขัดแย้งของฮอตคีย์ เลือก "ลบ" เพื่อลบการมอบหมายอื่น ๆ

แต่จะเป็นการลบการกระทำ "บันทึก" สิ่งที่โปสเตอร์เห็นคือใน Eclipse เรามีตัวเลือกในการจัดรูปแบบรหัสและจัดการการนำเข้าโดยอัตโนมัติเมื่อไฟล์ถูกบันทึก ตัวเลือกนี้ (ฉันถือว่า) หายไปจากแนวคิด IntelliJ นี่คือการแก้ไขที่เกี่ยวข้องกับการผูกคีย์การบันทึกไปยังคีย์ฟอร์แมต
พระพิฆเนศกฤษณะ

3
ฉันไม่เห็นด้วย @GaneshKrishnan วิธีแก้ปัญหานี้ไม่ได้ผูก "บันทึกคีย์" กับ "คีย์ฟอร์แมต" มันผูกมันไว้กับแมโครที่ "ฟอร์แมตใหม่และบันทึก" ซึ่งเป็นสิ่งที่ OP ต้องการให้และสิ่งที่นำไปใช้ใน Eclipse แต่ถูกเรียกด้วยกล่องกาเครื่องหมาย
dbm

1
ฉันคิดว่าบางทีสำหรับขั้นตอนที่ 1 คุณหมายถึง "Code -> Show Reformat File Dialog" เพื่อตั้งค่าเริ่มต้นสำหรับ Reformat File Dialog (เพื่อให้พวกเขาตั้งค่าอย่างถูกต้องสำหรับขั้นตอนที่ 3 - รหัสการจัดรูปแบบใหม่)?
studgeek

61

ฉันตั้งค่าให้ทำความสะอาดอัตโนมัติเมื่อทำการเช็คอินซึ่งมักจะดีพอสำหรับฉัน หากสิ่งที่น่าเกลียดเกินไปฉันจะกดปุ่มทางลัด ( Ctrl- Alt- L, Return) และฉันเห็นว่าพวกเขามีตัวเลือกสำหรับวางโค้ดการจัดรูปแบบอัตโนมัติแม้ว่าฉันจะไม่เคยใช้มัน


12
คุณยังสามารถใช้ Ctrl-Shift-F เพื่อจัดรูปแบบ วิธีนี้ใช้ได้ผลดีกว่าสำหรับฉันเนื่องจาก Ctrl-Alt-L เป็นคำสั่งล็อคหน้าจอใน Ubuntu
Jason McVetta

22
Ctrl + Shift + F คือค้นหาในเส้นทาง
ซ้อนกัน

5
คุณจะตั้งค่าบางสิ่งให้เกิดขึ้นเมื่อเช็คอินได้อย่างไร
ปล้น

2
ใช้งานได้หรือไม่ถ้าคุณไม่ได้เช็คอินโดยใช้ intelliJ นั่นคือฉันคิดว่ามันจะไม่ทำงานถ้าคุณเช็คอินโดยใช้เครื่องมือบรรทัดคำสั่ง

นั่นตอบคำถามได้อย่างไร
Ben

19

Ctrl+ Alt+ Lเป็นไฟล์รูปแบบ (รวมถึงสองด้านล่าง)

Ctrl+ Alt+ Oเป็นการเพิ่มประสิทธิภาพการนำเข้า

Ctrl+ Alt+ Iจะแก้ไขการเยื้องในบรรทัดที่เฉพาะเจาะจง

ฉันมักจะเรียกใช้Ctrl+ Alt+ Lสองสามครั้งก่อนที่จะทำงานของฉัน ฉันอยากจะล้างข้อมูล / ฟอร์แมตใหม่ที่คำสั่งของฉันแทนโดยอัตโนมัติ


แทนที่ Ctrl ด้วย Cmd สำหรับ Mac
Gerard

12
ระวังบน Linux และCtrl + Alt + LLock Session เป็นปกติ คุณจะต้องทำการแมปหนึ่งในฟังก์ชั่นใหม่
แบ่งแยก

18

หากคุณมีชุมชนความคิดของ InteliJ 2018.2 ขั้นตอนจะเป็นเหมือน:

  1. ในเมนูด้านบนคุณคลิก: แก้ไข> มาโคร> เริ่มบันทึกมาโคร (คุณจะเห็นหน้าต่างมุมล่างขวาของหน้าจอยืนยันว่ามีการบันทึกแมโคร)
  2. ในเมนูด้านบนคุณคลิก: รหัส> รหัสการจัดรูปแบบ (คุณจะเห็นตัวเลือกที่เลือกที่มุมล่างขวา)
  3. ในเมนูด้านบนคุณคลิก: รหัส> นำเข้าเพิ่มประสิทธิภาพ (คุณจะเห็นตัวเลือกที่เลือกที่มุมล่างขวา)
  4. ในเมนูด้านบนคุณคลิก: ไฟล์> บันทึกทั้งหมด
  5. ในเมนูด้านบนคุณคลิก: แก้ไข> มาโคร> หยุดการบันทึกแมโคร
  6. คุณตั้งชื่อแมโคร: "Format Code, Organize Imports, Save"
  7. ในเมนูด้านบนคุณนาฬิกา: ไฟล์> การตั้งค่า ในหน้าต่างการตั้งค่าคุณคลิก Keymap
  8. ในช่องค้นหาทางด้านขวาคุณค้นหา "บันทึก" คุณจะพบบันทึกทั้งหมด (Ctrl + S) คลิกขวาแล้วเลือก "ลบ Ctrl + S"
  9. นำข้อความค้นหาของคุณออกจากกล่องกดปุ่มยุบทั้งหมด (ปุ่มที่สองจากด้านบนซ้าย)
  10. ไปที่มาโครกดที่ลูกศรเพื่อขยายมาโครค้นหามาโครที่บันทึกไว้และคลิกขวา เลือกเพิ่มแป้นพิมพ์ลัดและกด Ctrl + S และตกลง

รีสตาร์ท IDE ของคุณแล้วลอง

ฉันรู้ว่าคุณกำลังจะพูดอะไรพวกก่อนหน้าฉันเขียนในสิ่งเดียวกัน แต่ฉันสับสนโดยใช้ขั้นตอนด้านบนโพสต์นี้และฉันต้องการเขียนรุ่นที่เป็นใบ้สำหรับผู้ที่มี IDE เวอร์ชันล่าสุด


13

หากคุณกำลังพัฒนาใน Flutter มีตัวเลือกการทดลองใหม่เมื่อวันที่ 5/1/2561 ที่ช่วยให้คุณสามารถจัดรูปแบบรหัสในการบันทึก การตั้งค่า


9

ฉันแผลขึ้น rebinding Reformat code...ดำเนินการเพื่อCtrl- เปลี่ยนค่าเริ่มต้นผูกพันSSave All

มันอาจฟังดูบ้าในตอนแรก แต่ IntelliJ ดูเหมือนจะประหยัดทุกการกระทำ: การทดสอบการสร้างโครงการแม้ในขณะที่ปิดแท็บเครื่องมือแก้ไข ฉันมีนิสัยที่จะตีCtrl- Sค่อนข้างบ่อยดังนั้นสิ่งนี้ใช้ได้ดีสำหรับฉัน แน่นอนว่าพิมพ์ได้ง่ายกว่าการผูกค่าเริ่มต้นสำหรับการจัดรูปแบบใหม่


5

IntellIJ 14 && 15: เมื่อคุณกำลังตรวจสอบรหัสในกล่องโต้ตอบ Commit เปลี่ยนแปลงให้ทำเครื่องหมายในช่องทำเครื่องหมาย Reformat code จากนั้น IntelliJ จะทำการฟอร์แมตโค้ดทั้งหมดที่คุณกำลังเช็คอิน

ที่มา: www.udemy.com/intellij-idea-secrets-double-your-coding-speed-in-2-hours


2
ฉันพูดอะไรที่นี่
ตูชาร์

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

2

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


2

หากเกี่ยวกับ Prettier เพียงใช้ File Watcher:

References => Tools => File Watchers => คลิก + เพื่อเพิ่ม watcher ใหม่ => Prettier

https://prettier.io/docs/en/webstorm.html#running-prettier-on-save-using-file-watcher


2
สวยกว่ามาก แต่มันใช้งานไม่ได้กับภาษา / รูปแบบนอกเว็บ มันจะจัดรูปแบบ js, ts, css, json และอื่น ๆ แต่ไม่มีประโยชน์สำหรับ C, C #, Java, Python และอื่น ๆ - ยกเว้นบางครั้งที่ปลั๊กอิน
Mattia
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.