如何在XCode 4中收藏代码?

63

我找不到在XCode 4代码中添加书签的方法。我知道有#pragma mark,但这不是我想要的。我需要的是能够用鼠标点击放置和移除的东西,并且可以通过上一个和下一个导航,就像在VS中一样。

我是否遗漏了什么?

8个回答

61

2023 更新

Xcode 15 新增了书签导航器和相关的书签功能,包括类似任务管理和内联源代码注释!

旧回答

在 Xcode 4 中,书签似乎已经过时了。如果之前版本中编辑器上方的跳转到书签弹出窗口没有消失的话,情况可能不会那么糟糕。目前最好的替代方法似乎是使用断点(当然要逐个禁用),并通过断点导航器进行导航。

断点的快捷键是 Cmd + 8。一旦进入断点导航器,使用箭头键进行导航。

如果你认为应该恢复类似功能,请在http://bugreporter.apple.com提交错误报告。


1
是的,我正在使用断点导航器进行导航。谢谢你的回答,我会提交一份报告。 - aslı

59

在你的源文件中,写下以下注释以便加入书签。

 //<##>

你可以使用'^/'或'^?'进行下一个/上一个导航

  1. <##>表示"代码片段的占位符"
  2. ^/表示"跳转到下一个占位符"
  3. ^?表示"跳转到上一个占位符"

谢谢


4
嗯...这些快捷键似乎只适用于同一文件。 在整个项目中都能看到书签会很方便。 - martin jakubik
注释标签在代码片段库中运作良好。然而,我认为它不是全局代码书签工具。 - Slavik
8
这可以运行。同时,你可以在#之间添加有用的文本,例如://<# 书签 #> - Dan
刚刚测试了一下,在Xcode 5中也可以正常工作。 - Ozair Kafray

18

如果还有人感兴趣,另一个选项是使用以下指令会产生编译器警告,你可以将其用作书签:

#pragma message "<# message #>"

或者

#warning <# message #>

如果你想用鼠标放置书签:使用上述两个指令之一创建代码片段。将其拖放到源文件中您想要添加书签的行。

使用Cmd-'和Cmd-Shift-'进行向前/向后导航。


1
我不会使用警告,因为我告诉编译器将警告视为错误,但是这个消息可能会有用的,是吧 :) - aslı

10
在Xcode 4.4中,如果您使用以下格式留下评论:
// TODO: Your text here

它将作为一个列表添加到跳转栏,与当前文件中的方法列表一起显示,然后您可以从该菜单直接跳转到该注释。


我看到 // MARK: Message 做了类似的事情。 - Manngo

4
最简单的技巧是使用以// TODO开头的注释,然后搜索,这样可以从导航器中跳转到问题。很难超越这种技术。
我个人不喜欢使用断点作为书签,因为不容易输入注释。我将断点用作断点,并且不愿将它们与书签混在一起。
无论如何,如果您想变得更加花哨,您可以让Xcode生成警告// TODO:一些消息或// FIXME:一些消息,这些消息可以在问题导航器中进行导航。我从this site中获取了以下说明:
说明
转到项目导航器中的项目项(通常位于顶部) 在左侧的目标列表中找到您的目标,选择它 转到“构建阶段”选项卡。 在此屏幕的右下方单击“添加构建阶段”。 在出现的编辑器中插入下面显示的bash脚本。 现在只需构建即可看到所有的//TODO:和//FIXME:注释已变成警告。我喜欢这种技术,它可能不适合每个人,但希望能帮助某些人。 "Run Script"构建阶段的Bash脚本

关键词="TODO:|FIXME:|\?\?\?:|!!!:" find "${SRCROOT}" ( -name ".h" -or -name ".m" )-print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/ 警告:\$1/" 您还可以单击问题导航器中的每个警告,直接转到您留下原始 //TODO: 或 //FIXME: 的文件和代码指针所在的位置。 额外的专业提示:确保使用短语描述您的 //TODO: 注释,例如//TODO:优雅地处理此错误等。 短语将在每个警告旁边的问题列表中显示。 这个小技巧应该归功于Cocos2D论坛上的“Tim”(经过一段时间的谷歌搜索后发现),我相信他的解决方案最初是为Xcode 3设计的,并且如果您的路径名中有空格,则无法正常工作,我的脚本没有这些限制,在这里他应该得到全额认可原帖


