Скрытые возможности Xcode


338

С огромным наплывом новичков в Xcode, я уверен, есть много советов и приемов Xcode, которыми можно поделиться.

Какие у тебя?

Ответы:


343

Переключиться на заголовок / исходный файл

  • Option ⌥ Command ⌘ Up Arrow ↑

  • Вид > Переключиться на заголовок / исходный файл

Переключение между .mи .hфайлами.

  • В Xcode 4 это ctrl Command ⌘ Up Arrow ↑

7
Это абсолютно мой любимый тоже. Я использую это постоянно. Также работает, когда мы говорим о cpp и h. Не только м! :)
Пестофаг

24
На Mac это называется «option», а не «alt». И если вы хотите причудливые символы, это может быть написано ⌥⌘ B
Брайан Кэмпбелл

2
Еще лучше, откройте заголовок, ⌘⌥⇡, чтобы открыть .m в том же окне, затем ⌘⌥⇠ / ⇢, чтобы переключаться между ними.
Питер Хоси

4
Обратите внимание, что в Xcode 3.2 вам нужно изменить привязки клавиш, чтобы восстановить ⌘⌥⇠ / ⇢ в файл-переключателя. Они изменили значение по умолчанию для перемещения между позициями в одном файле.
Питер Хоси

71
Проведите тремя пальцами вверх по сенсорной панели - это еще один ярлык для того же действия.
Натан

158

⌘ Command+ Double-Click on a symbol: Перейти к определению символа.

⌥ Option+ Double-Click on a symbol: Найти текст в документации символа. (Работает только в том случае, если у вас установлен набор документов для этого символа.)

Панель избранного:

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

Чтобы показать панель избранного, выберите следующий пункт меню:

  • View> Layout>Show Favorites Bar

11
Gasp! Показать Избранное бар, где ты был всю мою жизнь!
willc2

@ Mr.Gando - Вы можете перетаскивать файлы на (и выключать) панель избранного.
Джеймс Сан

4
Панель избранного была «заменена» в Xcode 4 постоянными вкладками.
Асцендент

127

Автоматическое завершение сочетаний клавиш

Tab ⇥ИЛИ Control ⌃ /: выберите следующий аргумент автозаполнения.

Shift ⇧ Tab ⇥ИЛИ Shift ⇧ Control ⌃ /: выберите предыдущий аргумент автозаполнения.

Escape ⎋: Показывает всплывающий список автозаполнения.


Спасибо за Control- /, мне всегда было интересно, как перейти к следующему аргументу
Дэн Макклейн

Святое дерьмо, я тоже. До сих пор это была самая раздражающая «особенность» Xcode. Спасибо!
pix0r

Да, спасибо, что указал на это ... не зная, что ctrl- / убил меня
Энди Уайт

Shift-Ctrl- / переходит к предыдущему аргументу.
Клинтон Блэкмор

18
Обратите внимание, что новый XCode использует Tab для перемещения между аргументами в дополнениях. Это более гибкий.
Jab

119

Отключить предупреждение «Отменить последнюю точку»

Когда вы попытаетесь отменить после сохранения, вы получите следующее приглашение:

«Вы собираетесь отменить последнюю точку, в которой был сохранен этот файл. Вы хотите это сделать?»

Чтобы избавиться от этого предупреждения, введите в окно терминала следующее:

defaults write com.apple.Xcode XCShowUndoPastSaveWarning NO

Изменить название компании в файлах шаблонов

Вставьте это в приложение Terminal:

defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{"ORGANIZATIONNAME" = "Microsoft";}'

Измените " com.yourcompanyname" во всех ваших шаблонах:

  1. Найти каталог: /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/Application
  2. Используйте ваш любимый многофайловый инструмент поиска и замены, чтобы изменить com.yourcompanyлюбое значение, которое вы обычно используете для создания устройства. Я использовал BBEdit multi-find-and-replace после того, как открыл весь каталог. Вы должны заменить значение во всех info.plistфайлах. Я нашел 8 файлов для изменения. Количество неудачных попыток сборки, потому что я забыл изменить эту строку, просто смешно.

