2009-10-15 11 views
160

В C# разработчик, я стал очень сильно зависит от автоматического форматирования в Visual Studio 2008. В частности, я буду использовать CTRL + K, D клавиш, чтобы заставить вещи обратно в после моей небрежной реализации.Xcode автоматическое форматирование

Теперь я пытаюсь изучить Objective-C и упускаю некоторые функции в Xcode, но, вероятно, ни один из них не так болезнен, как ярлык форматирования. Мои поисковые запросы Google не дали ничего встроенного, хотя, похоже, есть некоторые хаки. Я что-то упустил или эта функция не существует изначально в Xcode?

+1

решение третьей стороной с использованием UniversalIndentGUI: http://blog.carbonfive.com/2009/08/iphone/code-formatting-in-xcode – jslatts

+1

В ответах на этот вопрос [SO question] есть несколько хороших ссылок на решения для сценариев Xcode (http://stackoverflow.com/questions/1510915/code-formating-in-xcode) – nall

+0

Спасибо за ссылку. Я тоже нашел это: http://blog.carbonfive.com/2009/08/iphone/code-formatting-in-xcode Он охватывает в основном ту же технику, что и ваша ссылка. Я попробую и посмотрю, как хорошо это работает. – jslatts

ответ

111

К сожалению, Xcode не имеет ничего такого широкого, как VS или Jalopy для Eclipse. Существуют некоторые несоизмеримые функции, такие как Structure > Re-Indent, а также автоматическое форматирование, используемое при вставке кода в исходный файл. Я полностью с тобой; там определенно должен быть чем-то там, чтобы помочь с проблемами форматирования.

+2

Спасибо, по крайней мере, я знаю, что чего-то не хватает. Автоидентификация помогает немного угасить боль, но мне придется заглянуть в стороннее решение. – jslatts

+5

это не должно быть выбрано в качестве ответа. ответ ниже от @ken правильный –

+0

@RyanAngilly Обратите внимание на год, на который был дан ответ. С тех пор многое изменилось с Xcode.;-) –

397

Это CTRL + i.

Или для низкотехнологичных, разрезать, а затем вставить. Он будет переформатировать на пасту.

+0

Спасибо! Это полезно, тем более, что меню на самом деле не показывает комбинацию клавиш. – jslatts

+0

Кажется, не работает на XCode 4 для меня? – jowie

+5

@Joe Вы пытались выбрать код перед форматированием? –

18

Мой личный fav PrettyC wantabe является некрасифицированным: http://uncrustify.sourceforge.net/. У него есть несколько миллиардов вариантов, поэтому я также предлагаю вам загрузить UniversalIndentGUI_macx (также на sourceforge) графический интерфейс, который кто-то написал, чтобы настроить параметры так, как вам нравится.

Вы можете добавить этот пользовательские пользовательский скрипт для Uncrustify выбранного текста:

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

У меня были проблемы с uncrustify, особенно с форматированием блоков. –

13

Вы можете использовать Command + , чтобы выбрать все содержимое и следующий Ctrl + I в формат выбранный контент.

+0

@Simon Dugré: При добавлении разметки 'kbd', пожалуйста, не меняйте« Cmd »на« Ctrl »... – BoltClock

+0

@BoltClock: Ок, извините. Спасибо за совет. –

1

Если Xcode версии 3.x, вы должны использовать "Script пользователя" С 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, я думаю, вы должны читать этот дневник: Code Formatting in Xcode 4,

Таким образом, используемый в «Apple Services», но это не достаточно хорошо, вызывает слишком медленный опыт, делает кого-то есть тоже самое ?

Почему яблочная капля «пользовательский сценарий» ....XD

25

В Xcode, вы можете использовать этот ярлык для форматирования (повторно отступа) исходный код

  • Команда + выбрать все исходные коды

  • Ctrl + I к повторному отстугу

Надеюсь, это поможет.

1

Во-первых, проверьте настройки XCode «Отступ». Вы можете немного изменить ситуацию ...

