การจัดรูปแบบอัตโนมัติ Xcode แหล่งที่มา


179

ในฐานะนักพัฒนา C # ฉันได้ขึ้นอยู่กับการจัดรูปแบบอัตโนมัติใน Visual Studio 2008 โดยเฉพาะฉันจะใช้CTRL+ K, Dแป้นพิมพ์ลัดเพื่อบังคับให้สิ่งต่าง ๆ กลับมาเป็นรูปร่างหลังจากการนำเลอะเทอะของฉันไป

ตอนนี้ฉันกำลังพยายามที่จะเรียนรู้ Objective-C และขาดคุณสมบัติบางอย่างใน Xcode แต่อาจไม่มีใครที่เจ็บปวดพอ ๆ กับทางลัดการจัดรูปแบบ การค้นหาของ Google ของฉันไม่ได้สร้างอะไรเลยแม้ว่ามันจะดูเหมือนว่ามีแฮ็กอยู่บ้าง ฉันขาดอะไรไปหรือคุณสมบัตินี้ไม่มีอยู่ใน Xcode หรือเปล่า


1
มีบางอย่างที่เชื่อมโยงที่ดีในการแก้ปัญหาการเขียนสคริปต์ Xcode ในคำตอบนี้เป็นคำถาม SO
Nall

ขอบคุณสำหรับลิงค์ ฉันพบสิ่งนี้เช่นกัน: blog.carbonfive.com/2009/08/iphone/code-formatting-in-xcode มันครอบคลุมเทคนิคพื้นฐานเหมือนกับลิงค์ของคุณ ฉันจะลองดูและดูว่ามันใช้งานได้ดีแค่ไหน
jslatts

1
โซลูชันของบุคคลที่สามที่ใช้ UniversalIndentGUI: blog.carbonfive.com/2009/08/iphone/code-formatting-in-xcode
jslatts

คล้ายกับคำถามนี้ answer มีรายการเมนูและแป้นพิมพ์ลัดเพื่อใส่รหัสเยื้อง: stackoverflow.com/questions/3558709/…
Basil Bourque

2
ในช่วง 5 ปีที่ผ่านมามีนวัตกรรมใด ๆ จาก Apple หรือไม่? คำถามนี้ยังเกี่ยวข้องหรือไม่หรือตอนนี้ XCode เป็นวิธีแก้ปัญหาที่ดีกว่าสำหรับฟอร์แมตโค้ดหรือไม่
mm24

คำตอบ:


134

น่าเสียดายที่ Xcode ไม่มีอะไรที่ครอบคลุมเกือบเท่า VS หรือ Jalopy สำหรับ Eclipse มีคุณสมบัติที่แตกต่างกันบางอย่างเช่นStructure > Re-Indentเดียวกับการจัดรูปแบบอัตโนมัติที่ใช้เมื่อคุณวางรหัสลงในไฟล์ต้นฉบับของคุณ ฉันอยู่กับคุณโดยสิ้นเชิง; มีแน่นอนควรจะเป็นสิ่งที่อยู่ในนั้นเพื่อช่วยเหลือเกี่ยวกับปัญหาการจัดรูปแบบ


3
ขอบคุณอย่างน้อยฉันก็รู้ว่าฉันไม่ได้พลาดอะไร การระบุอัตโนมัติช่วยให้ความเจ็บปวดทื่อ ๆ แต่ฉันจะต้องหาวิธีแก้ปัญหาจากบุคคลที่สาม
jslatts

5
ไม่ควรเลือกคำตอบนี้เป็นคำตอบ คำตอบด้านล่างจาก @ken ถูกต้อง
ไรอัน Angilly

@RyanAngilly สังเกตุปีที่ตอบคำถามนี้ หลายสิ่งหลายอย่างเปลี่ยนไปด้วย Xcode ตั้งแต่นั้นมา ;-)
Marc W

1
@RyanAngilly ken อธิบายวิธีการเยื้องอัตโนมัติเท่านั้น นั่นไม่ใช่สิ่งที่ "ฟอร์แมต" (ที่มีพื้นที่สีขาวและการเพิ่มและลบบรรทัดใหม่และสิ่งต่าง ๆ ) หมายถึงจริงๆ
dergab

5
การเยื้องสามารถแก้ไขได้ด้วย control-i ที่จะเยื้องบรรทัดที่เลือกทั้งหมด
zaph