Быстрый переход к группе на панели «Группы и файлы»

  • Control ⌃ Option ⌥ Shift ⇧ + <Первая буква имени группы>

Если вы удерживаете три вышеуказанные клавиши, вы можете быстро перейти к группам на левой странице (Группы и файлы), нажав первую букву имени группы. Например, Control ⌃Option ⌥Shift ⇧Tприведет вас к Цели и Control ⌃Option ⌥Shift ⇧Sна источник . Нажмите еще раз, и он перейдет к SCM. Иногда для этого нужно несколько попыток (я не знаю почему).


Переключение между вариантами автозаполнения

  • Control ⌃ .

  • Shift ⇧ Control ⌃ .: Цикл назад между вариантами автозаполнения.

Control ⌃.(Control-Period) после слова автоматически принимает первый выбор из меню автозаполнения. Попробуйте ввести logтогда Control ⌃. и вы получите хорошее NSLogзаявление. Нажмите ее еще раз, чтобы просмотреть любой вариант. Чтобы увидеть все изменяемые варианты, введите NSMuзатем Control ⌃..


Быстрая Помощь

  • Control ⌃ Command ⌘ ? (Пока ваш курсор находится в символе, чтобы посмотреть вверх)

  • Option ⌥ + <Дважды щелкните символ>

  • Справка> Быстрая помощь

Чтобы перейти к документации из окна быстрой справки, щелкните значок книги в правом верхнем углу.


Смотрите документацию для символа

  • Command ⌘ Option ⌥ + <Дважды щелкните символ>

Перенесет вас прямо к полной документации.


Сделайте несмежные текстовые выделения

  • Command ⌘ Control ⌃ + <Двойной щелчок в редакторе>

Используйте вышеуказанный ярлык для странного способа выбора нескольких слов. Вы можете сделать выбор слов в совершенно разных местах, а затем удалить или скопировать их все сразу. Не уверен, что это полезно. Это Xcode только, насколько я могу судить.


Используйте привязки клавиш Emacs для навигации по вашему коду

Этот прием работает во всех приложениях Cocoa на Mac (TextEdit, Mail и т. Д.) И, возможно, является одной из самых полезных вещей, которую нужно знать.

  • Command ⌘ Left Arrowили Command ⌘ Right Arrowпереводит вас в начало и конец строки.
  • Control ^ aи Control ^ eсделать то же самое
  • Control ^ nи Control ^ pпереместите курсор вверх или вниз на одну строку.
  • Control ^ fи Control ^ bпереместите курсор назад или вперед на один пробел

Нажатие Shift ⇧любого из них выделяет текст между точками перемещения. Поместите курсор в середину строки и нажмите, Shift ⇧ Control ^ eи вы можете выбрать до конца строки.

Нажатие Option ⌥позволит вам перемещаться по словам с помощью клавиатуры. Option ⌥ Control ^ fпропускает до конца текущего слова. Option ⌥ Control ^ bпропускает к началу текущего слова. Вы также можете использовать Option ⌥клавиши со стрелками влево и вправо для перемещения по одному слову за раз.

  • Control ^ Left Arrowи Control ^ Right Arrowперемещает курсор между верблюжьими частями слова.

Попробуйте это с NSMutableArray. Вы можете быстро изменить его NSArray, установив курсор после NS, нажав Shift ⇧ Control ^ Right Arrowзатем Delete.


Спасибо, я ненавижу это сообщение "Ты уверен ..." Почему это вообще там?
ruipacheco

4
Control-Command-двойной щелчок просто необходим, потому что Xcode использует Command-двойной щелчок для чего-то другого, кроме непрерывного выбора слова. В большинстве приложений Какао вы можете сделать непрерывный выбор только с помощью модификатора Command.
Николас Райли

О названии компании шаблона: XCode извлекает ее из вашей адресной карты из AddressBook, поэтому, если вы измените ее там, XCode будет использовать ее.
dertoni

Вы также можете изменить название компании, указав его для себя в карточке адресной книги.
Macserv

99

Открыть быстро ...

  • Command ⌘ Shift ⇧ D

  • Файл > Открыть быстро ...

