выравнивание кода в 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.
Not saying this is best approach, but for completeness, if you cut and then paste the code back in, Xcode will automatically format it for you.
If you love looking your code like me, you really need this shortcut 🙂
You have to select with CMD + A for reformatting whole code segment.
All you need to do this, select the code segment which you want to reformat it and press : Ctrl + I Magically, It is just reformatted 🥳
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
Многие аспекты среды редактирования в системе 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, но они пытаются найти обходной путь.
Автоматического форматирования в Xcode
теперь я пытаюсь изучить Objective-C и пропускаю некоторые функции в Xcode, но, вероятно, ни один из них не так болезнен, как ярлык форматирования. Мои поиски Google не дали ничего построенного в, Хотя, кажется, есть некоторые хаки. Я что-то пропустил, или эта функция не существует изначально в Xcode?
20 ответов:
к сожалению, Xcode не имеет ничего почти такого же обширного, как VS или Jalopy для Eclipse. Есть некоторые несопоставимые функции, такие как Structure > Re-Indent а также автоматическое форматирование при вставке кода в исходный файл. Но я полностью с вами, наверняка есть должны быть что-то там, чтобы помочь с проблемами форматирования.
или для низкотехнологичных, вырезать, а затем вставить. Он переформатируется на пасту.
Я хотел бы порекомендовать два варианта, которые стоит рассмотреть. Оба совершенно новые и эволюционирующие.
плагин Xcode для форматирования кода с помощью инструментов форматирования Clang, by @travisjeffery.
с clang-format вы можете использовать Clang для форматирования кода в такие стили как LLVM, Google, Chromium, Mozilla, WebKit, или ваша собственная конфигурация.
с очень минимальные настройки, вы можете получить Xcode, чтобы использовать наше приложение, чтобы обеспечить свои правила. Если вы когда-либо поймали нарушение одного из ваших правил, Xcode выбросит ошибку сборки и приведет вас прямо к нарушителю линия.
в xcode вы можете использовать этот ярлык для форматирования (повторного отступа) вашего исходного кода
команда + A чтобы выбрать все исходные коды
Ctrl + Я для повторного отступа
надеюсь, что это помогает.
мои личные PrettyC wantabe Fav-это uncrustify: http://uncrustify.sourceforge.net/. У него есть несколько миллиардов вариантов, однако так я и предлагаю вам скачать UniversalIndentGUI_macx, (также на SourceForge) графический интерфейс, кто-то написал, чтобы помочь установить параметры так, как вам удобно.
затем вы можете добавить этот пользовательский скрипт, чтобы удалить выделенный текст:
можно использовать команда + A выбрать все содержимое и далее Ctrl + Я для форматирования выбранного контента.
подумайте о покупке лицензии для AppCode, интеллектуальная IDE Objective-C, которая помогает разработчикам iOS / OS X. AppCode полностью совместим с Xcode, но выходит за рамки Xcode при добавлении мощные функции.
AppCode вариант Objective-C Intellij IDEA IDE с JetBrains. Они также являются авторами популярных для ReSharper расширение для Visual Studio, основная цель которого отсюда выглядит как отчаянная попытка привнести нотку идеи в продукт Microsoft.
AppCode использует свой собственный анализатор кода, который дает близкую к идеальной поддержку рефакторинга и навигации по коду. Существует возможность повторного отступа и полностью переформатировать код (хотя я все еще продолжаю пропускать пару настроек форматирования в сложных случаях, но в основном это работает хорошо).
вы можете попробовать пробную версию, конечно.
Я также чувствую, что xcode должен иметь эту функцию. Поэтому я сделал расширение, чтобы сделать это: Swimat
простая установка с помощью brew cask install swimat
вы можете попробовать, см. https://github.com/Jintin/Swimat для получения дополнительной информации.
вы также можете посмотреть на https://github.com/octo-online/Xcode-formatter который является форматером, основанным на Uncrustify и интегрированным в Xcode. Работает как шарм.
просто клонируйте репозиторий github, откройте проект плагина в XCode и запустите его. Он будет установлен автоматически. Перезапустите Xode перед использованием плагина форматирования.
Не забудьте установить uncrustify util раньше. Доморощенный, например
P. S. Вы можете включить «после сохранение функции форматирование» в меню «Редактирование» > формат кода > BBUncrustifyPlugin Настройки > Формат При Сохранении
Я предлагаю использовать ClangFormat. Для того, чтобы установить, пожалуйста, выполните следующие действия:
вы можете выбрать различные типы форматирования. Также путем включения Формат При Сохранении вы можете получить возможность автоматического форматирования.
добавить выше в свой Xcode «пользовательский скрипт».
если Xcode версии 4.x, я думаю, вы должны прочитать этот блог:форматирование кода в Xcode 4,
почему apple drop » пользователь сценарий. «. xD
сначала изучите раздел «отступ» настроек XCode. Вы можете настроить вещи немного есть.
для более мелкозернистого управления, обратитесь к Xcode User Defaults документ от apple. (Может потребоваться логин разработчика для просмотра). Например, я смог отключить «отступ при вставке», введя следующее в терминале:
чтобы прочитать ваши настройки:
это работает только для языков с не обозначенными пробелами, но мое решение-удалить все пробелы, кроме пробелов, а затем добавить новую строку после символов, которые обычно обозначают EOL (например, заменить ‘; ‘ на ‘; \n’), а затем сделать вездесущий ^+i решение.
Я использую Python.
пример кода, просто замените имена:
это не идеально (пример: для петель), но мне это нравится.
мы можем использовать Xcode Formatter, который использует uncrustify легко форматировать исходный код, как ваша команда точно хочет быть!.
проверьте, что uncrustify находится в /usr / local/bin долларов США, что uncrustify
как форматировать открытые файлы при построении проекта Добавьте этап сборки «run script», содержащий следующую строку:
как форматировать файлы в командной строке
для форматирования открытых файлов используйте formatOpenedSources.sh:
чтобы отформатировать все файлы, используйте formatAllSources.sh:
$sh CodeFormatter/scripts/formatAllSources.sh путь
путь должен быть заменен вашим исходным путем.
E: g; если имя проекта TestApp, то команда будет
$sh CodeFormatter/scripts/formatAllSources.sh TestApp
Он будет искать все файлы в проекте и формат все файлы как настроить в файл uncrustify_objective_c.cfg.
Как изменить правила форматирования
редактировать CodeFormatter / uncrustify_objective_c. cfg открыть с помощью TextEdit