427

ว่า+Ctrli

หรือสำหรับเทคโนโลยีต่ำให้ตัดแล้ววาง มันจะจัดรูปแบบใหม่ในการวาง


ขอบคุณ! มีประโยชน์โดยเฉพาะอย่างยิ่งเนื่องจากเมนูไม่แสดงแป้นพิมพ์ลัดจริง ๆ
jslatts

37
แต่นี่เยื้องเท่านั้น แล้วการเคลื่อนย้ายเครื่องมือจัดฟันดูแลการขึ้นบรรทัดใหม่ ฯลฯ คืออะไร?
ปีเตอร์ Ajtai

14
ไม่ควรยอมรับเนื่องจากไม่สามารถใช้ฟอร์แมตโค้ดได้ทุกอย่าง เป็นเพียงการเยื้องใหม่
powerj1984

1
เคล็ดลับดี คนพิการพิเศษที่ XCode ไม่มี
AndrewK

4
ใช่ @ powerj1984 ฉันก็ผิดหวังกับเรื่องนี้ มันไม่ได้เพิ่มช่องว่างที่เหมาะสมหลัง,, =หรือผู้ประกอบการอื่น ๆ มันตั้งใจทำอะไร ไม่มีอะไรอีกแล้ว. Mac ต้องเรียนรู้จาก Microsoft ที่นี่จริงๆ
shashwat

35

ฉันอยากจะแนะนำสองตัวเลือกที่ควรพิจารณา ทั้งค่อนข้างใหม่และพัฒนา

ClangFormat-Xcode (ฟรี) - ในไฟล์ cmd + s แต่ละไฟล์จะถูกฟอร์แมทเป็นสไตล์เฉพาะและบันทึกไว้ง่ายต่อการปรับใช้ภายในทีม

ปลั๊กอิน Xcode เพื่อจัดรูปแบบรหัสของคุณโดยใช้เครื่องมือรูปแบบของ Clang โดย @travisjeffery

ด้วยรูปแบบเสียงดังกราวคุณสามารถใช้เสียงดังกราวเพื่อจัดรูปแบบโค้ดของคุณตามสไตล์เช่น LLVM, Google, Chromium, Mozilla, WebKit หรือการกำหนดค่าของคุณเอง

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

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


คุณจะสร้างการกำหนดค่ารูปแบบของคุณเองด้วยปลั๊กอินนี้ได้อย่างไร?
nbro

27

ใน xcode คุณสามารถใช้ทางลัดนี้เพื่อเยื้องรหัสต้นฉบับของคุณใหม่

ไปที่ไฟล์ซึ่งมีปัญหาเยื้องและทำตามสิ่งนี้:

  • Cmd+ Aเพื่อเลือกรหัสที่มาทั้งหมด

  • Ctrl+ Iเพื่อเยื้อง

หวังว่านี่จะช่วยได้


18

ชอบส่วนตัวของฉัน PrettyC wantabe เป็น uncrustify: http://uncrustify.sourceforge.net/ มีตัวเลือกไม่กี่พันล้านตัว แต่ฉันขอแนะนำให้คุณดาวน์โหลด UniversalIndentGUI_macx (หรือบน sourceforge) ซึ่งเป็น GUI ที่มีคนเขียนเพื่อช่วยในการตั้งค่าตัวเลือกในแบบที่คุณชอบ

จากนั้นคุณสามารถเพิ่มสคริปต์ผู้ใช้ที่กำหนดเองนี้เพื่อไม่เชื่อถือข้อความที่เลือก:

#! /bin/sh
#
# uncrustify!
echo -n "%%%{PBXSelection}%%%"
/usr/local/bin/uncrustify -q -c /usr/local/share/uncrustify/geo_uncrustify.cfg -l oc+ <&0
echo -n "%%%{PBXSelection}%%%"

ฉันมีปัญหาเกี่ยวกับความไม่ไว้วางใจโดยเฉพาะอย่างยิ่งกับการจัดรูปแบบบล็อก
Liron Yahdav

12

คุณสามารถใช้Command+ Aเพื่อเลือกเนื้อหาทั้งหมดและถัดไปCtrl+ Iเพื่อจัดรูปแบบเนื้อหาที่เลือก


9

ฉันรู้สึกว่า xcode ควรมีฟังก์ชั่นนี้ ดังนั้นฉันทำส่วนขยายเพื่อทำ: Swimat

