Định dạng tự động nguồn Xcode


178

Là một nhà phát triển C #, tôi đã trở nên phụ thuộc rất nhiều vào định dạng tự động trong Visual Studio 2008. Cụ thể, tôi sẽ sử dụng phím tắt CTRL+ K, Dbàn phím để buộc mọi thứ trở lại hình dạng sau khi triển khai cẩu thả.

Bây giờ tôi đang cố gắng học Objective-C và đang thiếu một số tính năng nhất định trong Xcode, nhưng có lẽ không có tính năng nào đau đớn như phím tắt định dạng. Các tìm kiếm Google của tôi không mang lại kết quả gì, mặc dù có vẻ như có một số hack. Tôi có thiếu thứ gì không hoặc tính năng này không tồn tại nguyên bản trong Xcode?


1
Có một số liên kết tốt đến các giải pháp kịch bản Xcode trong các câu trả lời cho câu hỏi SO
nall

Cảm ơn các liên kết. Tôi cũng đã tìm thấy điều này: blog.carbonfive.com/2009/08/iphone/code-formatted-in-xcode Nó cơ bản bao gồm các kỹ thuật tương tự như liên kết của bạn. Tôi sẽ thử nó và xem nó hoạt động tốt như thế nào.
jslatts

1
Giải pháp của bên thứ ba sử dụng UniversalIndentGUI: blog.carbonfive.com/2009/08/iphone/code-formatting-in-xcode
jslatts

Tương tự với câu hỏi này; câu trả lời có mục menu và phím tắt để mã lại thụt lề: stackoverflow.com/questions/3558709/iêu
Basil Bourque

2
Có sự đổi mới nào từ Apple trong 5 năm qua về điều này không? Câu hỏi này có còn phù hợp không hay XCode giờ đây là một giải pháp mới và tốt hơn để định dạng mã?
mm24

Câu trả lời:


133

Thật không may, Xcode không có bất cứ thứ gì rộng lớn như VS hoặc Jalopy cho Eclipse có sẵn. Có một số tính năng khác nhau, chẳng hạn như Structure > Re-Indentđịnh dạng tự động được sử dụng khi bạn dán mã vào tệp nguồn của mình. Tôi hoàn toàn với bạn, mặc dù; chắc chắn nên có một cái gì đó trong đó để giúp đỡ với các vấn đề định dạng.


3
Cảm ơn bạn, ít nhất tôi biết tôi không thiếu thứ gì. Tự động nhận dạng sẽ giúp giảm bớt nỗi đau một số điều, nhưng tôi sẽ phải xem xét một giải pháp của bên thứ ba.
jslatts

5
Điều này không nên được chọn là câu trả lời. câu trả lời dưới đây từ @ken là chính xác
Ryan Angilly

@RyanAngilly Lưu ý năm câu hỏi này đã được trả lời. Nhiều thứ đã thay đổi với Xcode kể từ đó. ;-)
Marc W

1
@RyanAngilly ken chỉ mô tả cách tự động thụt lề. Đó không phải là "định dạng" (với khoảng trắng và thêm và xóa dòng mới và những thứ như vậy) thực sự có nghĩa là gì.
dergab

5
Việc thụt lề có thể được cố định bằng control-i, sẽ thụt lề tất cả các dòng được chọn.
zaph

427

Đó là Ctrl+ i.

Hoặc cho công nghệ thấp, cắt và sau đó dán. Nó sẽ định dạng lại trên dán.


Cảm ơn! Điều đó rất hữu ích, đặc biệt là khi menu không thực sự hiển thị phím tắt.
jslatts

37
Nhưng điều này chỉ làm thụt lề. Điều gì về di chuyển niềng răng, chăm sóc ngắt dòng, vv?
Peter Ajtai

14
Không nên chấp nhận vì nó không thực hiện tất cả những điều mà trình định dạng mã sẽ xử lý. Nó chỉ thụt lại,
powerj1984

1
Mẹo tốt. Thêm khập khiễng rằng XCode không có điều này.
AndrewK

4
có @ powerj1984. Tôi cũng thất vọng với điều này. Nó không thêm không gian thích hợp sau ,, =hoặc các toán tử khác. Những gì nó làm chỉ có ý định. Không có gì khác. Mac thực sự cần học hỏi từ Microsoft ở đây.
shashwat

35

