web-dev-qa-db-ja.com

Xcodeソースの自動フォーマット

C#開発者として、Visual Studio 2008の自動書式設定に大きく依存するようになりました。具体的には、 CTRL + K 、 D ずさんな実装の後、強制的に形状に戻すキーボードショートカット。

私は現在Objective-Cを学ぼうとしており、Xcodeの特定の機能が欠落していますが、おそらくフォーマットショートカットと同じくらい苦痛なものはありません。いくつかのハッキングがあるように見えますが、私のGoogle検索では何も組み込まれていません。 Xcodeに何か欠けているのか、この機能がネイティブに存在しないのですか?

170
jslatts

残念ながら、XcodeにはVSやJalopy for Eclipseほど広範なものはありません。 Structure > Re-Indentやソースファイルにコードを貼り付けるときに使用される自動書式設定など、いくつかの異なる機能があります。私は完全にあなたと一緒です。間違いなくshould書式設定の問題に役立つ何かがそこにあります。

126
Marc W

それは Ctrl + i

または、ローテクの場合は、カットしてから貼り付けます。貼り付け時に再フォーマットされます。

410
Ken

検討する価値のある2つのオプションをお勧めします。まったく新しく、進化しています。

ClangFormat-Xcode (無料)-各cmd + sファイルで特定のスタイルに再フォーマットされ保存され、チーム内での展開が簡単

@travisjefferyによるClangのフォーマットツールを使用してコードをフォーマットするXcodeプラグイン。

Clang-formatを使用すると、Clangを使用して、LLVM、Google、Chromium、Mozilla、WebKit、または独自の構成などのスタイルにコードをフォーマットできます。

Objective-Clean (有料、まだ試していない)-定義済みのスタイルルールに違反している場合、アプリでビルドエラーが発生する-チーム内で使用するのは非常に難しい可能性があるため、試していない。

非常に最小限の設定で、Xcodeにアプリを使用してルールを適用させることができます。ルールの1つに違反していることがわかれば、Xcodeはビルドエラーをスローし、問題のある行に移動します。

35
matm

Xcodeでは、このショートカットを使用してソースコードをフォーマット(再インデント)できます

  • Command + A すべてのソースコードを選択するには

  • Ctrl + I 再インデントする

お役に立てれば。

26

私の個人的なお気に入りPrettyC wantabeはuncrustifyです: http://uncrustify.sourceforge.net/ 。ただし、数十億のオプションがあるため、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}%%%"
18
geowar

使用できます Command + A すべてのコンテンツを選択して Ctrl + I 選択したコンテンツをフォーマットします。

13
Paweł Walaszek

CmdA + CtrlI

または CmdA そして右クリック。ジャンプ構造->再インデント

9
yuvi

Xcodeにもこの機能が必要だと感じています。だから私はそれを行うための拡張を行いました: Swimat

brew cask install swimatによる簡単なインストール preview

試してみることができます。詳細については、 https://github.com/Jintin/Swimat を参照してください。

6
Jintin

IOS/OS X開発者を支援するインテリジェントなObjective-C IDEである AppCode のライセンスを購入することを検討してください。 AppCodeはXcodeと完全に互換性がありますが、Xcodeを超えて 強力な機能 を追加しています。

Intellij IDEA IDEのObjective-CバリアントをAppCodeします JetBrains から。彼らはまた、人気のある ReSharper Visual Studioの拡張機能の作成者でもあり、ここからの主な目的は、Microsoft製品にIDEA体験をもたらす必死の試みのようです。

AppCodeは独自のコードアナライザーを使用して、ほぼ完璧なリファクタリングとコードナビゲーションをサポートしています。コードを再インデントし、コードを完全に再フォーマットする機能もあります(ハードなケースではいくつかのフォーマット設定が欠落していますが、ほとんどの場合はうまく機能します)。

もちろん、試用版を試すこともできます。

5
jazzcat

https://github.com/octo-online/Xcode-formatter もご覧ください。これはUncrustifyに基づいたフォーマッターで、Xcodeに統合されています。魔法のように機能します。

4
omartin

そのXCodeプラグインを試すことができます https://github.com/benoitsan/BBUncrustifyPlugin-Xcode

Githubリポジトリのクローンを作成し、XCodeでプラグインプロジェクトを開いて実行します。自動的にインストールされます。フォーマッタプラグインを使用する前にXodeを再起動します。

前にuncrustify utilをインストールすることを忘れないでください。自作、例として

brew install uncrustify

追伸[編集]> [フォーマットコード]> [BBUncrustifyPluginの設定]> [保存時にフォーマット]で[フォーマット後保存]機能をオンにできます。

これがuに役立つことを願っています;-)

4
romanvbabenko

