是否有在Xcode中进行块注释的快捷方式?


152

我正在编写ANSI兼容的C代码,因此不能使用line(//)注释。我正在使用Xcode。我认为在Sublime Text和Eclipse中,大多数其他IDE都有单独的键盘快捷键,用于行注释和块注释(/**/)。但是,我没有在Xcode中看到它-实际上,我什至没有看到添加块注释的菜单选项。Xcode根本不支持它吗?如果是这样,那似乎肯定是一个me脚的决定。


您是否更接近解决方案?此外,一年多以前,有人问了一个相同的问题(可悲的是,也没有回答)。
Blaz 2012年

建立键绑定/快捷方式也将使其他语言受益,因为块注释可以作为旧的但尚未删除的代码的视觉标记,而常规//注释仍将是“真实的”注释。否则,您将无法一目了然。
Blaz 2012年

嗨!您找到快捷方式了吗?谢谢
Frade 2014年

还在寻找这样的东西。Eclipse足够聪明,可以在之后构建它/* + Return,但是Xcode只是将您转储到下一行的0列位置。
Craig Otis 2015年

无法相信,即使在包装了所有(“”,(),{},[])的Xcode 9中,也没有办法以任何方式对块注释做同样的事情...年复一年,每次发行都如此。如果“代码段”可以使用某些标记进行“选择”,那也将是很棒的……
bauerMusic

Answers:


231

尝试command+ /。这个对我有用。

因此,您只需突出显示要注释掉的代码块,然后按这两个键即可。


39
我认为您没有阅读我的问题,或者您已经看到我明确地说我不能使用//注释,这是命令/产生的内容。
limp_chimp 2013年

1
取消注释该块的快捷方式是什么?
尼扎姆(Nizam)2014年

13
@Nizam只需再次按Command+ Shift+ 7,即Command+ /
muenchdo

4
不管这个答案没有解决特定的问题,它实际上都出现在Google搜索“ Xcode注释快捷方式”的顶部附近,因此必须有一定的相关性-我读完这个问题就承认了,这是正确的回答,所以也许您的问题有些复杂。我会根据您的问题标题考虑命令+ /实际上是注释块。无论哪种方式,这都是非常有用的解决方案-谢谢。
承运人

10
这似乎已经停止在Xcode 8.0中工作了,哪儿Cmd-/去了?
bshirley's 16-10-13

41

更新:

由于我很懒,并且没有完全实现我的解决方案,所以我四处寻找 BlockComment for Xcode(最近发布的插件)(2017年6月)。不用理会我的解决方案,这个插件可以很好地工作,我强烈推荐它。

原始答案:

以上都不适合我 Xcode 78上使用,所以我:

  1. 使用AppleScript创建的Automator服务
  2. 确保“输出内容替换选定的文本”被选中
  3. 输入以下代码:

    on run {input, parameters}
    return "/*\n" & (input as string) & "*/"
    end run

在此处输入图片说明

现在,您可以通过Xcode-服务菜单,或右键单击要注释的选定代码块,或在“系统偏好设置”下为其提供快捷方式,以访问该服务。


1
你是个天才。我已经尝试实现本文中的所有其他答案,包括“ Automator-> Run Shell Script”解决方案,除了您自己的解决方案外,其他任何方法均无效。AppleScript赢得了胜利。我支持您的回答...
查尔斯·罗伯逊

凉。很高兴为您提供帮助:)
Nikola Milicevic,2013年

我知道这有点厚脸皮,但是您知道在应用这些块注释时如何保留缩进吗?例如,在XCode中,我的大多数代码都在某种程度上缩进了,当注释保留缩进时,它看起来更加整洁。这将模仿本机块注释样式的行为。谢谢...
查尔斯·罗伯逊

嗯,您可以提供屏幕截图吗?因为它应该保留缩进。为了获得最佳结果,您应该选择整行,如示例所示。
Nikola Milicevic

您如何阻止取消注释?
Abhishek Bedi'3


23

现在有一个允许这样做的Xcode插件:CComment

最简单的安装方法是使用令人惊叹的Alcatraz Xcode插件管理器

