Автоматичне форматування джерела Xcode


179

Як розробник C #, я дуже сильно залежав від автоматичного форматування у Visual Studio 2008. Зокрема, я буду використовувати комбінацію клавіш CTRL+ K, Dщоб повернути речі у форму після моєї неохайної реалізації.

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


1
Є кілька хороших посилань на сценарії
розробки

Дякуємо за посилання Я це також знайшов: 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
чи були якісь нововведення від Apple за останні 5 років з цього приводу? Це питання все ще актуальне чи XCode тепер є новим і кращим рішенням форматування коду?
мм24

Відповіді:


134

На жаль, у Xcode немає нічого майже такого масштабного, як VS або Jalopy для Eclipse. Є ДЕЯКІ різні функції, такі як Structure > Re-Indentавтоматичне форматування, яке використовується при вставці коду у вихідний файл. Я повністю з тобою, хоча; там обов'язково має бути щось, щоб допомогти з питаннями форматування.


3
Дякую, принаймні я знаю, що я чогось не пропускаю. Авто-ідентифікація допомагає притупити біль дещо, але мені доведеться розглянути сторонні рішення.
jslatts

5
це не повинно бути обрано як відповідь. відповідь нижче від @ken правильна
Ryan Angilly

@RyanAngilly Зверніть увагу, що року на це питання було відповідено. З тих пір багато речей змінилося з Xcode. ;-)
Marc W

1
@RyanAngilly ken лише описав, як зробити автоматичне відступ. Це не те, що насправді означає "формат" (з пробілом, додаванням та видаленням нових рядків та подібними речами).
дергаб

5
Відступ можна зафіксувати контролем-i, який буде відступати всі вибрані рядки.
zaph

427

Це Ctrl+ i.

Або для низькотехнологічних, виріжте, а потім наклейте. Він переформатується на пасту.


Дякую! Це корисно, тим більше, що в меню фактично не відображається комбінація клавіш.
jslatts

37
Але це лише робить відступ. А як щодо переміщення брекетів, догляду за розривами ліній тощо?
Пітер Айтай

14
Його не слід приймати, оскільки він не виконує всіх речей, якими керував форматник коду. Це просто повторні відступи,
powerj1984

1
Гарна порада. Зайвий кульг, що XCode цього не має.
АндрійК

4
так @ powerj1984. Я теж розчарований цим. Це не додає відповідні прогалини після ,, =або інших операторів. Що це робить просто намір. Більш нічого. Тут справді потрібно вивчити Mac.
shashwat

35

Я хотів би порекомендувати два варіанти, які варто розглянути. І зовсім нові, і розвиваються.

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

Плагін Xcode для форматування коду за допомогою інструментів формату Кланг, автор @travisjeffery.

У форматі clang ви можете використовувати 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}%%%"

У мене виникли проблеми з необгрунтованістю, особливо з блоками форматування.
Лірон Ягдав

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 , інтелектуальну IDE Objective-C, яка допомагає розробникам iOS / OS X. AppCode повністю сумісний з Xcode, але виходить за рамки Xcode, додаючи потужні функції .

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

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

Ви можете спробувати пробну версію, звичайно.



4

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

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

Не забудьте встановити unrrufy util раніше. Домашня мова, для прикладу

brew install uncrustify

PS Ви можете ввімкнути функцію "після збереження форматування" у меню Правка> Код формату> Налаштування BBUncrustifyPlugin> Формат увімкнено

Сподіваюся, це стане в нагоді для u ;-)



3

CTRL + i

Це воно.

(немає COMMAND+ i)


6
Про це вже згадувалося як відповідь 4 рази - будь ласка, прочитайте інші відповіді, перш ніж відповідати.
fishinear

Крім того, CMD + i - це те саме, що переходити до Product -> Profile, що не відповідає форматуванню.
інга

3

Я пропоную використовувати ClangFormat. Щоб встановити, виконайте такі дії:

  1. Встановіть менеджер пакунків Alcatraz для XCode Підтримує Xcode 5+ та OS X 10.9+
  2. Після встановлення перезапустіть XCode.
  3. Відкрийте XCode -> Меню вікна -> Менеджер пакетів
  4. Знайдіть (знайдіть) ClangFormat та встановіть його. Після установки знову перезапустіть XCode.
  5. Тепер у меню XCode ви можете скористатися підменю «Правка -> Кланг» для форматування.

Ви можете вибрати різні типи форматування. Також увімкнувши Формат у режимі збереження, ви можете отримати можливість автоматичного форматування.

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


1
Це більше не доступне для XCode 8+
Nathan F.

Так, ви праві @NathanFiscaletti Я модернізував рішення з 7,2 до 9,2 і вище, більше не працює. Але я знайшов рішення. Я додам нову публікацію!
csonuryilmaz

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

1

Якщо ваш Xcode версії 3.x, ви повинні використовувати "Сценарій користувача" з 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", але це недостатньо добре, викликає занадто повільний досвід, чи є у когось те саме?

чому яблуко падає "сценарій користувача" .... 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, який використовує unrrustify, щоб легко відформатувати ваш вихідний код так, як ваша команда точно хоче !.

Установка Рекомендований спосіб - клонувати проект GitHub або завантажити його з https://github.com/octo-online/Xcode-formatter та додати каталог CodeFormatter у проект Xcode, щоб отримати: Форматування коду на основі ярлика Xcode: ярлик для форматування модифікованих джерел у поточній робочій області автоматичне форматування коду: додайте фазу збірки до свого проекту, щоб форматувати поточні джерела, коли програма будує всі джерела форматування: відформатуйте весь код одним командним рядком, ваші правила форматування поділяються проектом: редагуйте та використовуйте ту саму конфігурацію файл з командою розробників проекту 1) Як налаштувати формат коду для вашого проекту Встановити unrrustify Найпростішим способом є використання brew: $ brew install uncrustify

Щоб встановити brew: $ ruby ​​–e «$ (curl –fsSkl raw.github.com/mxcl/homebrew/go)»

Переконайтеся, що unrrustify розташований у / usr / local / bin $, який не порушує

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

Перевірте, чи ваша програма Xcode має назву "Xcode" (ім'я за замовчуванням). Це ім'я ви можете побачити в каталозі "Програми / програми" (або у власному каталозі встановлення Xcode). Будьте обережні, якщо у вас на комп’ютері є декілька екземплярів Xcode: переконайтесь, що один із проектів насправді названий "Xcode"! (Чому це? Це ім'я використовується для пошуку поточно відкритих файлів Xcode. Див. CodeFormatter / Uncrustify_opened_Xcode_sources.workflow appleScript). Встановіть службу автоматизації Uncrustify_opened_Xcode_sources.workflow Скопіюйте цей файл у свою папку ~ / Бібліотека / Служби / при необхідності створіть цю папку. Обов'язково залиште його копію іншим користувачам.

Як відформатувати відкриті файли при складанні проекту Додати фазу збірки "запустити сценарій", що містить такий рядок:

sh CodeFormatter / script / formatOpendSources.sh

Як відформатувати файли в командному рядку

Для форматування відкритих файлів використовуйте formatOpenedSources.sh:

$ sh CodeFormatter / script / formatOpendSources.sh

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

$ sh CodeFormatter / script / formatAllSources.sh PATH

PATH повинен бути замінений на ваш джерело шлях.

Е: г; якщо назва проекту - TestApp, команда буде

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.