Tôi muốn đề xuất hai lựa chọn đáng để xem xét. Cả hai khá mới và phát triển.

ClangFormat-Xcode (miễn phí) - trên mỗi tệp cmd + s được định dạng lại theo kiểu cụ thể và được lưu, dễ triển khai trong nhóm

Trình cắm Xcode để định dạng mã của bạn bằng các công cụ định dạng của Clang, bởi @travisjeffery.

Với định dạng clang, bạn có thể sử dụng Clang để định dạng mã của mình thành các kiểu như LLVM, Google, Chromium, Mozilla, WebKit hoặc cấu hình của riêng bạn.

Objective-Clean (đã trả tiền, chưa thử) - lỗi xây dựng ứng dụng nếu các quy tắc kiểu được xác định trước bị vi phạm - có thể khá khó sử dụng trong nhóm, vì vậy tôi đã không thử.

Với thiết lập rất tối thiểu, bạn có thể lấy Xcode để sử dụng Ứng dụng của chúng tôi để thực thi các quy tắc của bạn. Nếu bạn bị bắt gặp vi phạm một trong các quy tắc của mình, Xcode sẽ đưa ra lỗi xây dựng và đưa bạn đến đúng đường vi phạm.


Làm thế nào để bạn tạo cấu hình định dạng của riêng bạn với plugin này?
nbro

27

Trong xcode, bạn có thể sử dụng phím tắt này để thụt lại mã nguồn của mình

Đi đến tệp, có vấn đề thụt lề và làm theo điều này:

  • Cmd+ Ađể chọn tất cả các mã nguồn

  • Ctrl+ Iđể thụt lại

Hi vọng điêu nay co ich.


18

Yêu thích cá nhân của tôi PrettyC Wantabe là không đáng tin cậy: http://uncrustify.sourceforge.net/ . Tuy nhiên, nó có một vài tỷ tùy chọn, vì vậy tôi cũng khuyên bạn nên tải xuống UniversalIndentGUI_macx, (cũng trên sourceforge) một GUI mà ai đó đã viết để giúp đặt các tùy chọn theo cách bạn thích.

Sau đó, bạn có thể thêm tập lệnh người dùng tùy chỉnh này để không tin cậy văn bản đã chọn:

#! /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}%%%"

Tôi đã có vấn đề với không đáng tin cậy, đặc biệt là với các khối định dạng.
Liron Yahdav

12

Bạn có thể sử dụng Command+ Ađể chọn tất cả nội dung và tiếp theo Ctrl+ Iđể định dạng nội dung đã chọn.


9

Tôi cũng cảm thấy xcode nên có chức năng này. Vì vậy, tôi đã thực hiện một phần mở rộng để làm điều đó: Bơi

Cài đặt đơn giản bởi brew cask install swimat xem trước

Bạn có thể dùng thử, xem https://github.com/Jintin/Swimat để biết thêm thông tin.


8

Cmd A + Ctrl I

Hoặc Cmd Avà sau đó nhấp chuột phải . Cấu trúc Goto -> Tái thụt


6

Cân nhắc việc mua cho mình một giấy phép cho AppCode , một IDE Objective-C thông minh giúp các nhà phát triển iOS / OS X. AppCode hoàn toàn tương thích với Xcode, nhưng vượt xa Xcode trong việc thêm các tính năng mạnh mẽ .

AppCode một biến thể Objective-C của Intellij IDEA IDE từ JetBrains . Họ cũng là tác giả của ReSharper nổi tiếng phần mở rộng cho Visual Studio, mục đích chính từ đây có vẻ như là một nỗ lực tuyệt vọng để mang lại trải nghiệm IDEA cho sản phẩm của Microsoft.

AppCode đang sử dụng bộ phân tích mã riêng của mình, nó cung cấp khả năng tái cấu trúc và hỗ trợ điều hướng mã gần hoàn hảo. Cũng có khả năng thụt lại và định dạng lại hoàn toàn mã (mặc dù tôi vẫn thiếu một vài cài đặt định dạng trong trường hợp khó, nhưng chủ yếu là nó hoạt động tốt).

Bạn có thể thử phiên bản dùng thử, tất nhiên.



4

Bạn có thể dùng thử plugin XCode https://github.com/benoitsan/BBUncrustifyPlugin-Xcode