1
我点赞了这个答案,因为它是另一个可行的解决方案,但我个人不喜欢它,因为它需要修改实际源代码。A 是一个临时的东西,用于快速导航,可能会在几次代码提交后保留下来。即使在单人开发项目中,我的强迫症也不允许这样做;你认为团队环境中每个人的书签都出现在代码库中会怎么样?;-) Apple 真的 需要添加一个仅用于导航的书签功能,而不会修改代码(就像断点一样)。 - Joshua Nozzi

2
就像 npellow 在我提出的这个问题中的回答一样,JetBrains 的 appCode 也可以实现这个功能。因此,这可能是使用 appCode 而不是 Xcode4 的另一个原因,除了它在将来不会免费之外。

8
如果他们考虑要收费,那就需要做很多工作了。AppCode相当笨重,而且它是一个只能在Mac OS上的Intel处理器上运行的Java应用程序。即使是Eclipse也是免费的。我对任何选择Java而不是本地语言和API来针对一个操作系统平台进行开发的开发人员提出进一步质疑。 - Joshua Nozzi
你为什么要质疑呢?很明显他们的程序员专业技能在Java方面。我想很多内部东西都是从其他语言和平台的IDE中借鉴来的。如果你这样看,这并不奇怪。 - Cthutu
Resharper对于Visual Studio来说是不可思议的,如果AppCode能够拥有同样的功能,那我一定会使用它。 - Aran Mulholland
appCode变得越来越必要,该产品正在飞速增长。我现在使用两种 IDE,appCode具有优秀的重构工具,而xCode则缺乏。 - Aran Mulholland
我最初对Rubymine(另一个JetBrains Java产品)也感到失望。它很慢,占用了我的CPU。但是在第6个版本中,他们做得非常好,现在我离不开它了。不要让你的偏见(就像我一样)阻止你使用好的软件。我根本不喜欢Java应用程序,但Rubymine很棒。也许appCode也会很好。 - kakubei
刚刚下载了AppCode并在今天进行了另一次尝试。同样的问题:资源占用过多(包括我的MBP电池寿命),在Mac上显得笨重且不协调,试图成为一个过于通用的IDE,无法成为特别好的Mac/iOS IDE,总是想要打开Xcode来完成它无法做到的事情(这比我认为可以接受的要多得多)。我将继续向开发者工具团队提交增强请求,以改进Xcode本身。 - Joshua Nozzi

2

我的方法:

在上一行中输入语法错误代码......

在其他地方更改某些内容后,我可以返回到先前的位置,因为语法错误行将在右侧滚动条中显示红线。它表示该位置。

这不是很优雅,但除非有书签功能,否则目前我正在使用这种方法。


看到cocoanut的回答,我不喜欢修改代码(更改可能会被检查)。但是,如果我在进行复杂的操作时被打断或者要结束当天的工作,我经常会在一行代码前面加上(不包括引号)“::: //关于我正在做的注释”。这样,即使项目关闭或我的位置丢失,结果错误也会突出显示并且我可以恢复记忆。 - Joshua Nozzi

0

你可以安装一个名为“XBookmark”的Xcode插件。

该插件提供以下功能:

  • 切换书签
  • 显示书签
  • 下一个书签
  • 上一个书签

如何安装XBookmark:

  1. 安装Alcatraz。
  2. 从窗口->包管理器中搜索XBookmark并点击安装。
  3. 重新启动Xcode。

现在,您可以在编辑菜单中看到关于书签的菜单。

PS:此插件是开源的。


请问您能否包含一个插件链接吗? - Roberto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接