ChatGPT解决这个技术问题 Extra ChatGPT

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

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


U
Unterbelichtet

试试命令 + /。

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


@Nizam 只需再次按 Command + Shift + 7,即 Command + /
这对我有用。谢谢
N
Nikola Milicevic

更新 Xcode 12 / macOS 大苏尔:

目前 Mac App Store 版本的 BlockComment for Xcode 未显示在 Xcode 下 >偏好>键绑定。此问题已出现 resolved,可以改用 GitHub version

2017 年 6 月更新:

由于我很懒,并且没有完全实现我的解决方案,所以我四处搜索并找到了 BlockComment for Xcode,这是一个最近发布的插件(2017 年 6 月)。不要打扰我的解决方案,这个插件工作得很好,我强烈推荐它。

原始答案:

以上都不适用于 Xcode 7 和 8,所以我:

使用 AppleScript 创建 Automator 服务 确保选中“输出替换选定文本” 输入以下代码:运行时 {input, parameters} return "/*\n" & (input as string) & "*/" end run

https://i.stack.imgur.com/N7K8u.gif

现在您可以通过 Xcode - Services 菜单访问该服务,或者通过右键单击要评论的选定代码块,或者在 System Preferences 下为其提供快捷方式。


BlockComment 解决方案不再适用于 xcode 13.2.1
@user3296487 它有效,您需要使用 GitHub 版本,而不是 App Store 中的版本(如答案中所述)。
B
Beninho85

现在使用 xCode 8,您可以:

⌥ + ⌘ + /

自动生成文档注释。

来源:https://twitter.com/felix_schwarz/status/774166330161233920


当使用 Swift 并按、选项、命令、/ 时,这对我不起作用。我做错了什么?我只是得到 \\\ Description 而不是带有@params 等的文档块
这是因为你的函数没有提供任何参数
f
fzwo

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

安装它的最简单方法是使用神奇的 Alcatraz plugin manager for Xcode

编辑 Apple 遗憾地(并且错误地,恕我直言)用 Xcode 8 淘汰了旧的插件模型。新的插件系统非常有限,但应该允许再次开发这样的插件。对于有兴趣这样做的任何人,请观看WWDC 2016 session 414。此外,请file radars获取您想编写或查看的插件的 API。


从 Xcode 6.3(版本 6.3.1 (6D1002))开始,这不起作用。没有插件工作。
@AbhishekBedi 有关新 Xcode 版本的一般插件故障排除,请参阅 stackoverflow.com/questions/30361228/…
B
Baig

更新:Xcode 8 更新

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

⌥ + ⌘ + /

注意:以下方法不适用于 xcode 版本 => 8

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

打开 Automator 选择服务搜索运行 Shell 脚本并双击它

在 textarea 中添加以下小程序

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

https://i.stack.imgur.com/oV17F.png

将脚本另存为块注释

添加键盘快捷键

打开系统偏好设置>键盘 >快捷方式,通过单击+ 添加新的快捷方式,并使用与您在第 4 步中为 applescript 指定的名称相同的名称,即 Block Comment。添加您的键盘快捷键并点击添加按钮。

https://i.stack.imgur.com/1Yyz7.png

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


@Baig 奇怪的是,当我在 Automator 'Run Shell Script' 输出窗口中测试它时,它工作正常。也许,我的快捷键组合已经被使用了,这可能会阻止它?但是,上下文菜单功能也不起作用?这让我很烦...
如果您有兴趣将仅行的选定部分包装在块注释中,则可以采用上述解决方案,改用以下文本作为 Shell 脚本:sed -e '1 s|^|/* |' -e '$ s|$| */|'。而且,以防万一,它至少在 Xcode 12.4 中有效。
r
rockdaswift

看起来在 macOS Monterey 上,Xcode 块注释切换键组合已更改为命令 ⌘ + '

编辑:Xcode 13.2 已返回到之前的组合键。命令 ⌘ + ⇧ + 7


德语键盘:command + ß
@Michael 你为我节省了几个小时。谢谢。为我工作。
使用西班牙语键盘:command + ! (命令 + 移位 + 1)。
A
A. Buksha

我稍微修改了 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

https://i.stack.imgur.com/K4FIE.gif


很有用。谢谢
T
TT--

在 XCode 10(及更高版本)中,使用 Option + Command + Slash(即 ⌥ + ⌘ + /)

为您的函数或类写一个漂亮的评论,如下所示:

https://i.stack.imgur.com/0PpWU.png


O
Ohmy

你可以很容易地自己分配这个,这里是一步一步的解释。

