Xcode的隐藏功能


338

随着大量新手涌入Xcode,我确信有很多Xcode技巧和窍门可以共享。

你是什​​么人

Answers:


343

切换到标题/源文件

  • Option ⌥ Command ⌘ Up Arrow ↑

  • 查看 > 切换到标题/源文件

.m.h文件之间切换。

  • 在Xcode 4中,这是 ctrl Command ⌘ Up Arrow ↑

7
这绝对也是我的最爱。我经常使用它。当我们谈论cpp和h时,它也适用。不只是米!:)
食虫的

24
在Mac上称为“选项”,而不是“ alt”。如果您想使用精美的符号,可以将其写成⌥⌘↑
Brian Campbell,2009年

2
更好的是,打开标题,,在同一窗口中打开.m,然后按⌘⌥⇠/⇢在它们之间切换。
彼得·霍西

4
请注意,在Xcode 3.2中,您必须更改键绑定才能将⌘⌥⇠/ restore恢复为切换文件。他们将默认值更改为在同一文件中的位置之间移动。
Peter Hosey,

71
用三根手指在触摸板上向上滑动是同一操作的另一个快捷方式。
弥敦道

158

⌘ Command+ Double-Click on a symbol:跳转到符号定义。

⌥ Option+ Double-Click on a symbol:在符号文档中查找文本。(仅当您安装了符号的文档集时才有效。)

收藏夹栏:

收藏夹栏就像您在Safari中用于存储-很好-收藏夹一样。我经常将它用作存储快捷方式(您可以通过拖放操作将其存储到当前正在使用的文件中)的地方。通常,当我处理大型或不熟悉的项目时,这会更有用。

要显示收藏夹栏,请选择以下菜单选项:

  • View> Layout>Show Favorites Bar

11
喘气!显示“收藏夹”栏,您一生都在哪里!
willc2

@ Mr.Gando-您可以在“收藏夹”栏上拖放文件。
James Sun

4
收藏夹栏已在Xcode 4中使用永久标签“替换”。
上升

127

自动完成键盘快捷键

Tab ⇥Control ⌃ /:选择下一个自动完成参数。

Shift ⇧ Tab ⇥Shift ⇧ Control ⌃ /:选择上一个自动完成参数。

Escape ⎋:显示自动完成弹出列表。


感谢Control- /,我一直想知道如何跳转到下一个arg
Dan McClain

天哪,我也是。到目前为止,这是Xcode最令人讨厌的“功能”。谢谢!
pix0r

是的,感谢您指出这一点...不知道ctrl- /是在杀了我
Andy White

Shift-Ctrl- /前进到上一个参数。
克林顿·布莱克莫尔

18
请注意,新的XCode使用Tab在补全中的参数之间移动。更流畅。
贾布(Jab)

119

关闭“撤消过去的最后一点”警告

当您尝试在保存后撤消操作时,将出现以下提示:

“您将撤消保存该文件的最后一点。您要这样做吗?”

要消除此警告,请在终端窗口中输入以下内容:

defaults write com.apple.Xcode XCShowUndoPastSaveWarning NO

在模板文件中更改公司名称

将此粘贴到终端应用程序中:

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的多重查找和替换功能。您应该替换所有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按键绑定浏览代码

此技巧适用于Mac上的所有Cocoa应用程序(TextEdit,Mail等),并且可能是最有用的知识之一。

  • Command ⌘ Left Arrow或带Command ⌘ Right Arrow您到一行的开头和结尾。
  • Control ^ aControl ^ e做同样的事情
  • Control ^ nControl ^ p移动光标向上或向下一行。
  • Control ^ f并向Control ^ b后或向前移动光标一格

按下Shift ⇧其中任意一个均可在移动点之间选择文本。将光标放在一行的中间,然后按Shift ⇧ Control ^ e,然后选择到该行的末尾。

按下Option ⌥将使您可以使用键盘浏览单词。Option ⌥ Control ^ f跳到当前单词的末尾。Option ⌥ Control ^ b跳到当前单词的开头。您也可以使用Option ⌥左右箭头键来一次移动一个单词。

  • Control ^ Left ArrowControl ^ Right Arrow在单词的驼峰式部分之间移动光标。