ติดตั้งง่ายโดย brew cask install swimat ภาพตัวอย่าง

คุณสามารถลองดูhttps://github.com/Jintin/Swimatสำหรับข้อมูลเพิ่มเติม


8

Cmd A + Ctrl I

หรือCmd Aและจากนั้นคลิกขวา โครงสร้าง Goto -> เยื้องเยื้อง


6

พิจารณาซื้อสิทธิ์ใช้งานAppCodeซึ่งเป็น Objective-C IDE ที่ชาญฉลาดซึ่งช่วยนักพัฒนา iOS / OS X AppCode เป็นอย่างเข้ากันได้กับ Xcode แต่นอกเหนือไปจาก Xcode ในการเพิ่มคุณลักษณะที่มีประสิทธิภาพ

AppCode ตัวแปร Objective-C ของIDEA Intellij IDE จากJetBrains พวกเขายังเป็นผู้เขียนส่วนขยายReSharperยอดนิยมไปยัง Visual Studio ซึ่งจุดประสงค์หลักจากที่นี่ดูเหมือนจะเป็นความพยายามอย่างยิ่งยวดที่จะนำประสบการณ์ IDEA มาสู่ผลิตภัณฑ์ของ Microsoft

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

แน่นอนคุณอาจลองใช้รุ่นทดลอง



4

คุณสามารถลองใช้ปลั๊กอิน XCode https://github.com/benoitsan/BBUncrustifyPlugin-Xcode

เพียงแค่โคลนที่เก็บ github เปิดโครงการปลั๊กอินใน XCode และเรียกใช้ มันจะถูกติดตั้งโดยอัตโนมัติ รีสตาร์ท Xode ก่อนใช้ปลั๊กอินตัวจัดรูปแบบ

อย่าลืมติดตั้ง uncrustify util ก่อน Homebrew สำหรับ exmaple

brew install uncrustify

PS คุณสามารถเปิดคุณสมบัติ "หลังจากบันทึกการจัดรูปแบบ" ที่แก้ไข> รหัสรูปแบบ> BBUncrustifyPlugin Preferences> บันทึกรูปแบบ

หวังว่านี่จะเป็นประโยชน์สำหรับคุณ ;-)



3

CTRL + i

แค่นั้นแหละ.

(ไม่มีCOMMAND+ i)


6
เรื่องนี้ถูกกล่าวถึงเป็นคำตอบ 4 ครั้งแล้ว - โปรดอ่านคำตอบอื่น ๆ ก่อนที่จะตอบ
fishinear

นอกจากนี้ CMD + i ก็เหมือนกับการไปที่ Product -> Profile ซึ่งไม่เหมือนกับการฟอร์แมต
inga

3

ฉันแนะนำให้ใช้ ClangFormat ในการติดตั้งโปรดทำตามขั้นตอนเหล่านี้:

  1. ติดตั้งตัวจัดการแพคเกจ Alcatraz สำหรับ XCode รองรับ Xcode 5+ & OS X 10.9+
  2. หลังจากการติดตั้งรีสตาร์ท XCode
  3. เปิด XCode -> เมนูหน้าต่าง -> ตัวจัดการแพ็คเกจ
  4. ค้นหา (find) ClangFormat และติดตั้ง หลังจากการติดตั้งรีสตาร์ท XCode อีกครั้ง
  5. ตอนนี้ที่เมนู XCode คุณสามารถใช้เมนูย่อย Edit -> Clang Format เพื่อจัดรูปแบบได้

คุณสามารถเลือกรูปแบบที่แตกต่างกัน ด้วยการเปิดใช้งานFormat On Saveคุณสามารถเพิ่มความสามารถในการฟอร์แมตอัตโนมัติได้

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


1
ไม่สามารถใช้งานได้อีกต่อไปใน XCode 8+
Nathan F.

ใช่คุณถูก @NathanFiscaletti ฉันได้อัปเกรดจาก 7.2 เป็น 9.2 ขึ้นไปแล้วโซลูชันไม่ทำงานอีกต่อไป แต่ฉันพบวิธีแก้ปัญหา ฉันจะเพิ่มโพสต์ใหม่!
csonuryilmaz

