【问题标题】:Is it possible to comment out blocks of code that contain comments?是否可以注释掉包含注释的代码块?
【发布时间】:2015-05-21 13:45:45
【问题描述】:

假设我有这样的代码

some_line_of_code
some_line_of_code
/* some comment about code */
some_line_of_code
some_line_of_code

我想像这样注释掉整个块

/*
    some_line_of_code
    some_line_of_code
    /* some comment about code */
    some_line_of_code
    some_line_of_code
*/

如您所见,即使是 SO 代码解析器也不会考虑最后两行代码 cmets。是否可以注释掉包含 cmets 的代码块?

编辑: 为了澄清,我需要它能够注释掉大部分代码,以检查我更改的函数是否可以在包中编译,否则在所有更改完成之前无法编译。

【问题讨论】:

  • 不确定您使用的是什么 IDE,但有一些具有很好的快捷方式。例如 - 我突出显示每一行,无论其间的 cmets 是什么,一旦我点击 Cntrl+/ .... Bam!所有行都已注释。就像我说的,这是特定于 IDE 的
  • 我已经习惯了在 Visual Studio 中拥有这样的功能,但我是使用 atm 的 Oracle SQL Developer 的新手。你指的是哪个 ide 允许这个 ctrl+/?
  • JetBrains 在我看来拥有最好的 IDE。对于不同类型的工作,有许多版本。我主要使用 PHP,所以我使用 PHPStorm,它可以很好地与 SQL、JS、HTML 配合使用。在这里查看产品 - jetbrains.com/products.html?fromMenu
  • 由于您专注于 SQL,因此此博客可能与您有关 blog.jetbrains.com/blog/2014/06/09/…

标签: oracle plsql oracle-sqldeveloper


【解决方案1】:

在 SQL Developer 中,我突出显示我想要注释的所有 PL/SQL 行并使用 Ctrl + /

显然,您想要一种快速注释和取消注释多行的方法。这会将-- 放在您突出显示的每一行的前面。执行相同的命令取消注释。

【讨论】:

    【解决方案2】:

    您可以通过工具 > 首选项 > 键配置(编辑/选择/注释行)分配功能键。

    【讨论】:

    • 正是我所需要的。非常感谢。
    【解决方案3】:

    正如@Acroneos 所说,没有办法。这是大多数编程语言的常见行为。词法分析器可以识别注释和其他标记。词法分析器使用上下文无关的语法。即,词法通常只能识别正则表达式。

    您仍然可以使用 C/C++ 方法 (#if 0/#endif)。见Conditional compilation。但它看起来并不“那么好”。

    begin
     something1;
     $if false $then
      something2;
     $endif;
    endl;
    

    【讨论】:

      【解决方案4】:

      注释行的快捷方式: 命令 + 选项 + / (在 Mac 中)

      【讨论】:

        【解决方案5】:

        你可以使用 --

        所以这段代码:

        some_line_of_code some_line_of_code -- some comment about code some_line_of_code some_line_of_code

        将是:

        --some_line_of_code --some_line_of_code ---- some comment about code --some_line_of_code --some_line_of_code

        【讨论】:

        • 不管它是否工作,注释掉大段代码以检查你的函数是否可以编译都远非快速和优雅的方式。
        • 这种方法与 Emacs 完美配合。通过对选定区域执行 uncomment-region,仅删除一级 cmets。当然,comment-region 会为每个选定的行添加一层单行 cmets。
        • 我一直用VS/SublimeText,而且这两个编辑器都有这个添加cmets的功能,在vb上是(引用),在C++上是 //
        • 您将*您的问题标记为“oracle/plsql”,您要注释掉什么代码?不是plsql吗?
        【解决方案6】:

        不,因为从第一个定界符到下一个最后一个定界符之间的所有内容都将被识别为注释(=不被编译器处理)。这就是 multiline-cmets 的工作方式:如果第一个分隔符 (/ * ) 被识别,编译器将忽略任何内容,直到下一个最后一个分隔符 ( * /) 被识别。现在您知道这一点,您应该能够理解为什么您的第二个 / * 永远不会被编译器识别为注释分隔符。

        但是,您可以在 multiline-comment-sector 中使用特殊字符或串联标记 cmets,以将 cmets 排列到不同的部分。

        【讨论】:

          猜你喜欢
          • 2019-11-08
          • 1970-01-01
          • 1970-01-01
          • 2014-12-11
          • 2011-04-24
          • 2012-02-24
          • 2015-09-30
          • 2013-05-04
          • 1970-01-01
          相关资源
          最近更新 更多