Chỉ cần sao chép kho lưu trữ github, mở dự án plugin trong XCode và chạy nó. Nó sẽ được cài đặt tự động. Khởi động lại Xode trước khi sử dụng plugin định dạng.

Đừng quên cài đặt không tin cậy trước. Homebrew, ví dụ

brew install uncrustify

PS Bạn có thể bật tính năng "sau khi lưu định dạng" tại Chỉnh sửa> Mã định dạng> BBUncrustifyPlugin Preferences> Format On Save

Hy vọng điều này sẽ hữu ích cho bạn ;-)



3

CTRL + i

đó là nó.

(không COMMAND+ i)


6
Điều này đã được đề cập như một câu trả lời 4 lần rồi - vui lòng đọc các câu trả lời khác trước khi trả lời.
câu cá

Ngoài ra, CMD + i giống như đi tới Sản phẩm -> Hồ sơ không giống với định dạng.
inga

3

Tôi đề nghị sử dụng ClangFormat. Để cài đặt, vui lòng làm theo các bước sau:

  1. Cài đặt trình quản lý gói lớp Methraz cho XCode Hỗ trợ Xcode 5+ & OS X 10.9+
  2. Sau khi cài đặt khởi động lại XCode.
  3. Mở XCode -> Menu Window -> Trình quản lý gói
  4. Tìm kiếm (tìm) ClangFormat và cài đặt nó. Sau khi cài đặt lại khởi động lại XCode.
  5. Bây giờ tại menu XCode, bạn có thể sử dụng menu con Chỉnh sửa -> Clang Format để định dạng.

Bạn có thể chọn các loại định dạng khác nhau. Cũng bằng cách bật Format On Save, bạn có thể có được khả năng định dạng tự động.

nhập mô tả hình ảnh ở đây


1
Điều này không còn có sẵn trên XCode 8+
Nathan F.

Có, bạn đã đúng @NathanFryptetti Tôi đã nâng cấp từ 7.2 lên 9.2 và giải pháp trên không hoạt động nữa. Nhưng tôi đã tìm thấy một giải pháp. Tôi sẽ thêm một bài viết mới!
csonuryilmaz

Tôi đã cài đặt lớp Methraz nhưng plugin ClangFormat không được hỗ trợ trên Xcode 9 nữa. github.com/travisjeffery/ClangFormat-Xcode/issues/129
csonuryilmaz

1

Nếu Xcode phiên bản 3.x của bạn, bạn nên sử dụng "Tập lệnh người dùng" với Uncrustify , đây là một ví dụ:

#!/bin/sh

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

thêm ở trên vào Xcode "User Script" của bạn.

Nếu Xcode phiên bản 4.x, tôi nghĩ bạn nên đọc blog này: Định dạng mã trong Xcode 4 ,

Theo cách này, đã sử dụng "Dịch vụ của Apple", nhưng nó không đủ tốt, gây ra trải nghiệm quá chậm, có ai có điều tương tự không?

tại sao apple bỏ "tập lệnh người dùng" .... xD


1

Đầu tiên, kiểm tra phần "thụt lề" tùy chọn XCode. Bạn có thể tùy chỉnh mọi thứ một chút ở đó ...

Để kiểm soát chi tiết hơn, hãy tham khảo tài liệu Mặc định người dùng XCode từ apple. (Có thể yêu cầu đăng nhập của nhà phát triển để xem). Ví dụ: tôi có thể vô hiệu hóa "thụt lề dán" bằng cách nhập thông tin sau vào thiết bị đầu cuối:

defaults write com.apple.XCODE PBXIndentOnPaste No

để đọc lại cài đặt của bạn:

defaults read com.apple.XCODE PBXIndentOnPaste

1

Điều này chỉ hoạt động đối với các ngôn ngữ không được phân định khoảng trắng, nhưng giải pháp của tôi là xóa tất cả các khoảng trắng ngoại trừ khoảng trắng, sau đó thêm một dòng mới sau các ký tự thường mô tả EOL (ví dụ: thay thế ';' bằng '; \ n') ^ + i giải pháp.

Tôi sử dụng Python.

Mã ví dụ, chỉ cần thay thế tên tệp:

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

Nó không hoàn hảo (Ví dụ: cho các vòng lặp), nhưng tôi thích nó.


1

Chúng tôi có thể sử dụng Xcode Formatter sử dụng không tin cậy để dễ dàng định dạng mã nguồn của bạn vì nhóm của bạn chính xác muốn trở thành!.