ฉันติดตั้ง Alcatraz แล้ว แต่ปลั๊กอินClangFormatไม่รองรับ Xcode 9 อีกต่อไป github.com/travisjeffery/ClangFormat-Xcode/issues/129
csonuryilmaz

1

หาก Xcode เวอร์ชัน 3.x ของคุณคุณควรใช้ "สคริปต์ผู้ใช้" ด้วยUncrustifyนี่คือตัวอย่าง:

#!/bin/sh

echo -n "%%%{PBXSelection}%%%"
$YOURPATH_TO_UNCRUSTIFY/uncrustify -q -c $YOURPATH_TO_UNCRUSTIFY_CONFIG/CodeFormatConfig.cfg -l OC+
echo -n "%%%{PBXSelection}%%%"

เพิ่มด้านบนให้กับ Xcode "สคริปต์ผู้ใช้" ของคุณ

ถ้า Xcode รุ่น 4.x ผมคิดว่าคุณควรอ่านบล็อกนี้: รหัสการจัดรูปแบบใน Xcode 4 ,

ด้วยวิธีนี้ใช้ "บริการของ Apple" แต่ไม่ดีพอทำให้เกิดประสบการณ์ที่ช้าเกินไปไม่มีใครมีสิ่งเดียวกันหรือไม่

ทำไม apple วาง "สคริปต์ผู้ใช้" .... xD


1

ขั้นแรกให้ตรวจสอบการตั้งค่า XCode "เยื้อง" คุณสามารถปรับแต่งสิ่งต่าง ๆ ได้บ้าง ...

สำหรับการควบคุมที่ละเอียดยิ่งขึ้นโปรดอ้างอิงเอกสารค่าเริ่มต้นผู้ใช้ XCodeจาก apple (อาจต้องมีการเข้าสู่ระบบของนักพัฒนาเพื่อดู) ตัวอย่างเช่นฉันสามารถปิดการใช้งาน "เยื้องกับวาง" โดยการป้อนต่อไปนี้ใน terminal:

defaults write com.apple.XCODE PBXIndentOnPaste No

เพื่ออ่านการตั้งค่าของคุณกลับมา:

defaults read com.apple.XCODE PBXIndentOnPaste

1

สิ่งนี้ใช้ได้เฉพาะกับภาษาที่ไม่ใช่การเว้นช่องว่าง แต่วิธีการแก้ปัญหาของฉันคือการลบช่องว่างทั้งหมดยกเว้นช่องว่างจากนั้นเพิ่มบรรทัดใหม่หลังจากอักขระที่มักจะอธิบาย EOL (เช่นแทนที่ ';' ด้วย '; \ n') วิธีแก้ปัญหา^ + i

ฉันใช้ Python

โค้ดตัวอย่างเพียงแค่แทนที่ชื่อไฟล์:

python -c "import re; open(outfile,'w').write(re.sub('[\t\n\r]','',open(infile).read()).replace(';',';\n').replace('{','{\n').replace('}','}\n'))"

มันไม่สมบูรณ์แบบ (ตัวอย่าง: สำหรับลูป) แต่ฉันชอบมัน


1

เราสามารถใช้ Xcode Formatter ซึ่งใช้ uncrustify เพื่อจัดรูปแบบซอร์สโค้ดของคุณได้อย่างง่ายดายเนื่องจากทีมของคุณต้องการเป็น!

การติดตั้งวิธีที่แนะนำคือการโคลนโครงการ GitHub หรือดาวน์โหลดจากhttps://github.com/octo-online/Xcode-formatterและเพิ่มไดเรกทอรี CodeFormatter ในโครงการ Xcode ของคุณเพื่อรับ: Xcode การจัดรูปแบบรหัสตามทางลัด: ทางลัดไปยัง จัดรูปแบบแหล่งที่แก้ไขในการจัดรูปแบบโค้ดอัตโนมัติของเวิร์กสเปซปัจจุบัน: เพิ่มเฟสบิลด์ให้กับโครงการของคุณเพื่อจัดรูปแบบซอร์สปัจจุบันเมื่อแอปพลิเคชันสร้างการจัดรูปแบบแหล่งที่มาทั้งหมด: จัดรูปแบบโค้ดทั้งหมดของคุณด้วยบรรทัดคำสั่งเดียว ไฟล์กับทีมพัฒนาโครงการของคุณ 1) วิธีการตั้งค่าตัวจัดรูปแบบรหัสสำหรับโครงการของคุณติดตั้งไม่น่าเชื่อถือวิธีที่ง่ายที่สุดคือการใช้ Brew: $ Brew ติดตั้งไม่น่าเชื่อถือ