Я большой поклонник функции Open Quickly , которая особенно хороша в Xcode 3.1 и более поздних версиях. Если вы хотите открыть файл или определение символа, которое находится в вашем проекте или в структуре, просто нажмите комбинацию клавиш, введите немного имени файла или символа, используйте Up Arrow ↑и, Down Arrow ↓чтобы выбрать правильный результат (если необходимо), а затем нажмите, Return ↩чтобы открыть файл или перейти к определению символа.

На Xcode 4:

  • Command ⌘ Shift ⇧ o

Открыть Быстро использует текущее слово в качестве поискового запроса.

Кроме того, кое-что, что я не знал о XCode до двух минут назад (когда schwa указал на это в комментарии), это то, что если текстовая вставка редактора находится внутри слова, когда вызывается Open Quickly , это слово будет использоваться как Открыть Быстрый поиск.


Да, Open Быстро работает очень хорошо сейчас. Также вы можете просто поместить текстовую вставку в файл строки # include / # import и быстро открыть этот файл.
Шва

О чем вы, ребята, говорите?
ivanTheTerrible

9
На Mac «курсор» указывает вашу позицию мыши; мигающая вертикальная черта - это «точка вставки».
Николас Райли

1
@ Николас Райли: «Карет» - правильное слово, AFAIK - наши разработчики Mac всегда называли его так, когда я работал в софтверной компании
Polsonby

3
@Flubba: Карет, конечно, используется для этого, я не оспариваю это вообще; это просто не обычный пользовательский или ориентированный на разработчиков термин на Mac. Если вы используете Google для «Caret Site: developer.apple.com», вы просто найдете хиты в документации TrueType и в одном, совсем недавно написанном документе iPad.
Николас Райли

78

Используйте #pragma для организации

Ты можешь использовать:

#pragma mark Foo

... как способ организации методов в ваших исходных файлах. При просмотре символов через всплывающее меню все, что вы помещаете, Fooбудет выделено жирным шрифтом в списке.

Чтобы отобразить разделитель (т.е. горизонтальную линию), используйте:

#pragma mark -

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


9
ввод # p обычно вызывает завершение кода '#pragma mark <LABEL>' для быстрого добавления части метки.
willc2

1
Это также захватывает # TODOзаявления. Теперь, если только это будет также захватить # XXX, который обычно используется в базе кода, над которой я работаю ...
asmeurer

7
Xcode 4 также поддерживает «#pragma mark - Foo», который добавляет метку И разделитель одновременно.
typeoneerror

77

1. Точка останова на "objc_exception_throw"

У вас всегда должна быть точка остановаobjc_exception_throw .

2. Отладка сохранения / выпуска проблем с переменными "Zombie"

Используйте следующий код:

NSZombieEnabled = YES;
NSDeallocateZombies = NO;

... отладить, сохранить и освободить проблемы. Дополнительные сведения см. В разделе «Поиск утечек памяти» в документе «Приложения отладки Apple» .

3. Переход к классу в XCode из Интерфейсного Разработчика

Command ⌘+ Double-clickна объекте в Окне Документа Интерфейсного Разработчика, чтобы перейти к этому классу в XCode. Это очень удобно с владельцем файла .

4. Повторное использование пользовательских объектов в Интерфейсном Разработчике

Перетащите настроенный объект обратно в библиотеку Interface Builder для последующего повторного использования.

5. Выберите перекрывающиеся элементы в Интерфейсном Разработчике

Control ⌃ Shift ⇧+ Clickна объекте в Интерфейсном Разработчике, чтобы увидеть меню всех объектов под мышью.

6. Интерфейсный Жест Руководство по Жесту

Интерфейсный Жест Руководство по Жесту .


3
Отличный ответ! Я бы дал два отзыва за (3) и (4), которых раньше не знал.
Николай Рюэ

75

Ctrl+ 2: Доступ к всплывающему списку методов и символов в текущем файле.

Это очень полезно, потому что с помощью этого ярлыка вы можете перемещаться по файлу полностью с помощью клавиатуры. Когда вы попадете в список, начните вводить символы, и в списке выберите нужный символ.