ClangFormatを使用することをお勧めします。インストールするには、次の手順に従ってください。

  1. XCodeがXcode 5+およびOS X 10.9+をサポートするためのAlcatrazパッケージマネージャーをインストールする
  2. インストール後、XCodeを再起動します。
  3. XCodeを開く->ウィンドウメニュー->パッケージマネージャー
  4. ClangFormatを検索(検索)してインストールします。インストール後、XCodeを再起動します。
  5. XCodeメニューで、[編集]-> [Clang Format]サブメニューを使用してフォーマットできます。

さまざまなタイプのフォーマットを選択できます。また、Save On Formatを有効にすることで、自動フォーマット機能を利用できます。

enter image description here

3
csonuryilmaz

CTRL + i

それでおしまい。

(いいえ COMMAND + i

2
LianY

最初に、XCodeプリファレンスの「インデント」セクションを調べます。かなりカスタマイズできます...

より詳細な制御については、Appleの XCode User Defaults ドキュメントを参照してください。 (表示するには開発者ログインが必要な場合があります)。たとえば、ターミナルに次のように入力することで、「インデントのインデント」を無効にできました。

defaults write com.Apple.XCODE PBXIndentOnPaste No

設定を読み戻すには:

defaults read com.Apple.XCODE PBXIndentOnPaste
1
SteveS

これは、空白が区切られていない言語でのみ機能しますが、私の解決策は、スペースを除くすべての空白を削除し、通常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'))"

完璧ではありませんが(例:forループ)、私は気に入っています。

1
blerbl

Xcodeバージョン3.xの場合、 ncrustify で「ユーザースクリプト」を使用する必要があります。ここに例を示します。

#!/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 Services」を使用しましたが、それは十分ではなく、遅すぎる経験を引き起こします、誰も同じことを持っていますか?

なぜApple drop "user script" .... xD

1
poplax

スウィフト- https://github.com/nicklockwood/SwiftFormat

Xcode拡張機能とCLIオプションを提供します。

1
jaym

Uncrustifyを使用するXcode Formatterを使用して、チームの希望どおりにソースコードを簡単にフォーマットできます。

インストール推奨される方法は、GitHubプロジェクトを複製するか、 https://github.com/octo-online/Xcode-formatter からダウンロードし、XcodeプロジェクトにCodeFormatterディレクトリを追加して、Xcodeショートカットを取得することです。ベースのコードフォーマット:現在のワークスペースで変更されたソースをフォーマットするショートカット自動コードフォーマット:アプリケーションがすべてのソースをフォーマットするときにプロジェクトにビルドフェーズを追加して現在のソースをフォーマットする:プロジェクトで共有されるフォーマットルールを1つのコマンドラインですべてのコードをフォーマットする:プロジェクト開発チームで同じ構成ファイルを編集して使用する1)プロジェクトのコードフォーマッタをセットアップする方法uncrustifyをインストールする最も簡単な方法はbrewを使用することです:$ brew install uncrustify

Brewをインストールするには:$ Ruby –e“ $(curl –fsSkl raw.github.com/mxcl/homebrew/go)”

Uncrustifyが/ usr/local/binにあることを確認してください$ uncrustify

Uncrustifyのバージョンが0.60より低い場合、最近のObjective-C構文が最近追加されたため、手動でインストールする必要があります。 .xcodeprojファイルの横にCodeFormatterディレクトリを追加します

Xcodeアプリケーションの名前が「Xcode」(デフォルト名)であることを確認してください。この名前は、Applications /ディレクトリ(またはカスタムXcodeインストールディレクトリ)で確認できます。 MacにXcodeのインスタンスが複数ある場合は注意してください。プロジェクトのインスタンスが実際に「Xcode」という名前であることを確認してください。 (これはなぜですか?この名前は、現在開いているXcodeファイルを見つけるために使用されます。CodeFormatter/ Uncrustify_opened_Xcode_sources.workflow appleScriptを参照してください)。 automatorサービス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はソースパスに置き換える必要があります。

例えば;プロジェクト名がTestAppの場合、コマンドは

$ sh CodeFormatter/scripts/formatAllSources.sh TestApp

プロジェクト内のすべてのファイルを検索し、uncrustify_objective_c.cfgファイルで構成されているすべてのファイルをフォーマットします。

フォーマッターのルールを変更する方法

TextFormatでCodeFormatter/uncrustify_objective_c.cfgを開いて編集します

1
Ajeet Sharma

さて、私は簡単な方法を探していました。そして medium を調べてください。

最初にjsonテキストをコピーし、 jsonlint または同様のもので検証します。次に、jsonlintからコピーするために、jsonは既にフォーマットされています。そして、フォーマットを保持したままXcodeにコードを貼り付け、ショートカット shift + option + command + v

0
Shad

このパスでショートカットを表示および変更できます:Xcode-> Preferences-> Key Bindings。

0
erdikanik