Xcode 소스 자동 형식


179

C # 개발자는 Visual Studio 2008의 자동 서식에 크게 의존하게되었습니다. 특히 CTRL+ K, D키보드 단축키를 사용하여 느슨하게 구현 한 후 다시 모양을 만듭니다.

이제 Objective-C를 배우려고하는데 Xcode의 특정 기능이 누락되었지만 서식 단축키만큼 고통 스럽지는 않습니다. 내 Google 검색은 내장 된 결과를 얻지 못했지만 일부 해킹이있는 것 같습니다. 내가 누락되었거나 Xcode에이 기능이 기본적으로 존재하지 않습니까?


1
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

이 질문과 비슷합니다. 대답은 메뉴 항목을 다시 들여 쓰기 코드를 키보드 바로 가기가 있습니다 stackoverflow.com/questions/3558709/...
바질 우르 큐

2
지난 5 년 동안 애플의 혁신이 있었습니까? 이 질문이 여전히 관련이 있습니까? 아니면 XCode가 코드를 형식화하는 새롭고 더 나은 솔루션입니까?
mm24

답변:


134

불행히도 Xcode에는 VS 또는 Jalopy for Eclipse만큼 광범위한 것이 없습니다. Structure > Re-Indent소스 파일에 코드를 붙여 넣을 때 사용되는 자동 서식 지정 과 같은 일부 다른 기능이 있습니다. 그래도 나는 당신과 함께 있습니다. 서식 문제를 해결하는 데 도움 될 내용 이 분명히 있어야 합니다.


3
감사합니다. 적어도 내가 빠진 것이 없다는 것을 알고 있습니다. 자동 식별은 고통을 덜어주는 데 도움이되지만 타사 솔루션을 살펴 봐야합니다.
jslatts

5
답변으로 선택해서는 안됩니다. @ken에서 아래의 대답은 정확
라이언 Angilly

@RyanAngilly이 질문에 대한 답변이 접수되었습니다. 그 이후로 Xcode로 많은 것들이 바뀌 었습니다. ;-)
Marc W

1
@RyanAngilly ken은 자동 들여 쓰기 방법 만 설명했습니다. "공백"과 줄 바꿈 및 추가 및 제거와 같은 형식이 실제로 의미하는 것은 아닙니다.
dergab

5
들여 쓰기는 control-i로 고정 할 수 있으며, 선택된 모든 줄을 들여 쓰기합니다.
zaph

427

의 그 Ctrl+ i.

또는 첨단 기술의 경우 잘라서 붙여 넣습니다. 붙여 넣기시 다시 포맷됩니다.


감사! 메뉴에 실제로 키보드 단축키가 표시되지 않으므로 특히 유용합니다.
jslatts

37
그러나 이것은 들여 쓰기 만합니다. 버팀대 이동, 줄 바꿈 관리 등은 어떻습니까?
Peter Ajtai

14
코드 포매터가 처리하는 모든 작업을 수행하지 않으므로 허용해서는 안됩니다. 다시 들여 쓰기
powerj1984

1
좋은 팁. XCode가 이것을 가지고 있지 않다는 사실에 추가 충격을받습니다.
AndrewK

4
예 @ powerj1984. 나는 이것에 실망했다. 이 후 적절한 공간을 추가하지 않습니다 ,, =또는 다른 연산자를. 그것이 의도 한 것. 다른 건 없어 Mac은 여기서 Microsoft로부터 배워야합니다.
shashwat

35

고려할만한 두 가지 옵션을 추천하고 싶습니다. 아주 새롭고 진화하는 것.

ClangFormat-Xcode (무료)-각 cmd + s 파일에서 특정 스타일로 다시 포맷되고 저장되어 팀 내에서 쉽게 배포

@travisjeffery의 Clang 형식 도구를 사용하여 코드를 형식화하는 Xcode 플러그인.

clang-format을 사용하면 Clang을 사용하여 코드를 LLVM, Google, Chromium, Mozilla, WebKit 또는 자체 구성과 같은 스타일로 형식화 할 수 있습니다.

Objective-Clean (유료, 아직 시도하지 않음)-사전 정의 된 스타일 규칙을 위반하면 앱 빌드 오류 발생-팀 내에서 사용하기가 어려울 수 있으므로 시도하지 않았습니다.

최소한의 설정으로 Xcode가 앱을 사용하여 규칙을 시행하도록 할 수 있습니다. 규칙 중 하나를 위반하면 Xcode에서 빌드 오류가 발생하여 문제의 행으로 바로 이동합니다.


이 플러그인으로 자신 만의 형식 구성을 어떻게 만드나요?
nbro

27

xcode에서는이 단축키를 사용하여 소스 코드를 다시 들여 쓸 수 있습니다