编辑 Apple不幸地(错误地,恕我直言,恕我直言)使用Xcode 8淘汰了旧的插件模型。新的插件系统非常有限,但应该允许再次开发这样的插件。对于对此感兴趣的任何人,请观看WWDC 2016会议414。另外,请为您要编写或查看的插件的API 提交雷达报告。


谢谢,@BugsBunny-我的答案比这个问题新得多,所以我猜到现在为止还没有人看到它:)
fzwo 2014年

2
从Xcode 6.3(版本6.3.1(6D1002))开始,此功能无效。没有插件有效。
Abhishek Bedi 2015年

@AbhishekBedi有关新Xcode版本的常规插件疑难解答,请参见stackoverflow.com/questions/30361228/…
fzwo 2015年

12

更新:Xcode 8更新

现在,使用xcode 8,您可以执行以下操作:

+ +/

注意:以下方法在xcode版本=> 8中不起作用

非常简单的步骤,将“块注释”功能添加到任何Mac OS X编辑器

  1. 打开自动器
  2. 选择服务
  3. 搜索运行Shell脚本,然后双击它

在textarea中添加以下applescript

awk 'BEGIN{print "/*"}{print $0}END{print "*/"}'

苹果脚本块评论

  1. 将脚本另存为 Block Comment

添加键盘快捷键

打开“ 系统偏好设置”>“键盘”>“快捷方式”,通过单击+并右键单击与Block Comment第4步中指定给applescript的名称相同的名称,添加新的快捷方式。添加键盘快捷键,然后单击添加按钮。

新的键盘快捷键

现在,您应该能够在Xcode或任何其他编辑器中使用阻止注释,选择一些文本,使用快捷键来阻止注释任何代码行或右键单击,上下文菜单以及为此脚本指定的名称应显示在附近。底部。


答案中无需写“ Upvote if it works”。如果人们觉得有用,他们会投票赞成。
taskinoor

@Baig这是一个非常有据可查的答案,我设法实现了它。但是,当我选择一段文本并运行快捷键ctrl + option + command + b时,什么也没有发生。即使使用上下文菜单,也没有任何反应?真可惜,因为我确信这会奏效。没关系,至少,我学会了如何使用Automator。多么酷的应用程序!
查尔斯·罗伯森

@Baig我需要重新启动计算机吗?
查尔斯·罗伯逊

@Baig奇怪的是,当我在Automator的“运行Shell脚本”输出窗口中对其进行测试时,它可以正常工作。也许我的快捷键组合已经被使用了,这可能会阻止它?但是,上下文菜单功能也不起作用吗?这让我烦恼……
Charles Robertson

在以前的osx版本中,这是完美的工作方式。我检查了它,现在无法正常工作。
Baig

7

我对Nikola Milicevic的代码进行了一些修改,因此如果代码已被注释,它也会删除注释块:

on run {input, parameters}
    repeat with anInput in input
        if "/*" is in anInput then
            set input to replaceText("/*", "", input as string)
            set input to replaceText("*/", "", input as string)

            return input
            exit repeat
        end if
    end repeat
    return "/*" & (input as string) & "*/"
end run

on replaceText(find, replace, textString)
    set prevTIDs to AppleScript's text item delimiters
    set AppleScript's text item delimiters to find
    set textString to text items of textString
    set AppleScript's text item delimiters to replace
    set textString to "" & textString
    set AppleScript's text item delimiters to prevTIDs
    return textString
end replaceText

希望这会帮助某人。在此处输入图片说明


7

在XCode 10中,您可以使用option + command +反斜杠为函数或类编写漂亮的注释,如下所示:

在此处输入图片说明


6

您可以很容易地自行分配,这里逐步说明。

1.)在xCode .m文件中,键入以下内容,只要是空白区域,在哪里键入都无所谓。

/*
*/

2)突出显示两行代码,然后将其拖放到“代码片段库面板”区域(位于“实用工具”面板的底部)。如果操作正确,则会显示浅蓝色加号。

在此处输入图片说明

3.)放开鼠标键后,会弹出一个新窗口,要求您添加名称,快捷方式等;如图所示。如您所见,我将快捷方式添加到//。因此,每次我想要一个块注释时,我都会键入//。希望这可以帮助

在此处输入图片说明