Для получения более мелкозернистого контроля обратитесь к документу XCode User Defaults из яблока. (Может потребоваться регистрация разработчика для просмотра). Например, я был в состоянии отключить "отступа на пасте", введя следующее в терминале:

defaults write com.apple.XCODE PBXIndentOnPaste No 

прочитать назад ваши настройки:

defaults read com.apple.XCODE PBXIndentOnPaste 
9

Cmd + CtrlI

Или CmdA И затем Щелкните правой кнопкой мыши. Goto Структура -> Re-Отступ

5

Приобретите лицензию на AppCode, интеллектуальную Objective-C IDE, которая помогает разработчикам iOS/OS X. AppCode полностью совместим с Xcode, но выходит за пределы Xcode при добавлении powerful features.

Код приложения Objective-C Intellij IDEA IDE от JetBrains. Они также являются авторами популярного расширения ReSharper для Visual Studio, главная цель которого здесь - отчаянная попытка привнести опыт IDEA в продукт Microsoft.

AppCode использует собственный анализатор кода, который дает практически идеальный рефакторинг и поддержку навигации по коду. Существует также возможность повторного отступа и полностью переформатировать код (хотя в жестких случаях я все еще не хватает пары настроек форматирования, но в основном это работает хорошо).

Вы можете попробовать пробную версию, конечно.

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'))" 

Это не совершенным, (пример: для петель), но мне это нравится.

35

Я хотел бы рекомендовать два варианта, которые стоит рассмотреть. Оба совершенно новые и развиваются.

ClangFormat-Xcode (бесплатно) - на файл каждого Cmd + S переформатирование к определенному стилю и сохранен, легко развернуть в команде

Xcode плагин для форматирования коды с помощью инструментов форматирования звона, в по @travisjeffery.

С clang-format вы можете использовать Clang для форматирования кода в таких стилях, как , как LLVM, Google, Chromium, Mozilla, WebKit или ваша собственная конфигурация.

Objective-Clean (платный, не пробовал еще) - приложение повышения строить ошибки, если предопределенные правила стиля нарушаются - возможно, довольно трудно использовать в команде, так что я не пробовал его.

С минимальной настройкой вы можете получить Xcode, чтобы использовать наше приложение, чтобы обеспечить соблюдение ваших правил . Если вы когда-либо поймали нарушение одного из ваших правил, Xcode выдает ошибку сборки и направляет вас на линию нарушения.

+0

Как вы можете создать свою собственную конфигурацию формата с помощью этого плагина? – nbro

4

Вы могли бы попробовать, что Xcode Plugin https://github.com/benoitsan/BBUncrustifyPlugin-Xcode

Просто клон репозитория GitHub, откройте проект плагина в XCode и запустите его. Он будет установлен автоматически. Перезагрузите Xode перед использованием плагина форматирования.

Не забудьте установить утилиту uncrustify раньше. Homebrew, для exmaple

brew install uncrustify 

P.S. Вы можете включить «после сохранения форматирования» функции в Edit> Код формата> BBUncrustifyPlugin Настройка> Формат На Сохранить

Надеются, что это будет полезно для у ;-)

5

Я также чувствую Xcode должен иметь эту функцию. Так что я сделал расширение, чтобы сделать это: Swimat

Простая установка с помощью brew cask install swimat preview

Вы можете дать ему попробовать, посмотреть https://github.com/Jintin/Swimat для получения дополнительной информации.

+0

Nice, но это is'nt automatic ... – Antzi

2

CTRL +я

это все.

(без КОМАНДА + я)

+3

Это уже упоминалось как ответ уже 4 раза - прочитайте другие ответы перед ответом. – fishinear

+0

Кроме того, CMD + i - это то же самое, что и для продукта -> Профиль, который не совпадает с форматированием. – inga

+0

спасибо, это прекрасно –

3

Я предлагаю использовать ClangFormat. Для того чтобы установить, пожалуйста, выполните следующие действия:

  1. Установить менеджер пакетов Alcatraz для XCode Поддержка Xcode 5+ & OS X 10.9+
  2. После перезапуска установки XCode.
  3. Открыть XCode -> Меню окна -> Менеджер пакетов
  4. Найти CladFormat и установить его. После установки снова перезапустите XCode.
  5. Теперь в меню XCode вы можете использовать подменю Edit -> Clang Format для форматирования.