들여 쓰기 문제가있는 파일로 이동하여 다음을 따르십시오.

  • Cmd+ A모든 소스 코드를 선택

  • Ctrl+ I들여 쓰기

도움이 되었기를 바랍니다.


18

나의 개인적인 마음에 드는 PrettyC wantabe는 uncrustify입니다 : http://uncrustify.sourceforge.net/ . 그러나 수십억 개의 옵션이 있으므로 사용자가 원하는 방식으로 옵션을 설정하기 위해 작성한 GUI를 UniversalIndentGUI_macx (sourceforge에도 있음)를 다운로드하는 것이 좋습니다.

그런 다음이 사용자 정의 사용자 스크립트를 추가하여 선택한 텍스트를 잘리지 않게 할 수 있습니다.

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

uncrustify, 특히 형식 지정 블록에 문제가 있습니다.
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마우스 오른쪽 단추로 클릭하십시오 . 고토 구조-> 다시 들여 쓰기


6

iOS / OS X 개발자에게 도움이되는 지능형 Objective-C IDE 인 AppCode 라이센스를 구입하는 것이 좋습니다 . AppCode는 Xcode와 완벽하게 호환되지만 강력한 기능 을 추가 할 때 Xcode를 뛰어 넘습니다 .

JetBrains 에서 Intellij IDEA IDE 의 Objective-C 변형을 AppCode하십시오 . 또한 Visual Studio 에 널리 사용되는 ReSharper 확장 기능의 작성자이기도합니다. 여기서 주요 목적은 Microsoft 제품에 IDEA 경험을 제공하려는 필사적 인 시도 인 것 같습니다.

AppCode는 완벽한 리팩토링 및 코드 탐색 지원을 제공하는 자체 코드 분석기를 사용하고 있습니다. 코드를 다시 들여 쓰기하고 완전히 다시 포맷하는 기능이 있습니다 (어려운 경우에도 여전히 몇 가지 서식 설정이 누락되었지만 대부분 잘 작동합니다).

물론 시험판을 사용해 볼 수도 있습니다.



4

XCode 플러그인 https://github.com/benoitsan/BBUncrustifyPlugin-Xcode를 사용해보십시오.

github 저장소를 복제하고 XCode에서 플러그인 프로젝트를 열고 실행하십시오. 자동으로 설치됩니다. 포맷터 플러그인을 사용하기 전에 Xode를 다시 시작하십시오.

uncrustify util을 설치하기 전에 잊지 마십시오. 예를 들어 사제

brew install uncrustify

PS 편집> 포맷 코드> BBUncrustifyPlugin 환경 설정> 포맷시 저장에서 "포맷 저장 후"기능을 켤 수 있습니다.

희망이 u에 유용 할 것입니다 ;-)



3

CTRL + i

그게 다야.

(아니요 COMMAND+ i)


6
이것은 이미 4 번 답변으로 언급되었습니다. 답변하기 전에 다른 답변을 읽으십시오.
fishinear

또한 CMD + i는 제품-> 프로필로 이동하는 것과 동일하며 형식과 다릅니다.
inga

3

ClangFormat을 사용하는 것이 좋습니다. 설치하려면 다음 단계를 따르십시오.

  1. Xcode 지원 Alcatraz 패키지 관리자 설치 Xcode 5+ 및 OS X 10.9+
  2. 설치 후 XCode를 다시 시작하십시오.
  3. XCode 열기-> 창 메뉴-> 패키지 관리자
  4. ClangFormat을 검색 (찾기)하여 설치하십시오. 설치 후 XCode를 다시 시작하십시오.
  5. 이제 XCode 메뉴에서 편집-> Clang 형식 하위 메뉴를 사용하여 형식을 지정할 수 있습니다.

다른 유형의 서식을 선택할 수 있습니다. 또한 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 와 함께 "User Script"를 사용해야합니다 .

#!/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의 코드 형식 ,

이런 식으로 "애플 서비스"를 사용했지만 충분하지 않고 경험이 너무 느리며 누구에게나 같은 것이 있습니까?

왜 애플 드롭 "사용자 스크립트".... xD


1

먼저 XCode 환경 설정 "들여 쓰기"섹션을 검사하십시오. 거기에서 사물을 꽤 커스터마이징 할 수 있습니다 ...

보다 세밀한 제어에 대해서는 apple 의 XCode User Defaults 문서를 참조하십시오 . (보려면 개발자 로그인이 필요할 수 있습니다). 예를 들어 터미널에 다음을 입력하여 "붙여 넣기시 들여 쓰기"를 비활성화 할 수있었습니다.

defaults write com.apple.XCODE PBXIndentOnPaste No

설정을 다시 읽으려면 :

defaults read com.apple.XCODE PBXIndentOnPaste