1.) 在您的 xCode .m 文件中键入以下内容,只要它是一个空白区域,您在哪里键入都没有关系。

/*
*/

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

https://i.stack.imgur.com/ACK5y.png

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

https://i.stack.imgur.com/nIeLn.png


l
lozflan

我设法通过一个自动化任务使它正常工作,并使用快捷方式将其绑定到组合键 ctrl+option+command+b。我所要做的就是突出显示我想要在 xcode 中注释块的代码,然后按上面的键,然后使用 /* ... */ 将选定的文本块注释掉。

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

我不熟悉使用 mac automator,但我只是按照以下 wwdc 视频中的 instrux

在 WWDC 2012 视频 Session 402 - Working Efficiently with Xcode(大约 6 分钟后)中描述了如何使用 Mac OSX Automator 添加服务来操作选定的文本。视频中显示的示例是使用 shell 命令 sort 和 uniq 删除所选文本中的重复项。使用这种方法你做同样的事情,但你输入以下命令而不是他在视频中所做的

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

(请注意,上一行中有 2 个星号,由于某种原因没有显示......它们确实显示在下面的屏幕截图中,因此将其复制为正确的输入命令)

你最终应该像这样运行一个shell脚本

https://i.stack.imgur.com/a2zgG.png

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

当你保存它时,你应该可以选择命名它(我称之为块注释)并分配一个键盘快捷键

然后你应该能够打开xcode,选择一些文本,右键单击,上下文菜单,你给这个脚本的名字应该显示在底部附近

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

希望这可以帮助


M
Martin Braun

如果您的键盘布局要求您同时按下 shift 键(即德语键盘上的 cmd + shift + 7),则快捷方式将不起作用并打开帮助菜单。

苹果公司的“Think Different”在最大程度上......

如果您转到 Xcode > Preferences > Key Bindings,您可以定义自己的快捷方式使其工作:

https://i.stack.imgur.com/C17Vp.png


D
Diogo Souza

根据 Baig 的回复,我创建了一个快捷方式来评论和取消评论某行的一部分。这适用于 Xcode 13.2.1 和 MacOS 12.0。

打开 Automator 选择快速操作 搜索运行 AppleScript 选择工作流上的文本接收当前下拉列表 检查输出替换所选文本 添加此脚本

on run {input, parameters}
    set s to (input as string)
    if s contains "/*" then
        return text 3 thru -3 of s
    else
        return "/*" & s & "*/"
    end if
end run

在设置->键盘->快捷方式上点击播放并保存为阻止评论,选择应用程序快捷方式并点击+使用脚本标题作为菜单标题(即“阻止评论”)选择所需的快捷方式(我做了command+option+shift+/)开Xcode 选择要注释的文本并按下快捷键 要取消注释,请从 /* 到 */ 中选择文本并按下快捷键


N
Nathan Tuggy

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


可能意味着 Cmd + /。似乎至少 German keyboard layout7 键上有 /,但在美国布局上 / 在其自己的键上没有移位。
我在挪威语键盘布局上的 7 键上也有 /,但它仍然不起作用.. 这个快捷方式只是打开帮助菜单
F
Fati

xcode 上的帮助菜单前有一个符号,其中包含编辑用户脚本。在评论部分下的 Un/Comment Selection 上更改我的 $cCmt = "//";到我的 $cCmt = "#";或者任何你的 IDE 可以使用的东西。然后通过选择行和命令 + / (这是我的 xcode 默认值),您可以注释和取消注释选定的行。


C
Charles Robertson

@尼古拉·米利切维奇

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

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

谢谢

https://i.stack.imgur.com/MrDhl.png

https://i.stack.imgur.com/hL20g.png

更新:

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

https://i.stack.imgur.com/ngBvS.png

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

https://i.stack.imgur.com/vLDOc.png

https://i.stack.imgur.com/AbyF4.png


D
Daniel Bauke

如果您正在寻找一种将自动生成的评论从 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 回答中的相同:

https://i.stack.imgur.com/xqtnu.png

https://i.stack.imgur.com/J3gVA.png


N
NSNoob

在 Macbooks 中,您可以使用 shift + cmd + 7 来注释先前突出显示的块


A
Ashim Dahal

在 xcode 11.1 快速 5.0

选择要添加块注释的代码,然后按 ⌥ + ⌘ + /

https://i.stack.imgur.com/55jox.png


D
Dil Azat

好像已经有很多人回答这个问题了。

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

希望这可以帮助。


伙计,你最好删除你的答案。它没有任何价值,只会吸引更多的反对者。 ;)