Вы можете выбрать различные типы форматирования. Также, включив Format On Save, вы можете получить возможность автоматического форматирования.

enter image description here

+1

Это больше не доступно на XCode 8+ –

1

Мы можем использовать Xcode Formatter, которая использует Uncrustify легко форматировать исходный код, как ваша команда точно хочет быть !.

Установка Рекомендуемый способ клонировать проект GitHub или загрузить его с https://github.com/octo-online/Xcode-formatter и добавить каталог CodeFormatter в вашем Xcode проект, чтобы получить: Xcode ярлык на основе кода форматирования: ярлык для форматирования модифицированных источников в текущем рабочем пространстве автоматическое форматирование кода: добавьте фазу сборки в свой проект, чтобы форматировать текущие источники при создании приложений все форматирование источников: отформатируйте весь свой код с помощью одной командной строки ваши правила форматирования, совместно используемые проектом: отредактируйте и используйте один и тот же файл конфигурации с вашим проектом dev команда 1) Как настроить форматировщик кода для вашего проекта Установить uncrustify Самый простой способ заключается в использовании заваривать: $ заварить установить Uncrustify

Чтобы установить заваривать: $ рубин -e «$ (свернуться -fsSkl raw.github.com/mxcl/homebrew/go)»

Убедитесь, что uncrustify находится в каталоге/usr/local/bin $, который uncrustify

Если ваша версия uncrustify меньше 0,60, вам, возможно, придется установить ее вручную, так как недавно был добавлен синтаксис Objective-C. Добавить каталог CodeFormatter рядом с вашим файлом .xcodeproj

Убедитесь, что ваше приложение Xcode с именем «Xcode» (имя по умолчанию) Вы можете увидеть это имя в разделе Приложения/директории (или пользовательский Xcode каталог установки). Будьте внимательны, если у вас есть несколько экземпляров Xcode на вашем mac: убедитесь, что на самом деле проект называется «Xcode»! (Почему это? Это имя используется для поиска открытых файлов Xcode. См. CodeFormatter/Uncrustify_opened_Xcode_sources.workflow appleScript). Установите службу автомата Uncrustify_opened_Xcode_sources.workflow Скопируйте этот файл в папку ~/Library/Services/(при необходимости создайте эту папку). Будьте осторожны: дважды щелкнув файл .workflow, вы установите его, но файл будет удален! Не забудьте оставить его копию для других пользователей.

Как форматировать открываемые файлы при создании проекта Добавить фазы сборки «Выполнить скрипт», содержащий следующую строку:

ш CodeFormatter/скрипты/formatOpendSources.sh

Как форматировать файлы в командной строке

Для форматирования открытых файлов, используйте formatOpenedSources.sh:

$ ш CodeFormatter/скрипты/formatOpendSources.sh

Для форматирования всех файлов используйте formatAllSources.sh:

$ ш CodeFormatter/скрипты/formatAllSources.sh PATH

PATH должен быть заменен на вашем пути источников.

E: g; если имя проекта TestApp, то команда будет

$ ш CodeFormatter/скрипты/formatAllSources.sh TestApp

это будет выглядеть для всех файлов в проекте и форматировать все файлы в соответствии с настройками в файле uncrustify_objective_c.cfg ,

Как изменить правила форматировщика

Редактировать CodeFormatter/uncrustify_objective_c.cfg открыт с TextEdit

0

Вы можете просматривать и изменять любой ярлык на этом пути: Xcode -> Настройки -> Сочетания клавиш.

0

Ну, я искал простой способ. И узнайте на medium.

Сначала скопируйте текст json и подтвердите его на jsonlint или что-то подобное. Затем, чтобы скопировать из jsonlint, уже форматируется json. И вставьте код на Xcode с сохранением формата, ярлык сдвиг + вариант + команда + v

Смежные вопросы