尝试一下NSMutableArrayNSArray通过将光标置于NSShift ⇧ Control ^ Right Arrow然后按,可以快速将其更改为Delete


谢谢,我讨厌“您确定...”消息。为什么它甚至一开始就在那里?
ruipacheco

4
只需按下Control-Command双击即可,因为Xcode将Command双击用于非连续单词选择以外的其他操作。在大多数Cocoa应用中,您可以仅使用Command修饰符进行不连续选择。
尼古拉斯·莱利

关于模板公司名称:XCode将其从AddressBook的地址卡中删除,因此,如果在此处进行更改,XCode将使用它。
dertoni 2010年

您也可以通过在通讯录卡上为自己设置一个公司名称来更改公司名称。
Macserv 2012年

99

快速打开...

  • Command ⌘ Shift ⇧ D

  • 文件 > 快速打开...

我是Open Quickly功能的忠实支持者,该功能在Xcode 3.1和更高版本中特别有用。当您要打开项目或框架中的文件或符号定义时,只需按键盘快捷键,输入文件或符号名称的一部分,使用Up Arrow ↑Down Arrow ↓选择正确的结果(如果需要),然后单击Return ↩以打开文件或导航到符号定义。

在Xcode 4上:

  • Command ⌘ Shift ⇧ o

快速打开将当前单词用作搜索词

另外,直到两分钟前(当schwa在评论中指出它时),我才对Xcode有所了解是,如果在调用“ 快速打开”时编辑器的文本插入符号位于单词中,则该单词将用作打开快速搜索词。


是的,Open Quickly现在非常有效。您也可以将文本插入符号放在#include /#import行的文件上,然后快速打开该文件。
schwa

你们在说什么“文本插入符”?
ivanTheTerrible

9
在Mac上,“光标”指示您的鼠标位置。闪烁的竖线是“插入点”。
尼古拉斯·莱利

1
@Nicholas Riley:插入符号是正确的词,AFAIK-我们的Mac开发人员总是称它为当我在软件公司工作时
Polsonby 2010年

3
@Flubba:插入符号肯定是用于此目的的,我一点也不怀疑。它不是Mac上常见的以用户或开发人员为中心的术语。如果您通过Google搜索“插入站点:developer.apple.com”,您将在TrueType文档和一个最新撰写的iPad文档中找到匹配。
尼古拉斯·赖利

78

使用#pragma进行组织

您可以使用:

#pragma mark Foo

...作为在源文件中组织方法的一种方式。通过弹出菜单浏览符号时,无论放置在哪里Foo哪里,列表都会以粗体显示。

要显示分隔符(即水平线),请使用:

#pragma mark -

这非常有用,特别是对于将委托方法或其他方法组组合在一起时。


9
键入#p通常会触发代码完成'#pragma mark <LABEL>',以快速添加标签部分。
willc2

1
它还会获取# TODO语句。现在,如果它还能抓住它# XXX,这是我工作的代码库中常用的...
asmeurer 2010年

7
Xcode 4还支持“ #pragma mark-Foo”,它可以同时添加标记和分隔符。
typeoneerror 2011年

77

1.“ objc_exception_throw”上的断点

您应该始终objc_exception_throw

2.使用“僵尸”变量调试保留/释放问题

使用以下代码:

NSZombieEnabled = YES;
NSDeallocateZombies = NO;

...调试保留和发布问题。有关更多信息,请参见Apple的“调试应用程序”文档的“查找内存泄漏”部分。

3.从Interface Builder跳转到Xcode中的类

Command ⌘Double-click在Interface Builder的Document Window中的对象上+ ,可跳转到Xcode中的该类。这对于File的Owner非常方便。

4.重用Interface Builder中的自定义对象

将自定义的对象拖回到Interface Builder的库中,以供以后重用。

5.在Interface Builder中选择重叠的项目

Control ⌃ Shift ⇧ + Click在Interface Builder中的对象上单击,可以在鼠标下查看所有对象的菜单。

6. Interface Builder手势指南

界面生成器手势指南


3
好答案!我会为(3)和(4)提供两个我以前不知道的投票。
Nikolai Ruhe

75

Ctrl + 2:访问当前文件中方法和符号的弹出列表。

这非常有用,因为使用此快捷方式,您可以使用键盘完全浏览文件。当您进入列表时,开始输入字符,列表将按类型选择您要查找的符号。