Cài đặt Cách được đề xuất là sao chép dự án GitHub hoặc tải xuống từ https://github.com/octo-online/Xcode-formatter và thêm thư mục CodeFormatter trong dự án Xcode của bạn để nhận: Định dạng mã dựa trên phím tắt Xcode: định dạng nguồn đã sửa đổi trong định dạng mã tự động của không gian làm việc hiện tại: thêm giai đoạn xây dựng vào dự án của bạn để định dạng nguồn hiện tại khi ứng dụng xây dựng tất cả định dạng nguồn: định dạng tất cả mã của bạn bằng một dòng lệnh quy tắc định dạng của bạn được chia sẻ bởi dự án: chỉnh sửa và sử dụng cùng một cấu hình tập tin với nhóm phát triển dự án của bạn 1) Cách thiết lập trình định dạng mã cho dự án của bạn Cài đặt không tin cậy Cách đơn giản nhất là sử dụng brew: $ brew install unsrustify

Để cài đặt brew: $ ruby ​​Nhậne $ $ (curl từfsSkl raw.github.com/mxcl/homebrew/go)

Kiểm tra xem unsustustify nằm ở / usr / local / bin $ mà không tin cậy

Nếu phiên bản không đáng tin cậy của bạn thấp hơn 0,60, bạn có thể phải cài đặt thủ công vì cú pháp Objective-C hiện đại đã được thêm vào gần đây. Thêm thư mục CodeFormatter bên cạnh tệp .xcodeproj của bạn

Kiểm tra xem ứng dụng Xcode của bạn có tên là "Xcode" (tên mặc định) Bạn có thể thấy tên này trong thư mục Ứng dụng / (hoặc thư mục cài đặt Xcode tùy chỉnh của bạn). Hãy cẩn thận nếu bạn có nhiều phiên bản Xcode trên máy mac của mình: đảm bảo rằng một dự án thực sự có tên là "Xcode"! (Tại sao lại như vậy? Tên này được sử dụng để tìm các tệp Xcode hiện đang mở. Xem CodeFormatter / Uncrustify_opened_Xcode_source.workflow appleScript). Cài đặt dịch vụ tự động Uncrustify_opened_Xcode_source.workflow Sao chép tệp này vào thư mục ~ / Library / Services / của bạn (tạo thư mục này nếu cần). Hãy cẩn thận: bằng cách nhấp đúp vào tệp .workflow, bạn sẽ cài đặt tệp nhưng tệp sẽ bị xóa! Hãy chắc chắn để lại một bản sao của nó cho người dùng khác.

Cách định dạng các tệp đã mở khi xây dựng dự án Thêm giai đoạn xây dựng "chạy tập lệnh" chứa dòng sau:

sh CodeFormatter / scripts / formatOpendSource.sh

Cách định dạng tệp trong dòng lệnh

Để định dạng các tệp hiện đang mở, hãy sử dụng formatOpenedSource.sh:

$ sh CodeFormatter / scripts / formatOpendSource.sh

Để định dạng tất cả các tệp, sử dụng format ALLSource.sh:

$ sh CodeFormatter / scripts / format ALLSource.sh PATH

PATH phải được thay thế bằng đường dẫn nguồn của bạn.

Ví dụ; nếu tên dự án là TestApp thì lệnh sẽ là

$ sh CodeFormatter / scripts / format ALLSource.sh TestApp

nó sẽ tìm kiếm tất cả các tệp trong dự án và sẽ định dạng tất cả các tệp như được định cấu hình trong tệp unsrustify_objective_c.cfg.

Làm cách nào để thay đổi quy tắc của trình định dạng

Chỉnh sửa CodeFormatter / unsrustify_objective_c.cfg mở bằng TextEdit


0

Vâng, tôi đã tìm kiếm một cách dễ dàng. Và tìm hiểu trên phương tiện .

Đầu tiên để sao chép văn bản json và xác nhận nó trên jsonlint hoặc một cái gì đó tương tự. Sau đó, để sao chép từ jsonlint, json đã được định dạng. Và dán mã trên Xcode với việc giữ nguyên định dạng, phím tắt shift+ option+ command+v


-1

Bạn có thể thấy và thay đổi bất kỳ lối tắt nào tại đường dẫn này: Xcode -> Tùy chọn -> Ràng buộc chính.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.