19
Я использую пробелы (CTRL-2 идет в пробел # 2), поэтому я переназначил привязку клавиш. Его можно найти в разделе «Привязки текстовых клавиш» в пункте «Pop Pop Up Symbols».
bbrown

1
Хороший совет. Заставил меня обнаружить, что Control-1 вызовет список истории файлов.
tmadsen

2
В XCode5 это CTRL + 6, я полагаю
Ран

1
Есть ли связывание клавиш для этого в XCode 4? Я использую пробелы, поэтому я хотел бы повторить это, но я не могу найти это.
Джеффри Уайзман

5
В XCode4 это ^ 6. Это называется Показать элементы документа.
WBlasko

74

Zoom Editor In

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

Вы можете сделать это одним из следующих способов:

  • Command ⌘ Shift ⇧ E

  • View > Zoom Editor In

  • Перетащите разделитель (между окном редактора и списком файлов над ним) вверх.


18
Мне понадобилось ВОЗРАСТ, чтобы узнать, как спрятать дерево - Command-Option-Shift-E. Ах, сладкое облегчение. Я всегда в долгу перед группой MacMacDev Glasgow за то, что дал мне знать об этом.
Джон Галлахер

67

Получите полный список сочетаний клавиш для Xcode Колина Уилера (доступен в формате PDF или PNG). Распечатайте это и держите это где-нибудь видимым (у меня это на стене рядом с моим экраном).

редактировать: обновленные версии для Xcode 3.2

редактировать 2: обновленные версии для Xcode 4


52

Не так много сочетаний клавиш, но комментарии TODO в источнике отображаются в раскрывающемся списке методов / функций в верхней части редактора.

Так, например:

// TODO: Some task that needs to be done.

отображается в раскрывающемся списке методов и функций, так что вы можете перейти к нему напрямую.

Большинство Java IDE показывают маркер для этих тегов задач на полосе прокрутки, что лучше, но это также работает.


13
Работает для // FIXME: тоже.
ustun

4
Я только что попробовал // MARK: и он имеет тот же эффект, что и #pragma mark. Вы можете даже использовать // MARK: с чертой, чтобы получить разделитель.
Роуз Перроне

1
Я хотел бы, чтобы вы могли добавить маркеры в список вещей, которые он ловит. Кодовая база, над которой я работаю, имеет много # XXX, и она этого не видит.
asmeurer

@ Гонсало Ларральд Что? Я не имею в виду писать // TODO, я имею в виду видеть все комментарии TODO в выпадающем меню. #failatfailing
ingh.am

5
В Xcode 3 TODO комментарии могут быть размещены в любом месте кода, и они появятся во всплывающем окне функции. По какой-то причине в Xcode 4 комментарии TODO должны быть вне тела любой функции / метода, чтобы появиться. Это ошибка.
SteveCaine

51

⌘- [и ⌘-] для отступа и отступа выделенного текста. Делает очистку исходного кода намного проще.


Если вы обрежете текст и вставите его обратно, он будет волшебным образом переопределен. :)
Neo42

14
Или просто выберите его и нажмите Control-I (нравится вкладка, но не совсем).
Николас Райли

Это контрольная смена, я? или элемент управления l (l для строчных букв)?
VxJasonxV

43

Удерживайте Option при разделении окон для разделения по вертикали, а не по горизонтали.


4
Очень хорошо на 30 "мониторе. Спасибо!
Роб


36

Управляйте текстовым редактором Xcode из командной строки: xed

> xed -x                # open a new untitled document
> xed -xc foo.txt       # create foo.txt and open it
> xed -l 2000 foo.txt   # open foo.txt and go to line 2000

# set Xcode to be your EDITOR for command line tools
# e.g. for subversion commit
> echo 'export EDITOR="xed -wcx"' >> ~/.profile

> man xed               # there's a man page, too

Это специфично для определенных версий XCode? xed, кажется, не существует для меня (SnowLeopard, недавний SDK для Xcode / iOS)
ipmcc

