выравнивание кода в xcode
О форматировании кода и User Scripts в Xcode 4
Когда человеку надоедает делать рутинную работу, у него возникает дикое желание от этой работы избавиться. Однако, в реальной жизни избавиться от нее не так просто, и ее все, же надо делать. В зависимости от вида работы и от ее количества, можно поступать по-разному. Можно продолжать выполнять уже заученные действия, можно уйти в себя и копить злость на всех и вся, на этот мир, на начальника, на PM’a, на А можно попытаться эту рутину автоматизировать.
А пост будет о конкретной задаче, которую надо автоматизировать(Code Formatting) и о том, как все-таки расширить Xcode всякими полезными вкусностями для дальнейших автоматизаций. В прошлый раз это был Copy Paste Detector. А теперь пришло время Code-Formattera. Скажу сразу, что в здесь не поднимается вопрос, нужен ли автоматический Code-Formatter. Предполагается, что Вам он нужен. Если, все же не нужен — можно заглянуть под кат, чтобы вспомнить про возможность использовать внешние скрипты в Xcode.
Посмотрим, как они нам подходят.
Та я и руками поправлю! Я еще с Xcode 1.0 руками форматирую
Есть такие люди. Может, им и правда, не надо форматирование текста. Для тех, же, кому надо, но им лень:
Это я к тому, что если задача (в частности форматирование кода), достаточно большая, то автоматизация выигрывает на долгой дистанции. Все в конце концов сводится к временным затратам. Но, даже если время на написание скрипта + время решения задачи немного больше, по сравнению, если б эту задачу делали руками, то все же, стоит попытаться написать такой скрипт — опыт автоматизации все-таки.
В Xcode и так оно есть… Нету? Значит и не надо.
Мнение автора, относительно команды Reindent, встроенной в Xcode: недостаточно для полноценного форматирования кода. Однако, многие люди, разрабатывающие под Xcode как раз только его и используют. Иногда еще есть Code-Style. Иногда Code-Style где-то описан, и ему пытаются следовать.
Весь функционал Re-Indentа заключается в правильном выставлении пробелов/табов, а его настойки которого помещаются на одной вкладке меню Xcode.
Хоть этот вариант и не пестрит разнообразностью настроек, но у него есть просто огромное преимущество. Он встроен в Xcode. Не надо ничего устанавливать, лезть в интернет и запускать скрипты. Выделяем кусок кода, нажимаем ^I. Может быть, именно эта часть нравится людям, яро защищающим Xcode.
Пользовательские скрипты? Так их же не стало в Xcode 4.
Да, в Xcode 4 много чего не стало, по сравнению с Xcode 3. Пользовательские скрипты как раз в ходят в список того, чего не стало в Xcode 4. Люди в свое время были очень этим разочарованы.
Однако, добрые люди подумали-подумали, да и выкрутились. Стали использовать Automator Services. Не совсем то, что люди раньше подразумевали под User Scripts в Xcode 3, но, многие задачи, они, все же, решают.
Интеграция в Xcode
Благодаря добрым людям и OpenSource’у интеграция в Uncrustify в Xcode стала ну очень простой задачей.
Проект по интеграции Uncrustify в Xcode через Automator Services лежит на GitHub.
Ставим Uncrustify (В последний раз, я ставил uncrustify при помощи homebrew, в принципе, как и описано в самом проекте), складываем свои скрипты-сервисы в правильную папку(
/Library/Services/Automator/). Профит. Если все сделано правильно, теперь в меню в Xcode появятся дополнительные команды, позволяющие форматировать код, и которые можно использовать не выходя из Xcode.
А вот, что можно увидеть, выделив кусок кода и нажав правую кнопку:
Куда дальше?
При выполнении всех вышеперечисленных шагов, у Вас появилась возможность автоматически форматировать текст в Xcode.
Что делать дальше — зависит от того, что вам было нужно до этого 😉
Если изначально была поставлена задача по автоматическому/полуавтоматическому форматированию кода, то стоит заняться настройкой файла конфигурации uncrustify.cfg. В этом, может помочь Universal Indent GUI — кроссплатформенный редактор code-formatter’ов, в том числе и для uncrustify.
В случае, если интерес был больше к возможности внедрения внешних скриптов в Xcode — то методом проб и ошибок, на примере уже готового подключенного сервиса, можно придумать много полезных вещей.
Альтернативы
Лично от себя я бы порекомендовал посмотреть в сторону AppCode, о котором в свое время уже писали на Хабре. Пусть, даже он и платный с 30-дневным бесплатным периодом. Вопрос о форматировании кода в Appcod’е решается совсем на другом уровне:
Code Formatting In Xcode
Is there anyway to format the code in Xcode like you can do in Eclipse or Netbenas. I have not found any option in menu, is there any hot key for this or its simply not in Xcode?
12 Answers 12
In Xcode 4, it’s been moved to Editor > Structure > Re-Indent command (and has a default shortcut of CTRL + I ).
Select some text and then: Edit->Format->Re-Indent
You can bind this to a hotkey in the preferences.
Other than re-indentation (Edit > Format > Re-Indent), not really. However, Xcode does have support for scripts (the menu to the right of the Window menu), so you could conceivably write a script that formats your code how you like it.
Edit: here are some links that touch on this subject:
Here are the shortcuts, to format the code in Xcode
1.Format entire code (entire class/controller)
select the entire code and press ⌘ + | on mac to format your code.
2.Format particular block of code
select the code and press
⌘ + ] for right move and ⌘ + [ for left move
Note : as per @JavierGiovannini sugesstion you can do using Editor Menu option
My personal favorite code formatter is Uncrustify. It has many, many options, so I also suggest you download UniversalIndentGUI, a GUI to help set Uncrustify’s behavior to your liking.
XCode 8 Extensions
Another option is to use an extension like Swimat. Does the job for me. However, the caveat is that it does not format on save due to the restrictive Xcode Extension APIs, but they’re trying to find a workaround.
Well, first of all welcome to 2021. I know it’s a very old question but still people like me visit this and for those people, I’m putting out multiple available solutions in one answer that worked for me after 2 hours of research and testing.
Re-Indent
As everyone else is suggesting, it’s one of the default solution if you just want to re-indent the lines of code:
Using Xcode Extensions
There are 2 extensions I found and used which works charmingly for me.
1) SwiftFormat: mentioning the steps to install the xcode extension here from the readme.
Like the command-line tool, you can install the SwiftFormat for Xcode extension application via Homebrew. Assuming you already have Homebrew installed, type:
open the SwiftFormat for Xcode.app that you just installed. there you can change the rules of formatting.
Voila! You’re good to go. you can use three options. format selected code, format entire file OR just lint file.
2) Swimat: (it is already mentioned in one of the answer here by @Guy Daher) steps to install from readme
Homebrew latest version
Bingo! You’re good to go.
Additional uninvited help
You can simply set the keybinding to use any of this command. i.e. I’ve set the android studio default command to reformat the code as option + command + L
ps If anyone else found a better extension, please let me know in comment, I’ll add it to the list.
Автоматическое форматирование исходного кода Xcode
Сейчас я пытаюсь изучить Objective-C, и мне не хватает некоторых функций в Xcode, но, вероятно, ни одна из них не так болезненна, как ярлык форматирования. Мои поиски в Google не дали ничего встроенного, хотя, похоже, есть некоторые хаки. Мне что-то не хватает или эта функция не существует изначально в Xcode?
19 ответов
Или для низкотехнологичных, вырезать, а затем вставить. Он переформатируется на пасту.
Хочу порекомендовать два варианта, которые стоит рассмотреть. Оба довольно новые и развивающиеся.
Подключаемый модуль Xcode для форматирования вашего кода с помощью инструментов форматирования Clang от @travisjeffery.
С помощью clang-format вы можете использовать Clang для форматирования кода в стилях, таких как LLVM, Google, Chromium, Mozilla, WebKit или в вашей собственной конфигурации.
С минимальными настройками вы можете заставить Xcode использовать наше приложение для обеспечения соблюдения ваших правил. Если вас когда-либо поймают на нарушении одного из ваших правил, Xcode выдаст ошибку сборки и перенесет вас прямо на строку с нарушением.
В xcode вы можете использовать этот ярлык, чтобы изменить отступ в исходном коде.
Перейдите к файлу, в котором есть проблемы с отступом, и выполните следующие действия:
Cmd + A для выбора всех исходных кодов
Надеюсь это поможет.
Затем вы можете добавить этот пользовательский скрипт, чтобы распаковать выделенный текст:
Вы можете использовать Command + A для выделения всего содержимого и следующие Ctrl + I для форматирования выбранного содержимого.
Я также считаю, что в xcode должна быть эта функция. Поэтому я сделал для этого расширение: Swimat
Простая установка с помощью brew cask install swimat
Вы можете попробовать, см. https://github.com/Jintin/Swimat для получения дополнительной информации.
Подумайте о покупке лицензии на AppCode, интеллектуальную среду разработки Objective-C, которая помогает разработчикам iOS / OS X. AppCode полностью совместим с Xcode, но выходит за рамки Xcode, добавляя мощные функции.
AppCode вариант Objective-C интегрированной среды разработки Intellij IDEA из JetBrains. Они также являются авторами популярного расширения ReSharper для Visual Studio, основная цель которого отсюда кажется отчаянной попыткой чтобы привнести элементы IDEA в продукт Microsoft.
AppCode использует собственный анализатор кода, который обеспечивает практически идеальный рефакторинг и поддержку навигации по коду. Также есть возможность изменить отступ и полностью переформатировать код (хотя мне все еще не хватает пары настроек форматирования в тяжелых случаях, но в основном это работает хорошо).
Конечно, вы можете попробовать пробную версию.
Вы также можете посмотреть https://github.com/octo-online/Xcode-formatter, который представляет собой средство форматирования, основанное на Uncrustify и интегрированное в Xcode. Работает как шарм.
Просто клонируйте репозиторий github, откройте проект плагина в XCode и запустите его. Он будет установлен автоматически. Перезапустите Xode перед использованием плагина форматирования.
Не забудьте предварительно установить утилиту uncrustify. Домашнее пиво, например
P.S. Вы можете включить функцию «после сохранения форматирования» в меню «Правка»> «Код формата»> «Настройки BBUncrustifyPlugin»> «Форматировать при сохранении».
Надеюсь, это будет полезно для вас 😉
Он предоставляет расширение Xcode, а также опцию CLI.
Я предлагаю использовать ClangFormat. Для установки выполните следующие действия:
Если ваш Xcode версии 3.x, вы должны использовать «Пользовательский сценарий» с Uncrustify, вот пример:
Добавьте выше в свой Xcode «Пользовательский сценарий».
Если Xcode версии 4.x, я думаю, вам следует прочитать этот блог: Форматирование кода в Xcode 4,
Таким образом, использовал «Apple Services», но он недостаточно хорош, потому что слишком медленный опыт, есть ли у кого-нибудь то же самое?
Для более детального управления обратитесь к пользователю XCode. Документ по умолчанию от Apple. (Для просмотра может потребоваться логин разработчика). Например, мне удалось отключить «отступ при вставке», введя в терминал следующее:
Чтобы прочитать ваши настройки:
Это работает только для языков с не выделенными пробелами, но мое решение состоит в том, чтобы удалить все пробелы, кроме пробелов, затем добавить новую строку после символов, которые обычно очерчивают EOL (например, заменить ‘;’ на ‘; \ n’), а затем выполнить повсеместное ^ + i решение.
Я использую Python.
Пример кода, просто замените имена файлов:
Это не идеально (пример: циклы for), но мне это нравится.
Убедитесь, что ваше приложение Xcode называется «Xcode» (имя по умолчанию). Это имя можно увидеть в каталоге Applications / (или в каталоге установки пользовательского Xcode). Будьте осторожны, если у вас есть несколько экземпляров Xcode на вашем Mac: убедитесь, что проект действительно называется «Xcode»! (Почему? Это имя используется для поиска открытых в данный момент файлов Xcode. См. CodeFormatter / Uncrustify_opened_Xcode_sources.workflow appleScript). Установите сервис-автомат Uncrustify_opened_Xcode_sources.workflow Скопируйте этот файл в папку
Как отформатировать открытые файлы при сборке проекта Добавьте этап сборки «запустить скрипт», содержащий следующую строку:
Sh CodeFormatter / scripts / formatOpendSources.sh
Как форматировать файлы в командной строке
Чтобы отформатировать открытые в данный момент файлы, используйте formatOpenedSources.sh:
$ sh CodeFormatter / scripts / formatOpendSources.sh
Чтобы отформатировать все файлы, используйте formatAllSources.sh:
$ sh CodeFormatter / scripts / formatAllSources.sh ПУТЬ
PATH должен быть заменен вашим исходным путем.
$ sh CodeFormatter / scripts / formatAllSources.sh TestApp
Он будет искать все файлы в проекте и форматировать все файлы, как указано в файле uncrustify_objective_c.cfg.
Как изменить правила форматирования
Отредактируйте CodeFormatter / uncrustify_objective_c.cfg, откройте с помощью TextEdit
Что ж, я искал легкий путь. И узнайте это на medium.
Сначала скопируйте текст json и проверьте его на jsonlint или на чем-то подобном. Затем, чтобы скопировать из jsonlint, уже отформатирован json. И вставьте код в Xcode с сохранением формата, ярлык shift + option + command + v
Выравнивание кода в xcode
Многие аспекты среды редактирования в системе Xcode можно настроить по своему усмотрению.
На первом шаге необходимо выбрать начертание и размер шрифта в настройке Source Editor на панели настроек Fonts & Colors. Это очень важно для того, чтобы писать и читать код было удобно! Я предпочитаю крупные шрифты (13, 14 и даже 16) и приятный моноширинный шрифт, такой как Monaco, Menlo или Consolas (или свободно распространяемый шрифт Inconsolata).
В среде Xcode существуют возможности форматирования, автозаполнения и выбора текста, адаптированные для языка Objective-C. Их реализация зависит от настроек на вкладках Editing и Indentation панели настроек Text Editing. Я не собираюсь подробно описывать эти настройки детально, но советую вам воспользоваться ими. На вкладке Editing я бы установил все флажки, включая Line Numbers; отображение номеров строк полезно при редактировании. На вкладке Indentation я бы также установил все флажки; я считаю, что макет кода на языке Objective-C в среде Xcode при этих настройках превосходен.
Если вам нравится интеллектуальная система выравнивания текста в среде Xcode и вы обнаружили, что выравнивание вашей строки кода оказалось неправильным, выберите команду
Editor^StructureO Re-Indent ( ), которая выполняет автоматическую подстановку текущей строки. (Проблемы с автоматическим выравниванием могут быть вызваны нарушением синтаксических правил в файле, так что это также может служить признаком ошибки.)
Обратите внимание на флажок Automatically balance brackets in Objective-С method calls, на вкладке Editing. Если этот флажок установлен, то, когда вы поставите закрывающую квадратную скобку после определенной части текста, среда Xcode автоматически вставит открывающую квадратную скобку перед этим фрагментом текста. Мне нравится эта возможность, поскольку она позволяет мне набирать вложенные квадратные скобки, не планируя их заранее. Например, допустим, что я набрал строку
UIAlertView* av = [UIAlertView alloc
и в этот момент набрал правую квадратную скобку дважды. Первая квадратная скобка закрывает открывающую левую квадратную скобку (эти скобки будут подсвечены). Перед второй закрывающей квадратной скобкой будет вставлен пробел, а перед текстом — недостающая открывающая квадратная скобка. Курсор вставки будет находиться перед второй закрывающей квадратной скобкой, позволяя мне вставлять сюда текст init:.
Если флажок Enable type-over completions установлен, среда Xcode делает еще больше. Когда я начинаю набирать ту же строку кода
среда Xcode автоматически добавляет закрывающую квадратную скобку, а точка вставки располагается перед ней:
Однако эта закрывающая квадратная скобка является гипотетической и поэтому окрашивается серым цветом. Теперь я заканчиваю набирать первый вложенный вызов метода, и закрывающая квадратная скобка остается серой:
UIAlertView* av = [UIAlertView alloc]
II Я набрал строку до этого места Л
Форматирование Кода В Xcode
есть ли в любом случае форматировать код в Xcode, как вы можете сделать в Eclipse или Netbenas. Я не нашел никакой опции в меню, есть ли горячая клавиша для этого или ее просто нет в Xcode?
10 ответов
выберите текст, а затем: Edit- > Format->Re-Indent
можно привязать к горячей клавише в настройках.
в Xcode 4 он был перемещен в Editor > Structure > Re-Indent команда (и имеет ярлык по умолчанию CTRL + Я ).
кроме повторного отступа (Edit > Format > Re-Indent), не совсем. Однако Xcode поддерживает скрипты (меню справа от меню окна), поэтому вы можете написать сценарий, который форматирует ваш код так, как вам нравится.
Edit: вот некоторые ссылки, которые касаются этой темы:
вот ярлыки, чтобы отформатировать код в Xcode
1.Форматировать весь код (весь класс/контроллер)
выделите весь код и пресс ⌘ + | на mac для форматирования кода.
2.Форматировать конкретный блок кода
выберите код и нажмите программную клавишу
⌘ + ] для правого хода и ⌘ + [ для левый ход
примечание: согласно @JavierGiovannini sugesstion вы можете сделать с помощью опции меню редактора
Не говоря, что это лучший подход, но для полноты, если вы вырезаете, а затем вставляете код обратно, Xcode автоматически отформатирует его для вас.
в V. 4 Вы можете внести некоторые коррективы через настройки xCode.
вы также можете выделить код, который хотите изменить отступ, и использовать команду re-indent
Расширения XCode 8
другой вариант-использовать расширение вроде Swimat. Делает работу за меня. Однако предостережение заключается в том, что он не форматируется при сохранении из-за ограничительных API расширения Xcode, но они пытаются найти обходной путь.