19
我使用空格(CTRL-2转到空格#2),所以我重新映射了键绑定。可以在“ Pop Symbols PopUp”项中的“ Text Key Bindings”下找到它。
bbrown

1
不错的提示。让我发现Control-1将显示文件历史记录列表。
tmadsen'2

2
在XCode5它的CTRL + 6,我相信

1
XCode 4中是否对此具有键绑定?我正在使用Spaces,所以我想重新绑定它,但找不到。
杰弗里·怀斯曼

5
在XCode4中为^ 6。称为显示文档项目。
WBlasko

74

放大编辑器

如果您的窗口同时显示详细信息视图和编辑器视图,则可以放大编辑器以将编辑器视图扩展到窗口的整个高度。(这很容易找到,但是很多人似乎忽略了它。)

您可以通过使用以下方法之一来执行此操作:

  • Command ⌘ Shift ⇧ E

  • 查看 > 放大编辑器

  • 向上拖动拆分器(在编辑器窗口与其上方的文件列表之间)。


18
我花了AGES来找出如何隐藏树-Command-Option-Shift-E。啊,甜蜜的救济。我永远感激MacMacDev Glasgow小组让我知道这一点。
约翰·加拉格尔


52

键盘快捷键并不多,但是源代码中的TODO注释显示在编辑器顶部的method / function下拉列表中。

因此,例如:

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

显示在方法和函数的下拉列表中,因此您可以直接跳至该列表。

大多数Java IDE会在滚动条中显示这些任务标签的标记,虽然更好,但这也可以。


13
也适用于// FIXME:。
ustun

4
我刚刚尝试过// MARK:它具有与#pragma标记完全相同的效果。您甚至可以使用带有破折号的// MARK:来获取分隔符。
Rose Perrone'9

1
我希望您可以将标记添加到它捕获的事物列表中。我使用的代码库有很多# XXX,但没有看到。
asmeurer 2010年

@Gonzalo Larralde什么?我不是要写// TODO,而是要在下拉栏中看到所有TODO注释。#failatfailing
ingh.am,2011年

5
在Xcode 3中,TODO注释可以放在代码中的任何位置,它们将出现在函数弹出窗口中。由于Xcode 4中的某些原因,TODO注释必须在任何函数/方法主体之外才能出现。这是一个错误。
SteveCaine 2011年

51

-[和⌘-]用于缩进和取消缩进所选文本。使清理源代码更加容易。


如果剪切文本并将其粘贴回去,它将神奇地正确缩进。:)
Neo42

14
或者,只需选择它并按Control-I(类似于选项卡,但实际上不是)。
尼古拉斯·莱利

那是我的控制权吗?还是控件l(l代表小写字母)?
VxJasonxV 2011年



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,最新的Xcode / iOS SDK)
ipmcc

从手册页:xed was introduced in Mac OS X 10.5 with Xcode 3.0.
史蒂芬·费舍尔

31

“ Ctrl +向左/向右箭头”可进行单词内文本导航。我使用此功能将光标从变量中的一个“驼峰”跳转到下一个。


10
只要您禁用了空格
它就很棒

也可以尝试Option-f,Option-b,Option-d等。这些都是emacs样式的键绑定。
ustun

2
@jbrennan我已将空间分配给⌃ +⌥+⇧+⌘编辑:要将空间设置为⌃ +⌥+⇧+⌘,请选择“在空格之间切换:”和“直接切换到空格:”弹出窗口,然后按住Control,Option,Shift和Command键。
jrtc27 2010年

一直在寻找这个。感谢Matt,也感谢jtc27提供的空格提示!
里德·奥尔森

@ustun:对我来说,选项-f输入ƒ。
asmeurer 2010年

30

Xcode支持可通过“ 编辑 ”末尾的“ 插入文本宏”菜单调用的文本宏菜单。也可以使用Xcode的代码完成技术Code Sense来调用它们。

例如,键入键序列p i m control-period将插入#import "file"到您的代码中,file作为可编辑标记,就像代码完成一样。


30

右键单击函数中的变量,然后单击范围内的全部编辑。自从我发现这一点以来一直在使用它。

ctrl T