Со страницы руководства:xed was introduced in Mac OS X 10.5 with Xcode 3.0.
Стивен Фишер

31

«Ctrl + Стрелка влево / вправо» для перемещения по тексту внутри слова. Я использую эту функцию, чтобы перемещать курсор от одного «верблюжьего горба» в переменной к следующему.


10
Это здорово, если у вас отключены пробелы: \
jbrennan

Также попробуйте Option-f, Option-b, Option-d и т. Д. Это все сочетания клавиш в стиле emacs.
ustun

2
@jbrennan У меня есть пробелы, назначенные на ⌃ + ⌥ + ⇧ + ⌘ Редактировать: чтобы установить пробелы на ⌃ + ⌥ + ⇧ + ⌘, выберите всплывающее окно «Переключение между пробелами» и «Переключение непосредственно на пробел:» и удерживайте клавиши Control, Option, Shift и Command.
jrtc27

Я искал это некоторое время. Спасибо, Мэтт, и спасибо jtc27 за совет от Spaces!
Рид Олсен

@ustun: Option-f для меня печатает ƒ.
asmeurer

30

Xcode поддерживает текстовые макросы, которые можно вызвать через меню « Вставить текстовый макрос» в конце меню « Правка» . Они также могут быть вызваны с использованием Code Sense, технологии завершения кода Xcode.

Например, ввод последовательности клавиш p i m control-periodбудет вставлен #import "file"в ваш код fileкак редактируемый токен, как и при завершении кода.


30

Щелкните правой кнопкой мыши переменную в вашей функции и выберите «Редактировать все в области видимости». Я использовал это много, так как я узнал об этом.

ctrl T


Очень полезно, не знаю, что это было там. Это контекстное меню определенно стоит изучить.
ruipacheco

7
Вы можете получить доступ к этому с помощью Ctrl-Command-T, когда над словом, которое вы хотите редактировать. Гораздо быстрее, чем надоедливое меню!
Джон Галлахер

Это называется Ctrl + клик на Mac.

3
Ярлык по умолчанию был изменен на Ctrl + Command + E в Xcode 4, и его можно изменить в настройках привязки клавиш.
Дов

28

Xcode может запустить препроцессор над файлом Info.plist:

        <Ключ> CFBundleShortVersionString </ ключ>
    #ifdef DEBUG
        <string> 1.0 (debug) </ string>
    #else
        <Строка> 1.0 </ строка>
    #endif

См. Http://developer.apple.com/technotes/tn2007/tn2175.html для получения подробной информации.


16
Обратите внимание, что если вы сделаете это, ваш Info.plist всегда будет редактироваться как текст; вы не сможете редактировать его в хорошем редакторе списков свойств, который хранит его с использованием правильных ключей и типов значений.
Крис Хэнсон

27

Отладка - как использовать GDB

Будучи новичком в этом, я нахожу отлов и выявление неисправностей довольно сложной задачей. Консоль, несмотря на то, что она является мощным инструментом, обычно не дает очень интуитивных результатов, и знание того, на что вы смотрите в отладчике, может быть одинаково трудным для понимания. С помощью некоторых из них, ребят из Stack Overflow, и хорошей статьи об отладке, которую можно найти в Cocoa With Love, она становится немного более дружелюбной.


26

Перемещайтесь между открытыми файлами назад и вперед:
⌥⌘ ←
⌥⌘ →


5
Ключ «option» (⌥) на Mac, а не «alt».
Крис Хэнсон

7
На белой клавиатуре Apple действительно есть надпись «alt».
Крис Ланди

19
Крис, ярлык «alt» предназначен для переключателей. Старые школьные Mac парни знают это как Вариант. Как и предполагал Бог.
willc2

1
Если вы поклонник жестов трекпада, вы также можете провести пальцем влево и вправо, чтобы получить одинаковый эффект.
Рид Олсен

25

Технически это совет для Interface Builder, но это пара, подобранная по книге, так что я не думаю, что это не по теме ...

Shift + правый клик на одном из ваших элементов управления, и вы получите хороший список выбора иерархии объектов. Нет больше нажмите, нажмите, нажмите, разочарование!