ในการติดตั้ง Brew: $ ruby ​​–e“ $ (curl –fsSkl raw.github.com/mxcl/homebrew/go)”

ตรวจสอบว่าไม่น่าเชื่อถือตั้งอยู่ใน / usr / local / bin $ ซึ่งไม่น่าไว้วางใจ

หากเวอร์ชันที่ไม่น่าเชื่อถือของคุณต่ำกว่า 0.60 คุณอาจต้องติดตั้งด้วยตนเองเนื่องจากมีการเพิ่มไวยากรณ์ Objective-C ที่ทันสมัย เพิ่มไดเรกทอรี CodeFormatter ข้างไฟล์. xcodeproj ของคุณ

ตรวจสอบว่าแอปพลิเคชัน Xcode ของคุณชื่อ "Xcode" (ชื่อเริ่มต้น) คุณสามารถเห็นชื่อนี้ได้ในไดเรกทอรี Applications / (หรือไดเรกทอรีการติดตั้ง Xcode ที่คุณกำหนดเอง) ระวังถ้าคุณมี Xcode หลายอินสแตนซ์บน mac ของคุณ: ตรวจสอบให้แน่ใจว่าจริง ๆ แล้วโปรเจ็กต์ชื่อ "Xcode"! (เพราะเหตุใดชื่อนี้ใช้เพื่อค้นหาไฟล์ Xcode ที่เปิดอยู่ในปัจจุบันดูที่ CodeFormatter / Uncrustify_opened_Xcode_sources.workflow appleScript) ติดตั้งบริการ automator Uncrustify_opened_Xcode_sources.workflow คัดลอกไฟล์นี้ไปยังโฟลเดอร์ ~ / Library / Services / (สร้างโฟลเดอร์นี้ถ้าจำเป็น) ระวังด้วยการดับเบิลคลิกที่ไฟล์. workflow คุณจะติดตั้ง แต่ไฟล์จะถูกลบ! อย่าลืมเก็บสำเนาไว้สำหรับผู้ใช้รายอื่น

วิธีจัดรูปแบบไฟล์ที่เปิดเมื่อสร้างโครงการเพิ่มบิลด์เฟส "run script" ที่มีบรรทัดต่อไปนี้:

sh CodeFormatter / สคริปต์ / formatOpendSources.sh

วิธีจัดรูปแบบไฟล์ในบรรทัดคำสั่ง

หากต้องการฟอร์แมตไฟล์ที่เปิดอยู่ในปัจจุบันให้ใช้ formatOpenedSources.sh:

$ sh CodeFormatter / สคริปต์ / formatOpendSources.sh

หากต้องการฟอร์แมตไฟล์ทั้งหมดให้ใช้ formatAllSources.sh:

$ sh CodeFormatter / สคริปต์ / formatAllSources.sh PATH

PATH ต้องถูกแทนที่ด้วยพา ธ ต้นทางของคุณ

เช่น; หากชื่อโครงการเป็น TestApp คำสั่งจะเป็น

$ sh CodeFormatter / สคริปต์ / formatAllSources.sh TestApp

มันจะค้นหาไฟล์ทั้งหมดในโครงการและจะจัดรูปแบบไฟล์ทั้งหมดตามที่กำหนดค่าในไฟล์ uncrustify_objective_c.cfg

วิธีการเปลี่ยนกฎของฟอร์แมตเตอร์

แก้ไข CodeFormatter / uncrustify_objective_c.cfg เปิดด้วย TextEdit


0

ฉันกำลังค้นหาวิธีที่ง่าย และหาบนกลาง

ก่อนอื่นให้คัดลอกข้อความ json และตรวจสอบความถูกต้องบนjsonlintหรือสิ่งที่คล้ายกัน จากนั้นเพื่อคัดลอกจาก jsonlint แล้ว json จะถูกจัดรูปแบบแล้ว และวางรหัสบน Xcode ด้วยการรักษารูปแบบทางลัดshift+ option+ command+v


-1

คุณสามารถดูและเปลี่ยนทางลัดใด ๆ ในพา ธ นี้: Xcode -> Preferences -> Key Bindings

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