非常有用,不知道它在那里。上下文菜单绝对值得探索。
ruipacheco

7
当您要编辑的单词上方时,可以使用Ctrl-Command-T进行访问。比讨厌的菜单快得多!
John Gallagher

在Mac上称为Ctrl +单击。

3
默认快捷方式在Xcode 4中更改为Ctrl + Command + E,并且可以在按键绑定首选项中进行更改。
Dov

28

您可以让Xcode在Info.plist文件上运行预处理器:

        <key> CFBundleShortVersionString </ key>
    #ifdef调试
        <string> 1.0(调试)</ string>
    #其他
        <string> 1.0 </ string>
    #万一

有关详细信息,请参见http://developer.apple.com/technotes/tn2007/tn2175.html


16
请注意,如果执行此操作,则始终必须将Info.plist编辑为文本。您将无法在漂亮的“属性列表编辑器”中对其进行编辑,从而无法使用正确的键和值类型进行编辑。
克里斯·汉森

27

调试-如何使用GDB

对于这仍然是新手,我发现捕获和识别故障是一项相当艰巨的工作。尽管控制台是一个功能强大的工具,但通常不会产生非常直观的结果,并且同样难以理解您在调试器中正在查看的内容。在Stack Overflow上的一些人的帮助下,以及在Cocoa With Love上可以找到的有关调试的好文章, 它变得更加友好。


26

来回浏览打开的文件:
⌥⌘←
⌥⌘→


5
关键是在Mac上是“选项”(⌥),而不是“ alt”。
克里斯·汉森

7
白色Apple键盘的确在选择键上写有alt。
克里斯·伦迪

19
克里斯(Chris),“ alt”标签是针对切换台的。Mac上的老派Mac知道它是Option。就像上帝的意图。
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 2010年

AAARRGGHH作为ObjectMaster的老粉丝,我很高兴地阅读了此书,直到我意识到它已在XCode4中删除,不敢相信此IDE向后退了一大步。我敢打赌,有一吨的苹果内部人仍然在使用Xcode的3
安迪·登特

19

使用]自动插入[正确的位置

我来自.NET背景,因此我习惯于键入符号,然后键入其方法名称之一。因此,我总是忘记[在开始输入对象名称之前包括。通常,这意味着我需要转到该行的开头并[手动添加。我没有意识到我可以按]当前光标位置,它会自动添加。

有多种使用方法:输入函数名称后,或输入函数名称前。

方法1:在函数名称之后

myObject testMethod]

...变成:

[myObject testMethod]

...插入符号位于]

方法2:在函数名称之前

myObject]

...变成:

[myObject ]

...右定位插入符之前]

后者(2)的优点是代码完成将过滤对象的方法。而对于前者(1),如果您尝试在之后立即调用代码完成功能myObject,则不会对其进行过滤。(2)的另一个优点是它的行为更类似于使用点表示法的其他编程语言。您键入对象的名称,然后直接访问]而不是.方法。


17

选择一个文本块,然后键入cmd- /以将其注释掉。再次执行以删除注释字符。

当通过双击平衡字符(括号,括号,方括号)与括号匹配结合使用时,这特别有用。


上次检查时,Xcode的注释/取消注释被彻底破坏了。这是一个耻辱。

16

能够快速查看可以从超类重写的所有方法。例如,当扩展UITableViewController时,我只需输入实现即可:

- ta

然后点击ESC,以查看超类中所有以“ ta”开头的方法,例如

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

在采用协议时这也有效。


14

Command ⌘ alt ⌥ shift T :在项目树中显示当前编辑的文件。


很棒的提示,谢谢。这在处理别人的代码时非常有用,例如在开发了一段时间后调用您进行项目工作时。
阿兰·穆赫兰


13

使用类浏览器显示继承的方法

Apple的API参考文档没有显示从超类继承的方法。不过有时候。能够查看某个类的全部功能,包括自己的自定义类,这很有用。您可以使用类浏览器(从“项目”菜单中)来显示与当前项目相关的所有类的平面列表或层次列表。浏览器窗口右侧的上部窗格显示了与在浏览器中选择的对象相关的方法列表。您可以使用“配置选项”表选择“显示继承的成员”以显示继承的方法以及由选定类本身定义的方法。您单击小书本符号以转到相应的文档。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.