22

С трекпадом:

  • Проведите тремя пальцами вверх - переключение между заголовком и исходным файлом, что проще, чем Cmd+ Opt+ Up;
  • Проведите тремя пальцами вниз - переключайтесь между объявлением и определением при выборе класса или метода, обнаружившего эти два вида в настоящее время;
  • Проведите тремя пальцами влево - Вернитесь назад ( Cmd+ Opt+ Left);
  • Проведите тремя пальцами вправо - Идите вперед ( Cmd+ Opt+ Right);

Протестировано с Xcode 3.2.5.


21

Браузер классов в Xcode! Достигается нажатием shift+ +c . Вы можете уменьшить область, чтобы показать только ваш активный проект. Это дает вам менее загроможденное представление, пока вы только хотите просмотреть иерархию классов.


Вот Это Да! Не знал этого ... это может стать моим главным "рабочим" окном. Почти похоже на VisualAge (хорошие части): D
rcw3

AAARRGGHH Как старый поклонник ObjectMaster, я с удовольствием читал об этом, пока не понял, что он был удален в XCode4, не могу поверить, какой гигантский шаг назад эта IDE. Могу поспорить, что в Apple есть масса людей, которые все еще используют Xcode 3.
Энди Дент,

19

Использование ]для автоматической вставки [в правильном месте

Я пришел из .NET фона, поэтому я привык набирать символ, а затем вводить одно из имен его методов. Поэтому я всегда забываю включать [перед тем, как начать вводить имя объекта. Обычно это означало, что мне нужно было бы перейти к началу строки и добавить [вручную. Я не понимал, что могу просто нажать ]на текущую позицию курсора, и она будет добавлена ​​автоматически.

Есть способы использовать это: либо после ввода имени функции, либо непосредственно перед вводом имени функции.

Способ 1: после имени функции

myObject testMethod]

... становится:

[myObject testMethod]

... с кареткой, расположенной после ].

Способ 2: перед именем функции

myObject]

... становится:

[myObject ]

... с кареткой , расположенной прямо перед] тем .

Преимущество последнего (2) состоит в том, что завершение кода будет фильтровать методы вашего объекта. В то время как с первым (1), если вы попытаетесь вызвать завершение кода сразу после myObject, он не будет отфильтрован. Другое преимущество (2) заключается в том, что он ведет себя больше как другие языки программирования, использующие точечную запись. Вы набираете имя объекта , то просто ]вместо .получить доступ к методу.


17

Выберите блок текста и введите cmd- /, чтобы закомментировать его. Сделайте это снова, чтобы удалить комментарии персонажей.

Это особенно полезно в сочетании с сопоставлением скобок путем двойного щелчка на сбалансированных символах (скобки, скобки).


Комментирование / разкомментирование Xcode было беспомощно нарушено в прошлый раз, когда я проверял. Это позор.
Джо

16

Возможность быстро увидеть все методы, которые можно переопределить в суперклассе. Например, при расширении UITableViewController я просто набираю свою реализацию:

- ta

а затем я нажимаю ESC, чтобы увидеть все методы из моего суперкласса, начинающиеся с "та", такие как

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

Это также работает при принятии протоколов.


14

Command ⌘ alt ⌥ shift T : показать текущий отредактированный файл в дереве проекта.


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


13

Используйте Class Browser, чтобы показать унаследованные методы

Справочная документация по API Apple не показывает методы, унаследованные от суперкласса. Хотя иногда. Полезно иметь возможность видеть весь спектр функциональных возможностей, доступных для класса, включая собственный собственный класс. Вы можете использовать Class Browser (из меню Project), чтобы отобразить плоский или иерархический список всех классов, связанных с текущим проектом. В верхней панели в правой части окна браузера отображается список методов, связанных с объектом, выбранным в браузере. Вы можете использовать лист Настроить параметры, чтобы выбрать «Показать наследуемые члены», чтобы показать унаследованные методы, а также методы, определенные самим выбранным классом. Вы нажимаете на маленький символ книги, чтобы перейти к соответствующей документации.

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