1

공백이 아닌 언어의 경우에만 작동하지만 공백을 제외한 모든 공백을 제거한 다음 일반적으로 EOL을 나타내는 문자 뒤에 줄 바꿈을 추가하여 (예 : ';'을 '; \ n'으로 대체) 유비쿼터스 ^ + i 솔루션.

나는 파이썬을 사용합니다.

예제 코드는 파일 이름을 바꾸십시오.

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

완벽하지는 않지만 (예 : for 루프) 좋아합니다.


1

우리는 Xcode Formatter를 사용하여 팀이 원하는대로 소스 코드를 쉽게 형식화하기 위해 uncrustify를 사용합니다.

설치 권장되는 방법은 GitHub 프로젝트를 복제하거나 https://github.com/octo-online/Xcode-formatter 에서 다운로드하는 것입니다. 하여 Xcode 프로젝트에 CodeFormatter 디렉토리를 추가하여 얻는 것입니다. Xcode 바로 가기 기반 코드 형식 : 바로 가기 현재 작업 공간에서 수정 된 소스 형식 자동 코드 형식화 : 응용 프로그램이 모든 소스 형식을 빌드 할 때 현재 소스 형식을 지정하기 위해 프로젝트에 빌드 단계 추가 : 형식화 규칙을 프로젝트와 공유하는 하나의 명령 행으로 모든 코드 형식화 : 동일한 구성 편집 및 사용 프로젝트 개발자 팀과 함께 파일 1) 프로젝트의 코드 포맷터를 설정하는 방법 uncrustify 설치 가장 간단한 방법은 brew를 사용하는 것입니다. $ brew install uncrustify

brew를 설치하려면 : $ ruby ​​–e“$ (curl –fsSkl raw.github.com/mxcl/homebrew/go)”

uncrustify가 / usr / local / bin $에 있는지 확인하십시오.

최신 버전의 Objective-C 구문이 최근에 추가되었으므로 uncrustify 버전이 0.60보다 낮은 경우 수동으로 설치해야합니다. .xcodeproj 파일 옆에 CodeFormatter 디렉토리 추가

Xcode 응용 프로그램의 이름이 "Xcode"(기본 이름)인지 확인하십시오.이 이름은 Applications / 디렉토리 (또는 사용자 정의 Xcode 설치 디렉토리)에서 확인할 수 있습니다. Mac에 여러 개의 Xcode 인스턴스가있는 경우주의하십시오 : 프로젝트의 이름이 실제로 "Xcode"인지 확인하십시오! (이 이유는?이 이름은 현재 열린 Xcode 파일을 찾는 데 사용됩니다. CodeFormatter / Uncrustify_opened_Xcode_sources.workflow appleScript를 참조하십시오). 자동화 서비스 설치 Uncrustify_opened_Xcode_sources.workflow이 파일을 ~ / Library / Services / 폴더에 복사합니다 (필요한 경우이 폴더를 만듭니다).주의 : .workflow 파일을 두 번 클릭하면 설치되지만 파일은 제거됩니다! 다른 사용자를 위해 사본을 남겨 두십시오.

프로젝트를 빌드 할 때 열린 파일을 형식화하는 방법 다음 행을 포함하는 빌드 단계 "실행 스크립트"를 추가하십시오.

sh CodeFormatter / scripts / formatOpendSources.sh

명령 줄에서 파일을 포맷하는 방법

현재 열린 파일을 포맷하려면 formatOpenedSources.sh를 사용하십시오.

$ sh CodeFormatter / scripts / formatOpendSources.sh

모든 파일을 포맷하려면 formatAllSources.sh를 사용하십시오.

$ sh CodeFormatter / scripts / formatAllSources.sh PATH

PATH는 소스 경로로 바꿔야합니다.

E : g; 프로젝트 이름이 TestApp이면 명령은

$ sh CodeFormatter / scripts / formatAllSources.sh TestApp

프로젝트에서 모든 파일을 찾고 uncrustify_objective_c.cfg 파일에 구성된대로 모든 파일을 형식화합니다.

포맷터 규칙을 변경하는 방법

TextEdit으로 열린 CodeFormatter / uncrustify_objective_c.cfg 편집


0

글쎄, 나는 쉬운 방법을 찾고 있었다. 그리고 medium에서 찾으십시오 .

먼저 json 텍스트를 복사하여 jsonlint 또는 이와 유사한 것으로 확인하십시오 . 그런 다음 jsonlint에서 복사하려면 이미 json이 형식화됩니다. 그리고 형식을 유지하면서 Xcode에 코드를 붙여 넣습니다. 바로 가기 shift+ option+ command+v


-1

이 경로에서 Xcode-> 환경 설정-> 키 바인딩 단축키를보고 변경할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.