Xcode source автоматическое форматирование


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


Похож на этот вопрос; В ответе есть пункт меню и сочетание клавиш для повторного отступа кода: stackoverflow.com/questions/3558709/…
Василий Бурк

2
есть ли какие-либо инновации от Apple за последние 5 лет? Этот вопрос все еще актуален или XCode теперь является новым и лучшим решением для форматирования кода?
mm24

Ответы:


134

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


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

5
это не должно быть выбрано в качестве ответа. Ответ от @ken ниже верен
Райан Ангилли

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

1
@RyanAngilly Кен только описал, как сделать авто-отступ. Это не то, что на самом деле означает «формат» (с пробелами, добавлением и удалением новой строки и тому подобным).
dergab

5
Отступ можно исправить с помощью control-i, который сделает отступ для всех выделенных строк.
zaph

427

Это Ctrl+ i.

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


Спасибо! Это полезно, тем более что в меню на самом деле не отображаются сочетания клавиш.
Jslatts

37
Но это только делает отступ. А как насчет перемещения фигурных скобок, ухода за переносами строк и т. Д.?
Питер Айтай

14
Его не следует принимать, так как он не выполняет все то, что обрабатывает форматировщик кода. Это просто повторные отступы,
powerj1984

1
Хороший совет. Дополнительный хром, что XCode не имеет этого.
AndrewK

4
да @ powerj1984. Я тоже разочарован этим. Это не добавляет соответствующие пробелы после ,, =или других операторов. Что он делает только намерение. Ничего больше. Mac действительно нужно учиться у Microsoft здесь.
shashwat

35

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

ClangFormat-Xcode (бесплатно) - для каждого файла cmd + s переформатируется в соответствии с определенным стилем и сохраняется, легко развертывается в команде

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

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

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

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


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

27

В xcode вы можете использовать этот ярлык для повторного отступа вашего исходного кода

Перейдите к файлу, в котором есть проблемы с отступами, и выполните следующие действия:

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

  • Ctrl+ Iсделать отступ

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


18

Мой личный фаворит PrettyC wantabe является неподтвержденным: 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}%%%"

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

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

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

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

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

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



4

Вы можете попробовать этот плагин XCode https://github.com/benoitsan/BBUncrustifyPlugin-Xcode

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

Не забудьте установить утилиту uncrustify раньше. Доморощенный, например

brew install uncrustify

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

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



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 -> Window Menu -> Диспетчер пакетов
  4. Найдите (найдите) ClangFormat и установите его. После установки снова перезапустите XCode.
  5. Теперь в меню XCode вы можете использовать подменю Edit -> Clang Format для форматирования.

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

введите описание изображения здесь


1
Это больше не доступно на XCode 8+
Натан Ф.

Да, вы правы @NathanFiscaletti Я обновил с 7.2 до 9.2 и выше, решение больше не работает. Но я нашел решение. Я добавлю новый пост!
csonuryilmaz

Я установил Alcatraz, но плагин ClangFormat больше не поддерживается в Xcode 9. github.com/travisjeffery/ClangFormat-Xcode/issues/129
csonuryilmaz

1

Если у вас Xcode version 3.x, вы должны использовать «User 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, я думаю, что вы должны прочитать этот блог: Форматирование кода в Xcode 4 ,

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

почему apple drop "пользовательский скрипт" .... xD


1

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

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

defaults write com.apple.XCODE PBXIndentOnPaste No

чтобы прочитать ваши настройки:

defaults read com.apple.XCODE PBXIndentOnPaste

1

Это работает только для языков с не пропущенными пробелами, но мое решение состоит в том, чтобы удалить все пробелы, кроме пробелов, затем добавить новую строку после символов, которые обычно обозначают EOL (например, заменить ';' на '; \ n'), а затем сделать вездесущий ^ + я решение.

Я использую 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) Как настроить средство форматирования кода для вашего проекта Установка 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. Добавьте каталог CodeFormatter рядом с вашим файлом .xcodeproj

Убедитесь, что ваше приложение XCode называется «XCode» (имя по умолчанию). Вы можете увидеть это имя в каталоге Applications / (или в вашем собственном каталоге установки XCode). Будьте осторожны, если у вас есть несколько экземпляров XCode на вашем Mac: убедитесь, что один экземпляр проекта на самом деле называется «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

ПУТЬ должна быть заменена вашим исходным путем.

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

$ sh CodeFormatter / scripts / 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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.