您仍然可以在XCode 10中执行此操作,“代码段库面板”区域刚刚移动。{ }在编辑器区域的右上方查找图标。
曼罗

1

我设法通过自动任务完成了此工作,并使用快捷方式将其绑定到组合键ctrl + option + command + b。我要做的就是在xcode中突出显示我要阻止注释的代码,然后按以上键,然后使用/ * ... * /将所选文本阻止注释。

我使用代码折叠相当合理,所以我想要此功能的原因是,我可以轻松地折叠一段注释的代码...代码使用//不会折叠来注释通常的方式。

我不熟悉使用Mac automator,但我只是在以下wwdc视频中关注了instrux

在WWDC 2012视频会议402-使用Xcode高效地工作(大约6分钟后)中,描述了如何使用Mac OSX Automator添加服务来操纵选定的文本。视频中显示的示例是使用shell命令sort和uniq删除所选文本中的重复项。使用这种方法,您可以执行相同的操作,但要输入以下命令,而不是他在视频中的操作

awk'BEGIN {print“ / ”} {print $ 0} END {print“ /”}'

(请注意,由于某些原因,在前一行中有2个星号未显示...。它们确实显示在下面的屏幕快照中,因此请将其复制为正确的输入命令)

您应该最终运行这样的shell脚本

屏幕截图

对于任何给定的选定文本,这将在注释定界符之前和之后放置。

当您保存它时,您应该获得命名的选项(我称其为blockcomment)并分配键盘快捷键

那么您应该能够打开xcode,选择一些文本,右键单击,上下文菜单,并且为此脚本指定的名称应显示在底部附近

只需单击名称,脚本便会运行并阻止注释所选代码或使用您分配的键盘快捷键。

希望这可以帮助


杂乱无章,但是我使用Keyboard Maestro和awk做了类似的操作来创建方法的标题。Swift需要做更多的工作,所以我还没有解决。
劳埃德·萨金特

0

xcode的帮助菜单前有一个带有“编辑”用户脚本的符号。在注释部分下的取消/注释选择上,更改我的$ cCmt =“ //”; 到我的$ cCmt =“#”; 或您的IDE配合使用的任何东西。然后,通过选择行和命令+/-(这是我的xcode的默认设置),您可以注释和取消注释所选的行。


0

@尼古拉·米利切维奇(Nikola Milicevic)

这是缩进问题的屏幕截图。这是非常小的,但是奇怪的是,在您的示例视觉中,它似乎运行得很好。

我还添加了Automator设置的屏幕截图...

谢谢

在此处输入图片说明

在此处输入图片说明

更新:

如果我将脚本稍微更改为:

在此处输入图片说明

然后在XCode中选择整行,我得到了预期的结果:

在此处输入图片说明

在此处输入图片说明


1
哦是的 关闭评论后,我没有添加新行,没有它,我更喜欢它。好,你知道了。
Nikola Milicevic

0

如果你正在寻找一种方式来自动生成的评论从转换Add Documentation动作(可以cmd- - shift),/你可能会发现它太有用:

function run(input, parameters) {
  var lines = input[0].split('\n');
  var line1 = lines[0];
  var prefixRe = /^( *)\/\/\/?(.*)/gm;
  var prefix = prefixRe.test(line1) ? line1.replace(prefixRe, "$1") : ""

  var result = prefix + "/*\n";  
  lines.forEach(function(line) {
    result += prefix + line.replace(prefixRe, "$2") + '\n';
  });
  result += '\n' + prefix + ' */';
  return result;
}

其余与@Charles Robertson答案相同:

自动化器

服务



-1

Cmd+ Shift+ 7将注释选定的行。


您能指定它在什么条件下工作吗?对我来说,不是...!
SeF

可能是Cmd+ /。看来,至少在德国的键盘布局/7关键,但对美国的布局/是在不改变其自己的密钥。
杰克·科布

我有/7和挪威键盘布局的关键,但它仍然没有工作..这只是快捷方式打开帮助菜单
性病


-11

似乎已经有很多人回答了这个问题。

在Swift 3.0中,单行注释是在前面加双斜杠:“ //”;多行放在“ / * .... * /”中。

希望这可以帮助。

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.