【问题标题】:Java equivalent to #region in C#Java 相当于 C# 中的#region
【发布时间】:2011-01-21 14:51:20
【问题描述】:

我想在 Eclipse 中使用区域进行代码折叠;用Java怎么做?

C# 中的一个示例用法:

#region name
//code
#endregion

【问题讨论】:

  • 我入党晚了。我同意 IKashef 的观点,即当前选择的答案还有其他选项。 Yaqub Ahmad 的回答救了我的命。我不需要下载 Intellig IDE。我从 cking24343 的评论中下载了提到的 CoffeeBytes 插件,我应用了“null n void”的配置,并且在 Luna 中运行良好。应用配置后需要重启
  • //region [Description] 开头并以//endregion 结尾
  • 稍后,不是专门针对 Java,而是与 Eclipse 折叠相关:stackoverflow.com/q/13505413/7224691

标签: java c# eclipse folding


【解决方案1】:

在 Visual Studio Code 中,试试这个:

//region Variables
// Code you need
//endregion

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      vscode

      我在 java 中使用 vscode,它的工作原理与 Visual Studio 几乎相同,只是你使用 cmets:

      //#region name
      
      //code
      
      //#endregion
      

      【讨论】:

        【解决方案4】:

        这是一个例子:

        //region regionName
        //code
        //endregion
        

        100% 在 Android 工作室中工作

        【讨论】:

        • 我不知道为什么你被否决了,这实际上可以在 Android Studio 中运行,无需任何配置!
        【解决方案5】:

        可以使用 CoffeeScript 代码折叠插件将自定义代码折叠功能添加到 Eclipse。

        经过测试,它可以与 eclipse Luna 和 Juno 一起使用。以下是步骤

        1. here下载插件

        2. 提取存档内容

        3. 将 plugin 和 features 文件夹的内容复制粘贴到 eclipse 安装目录中的同名文件夹中
        4. 重启eclipse
        5. 导航Window >Preferences >Java >Editor >Folding >Select folding to use: Coffee Bytes Java >General tab >Tick checkboxes in front of User Defined Fold

        6. 如图所示创建新区域:

        7. 重新启动 Eclipse。

        8. 尝试折叠是否适用于以指定起始和结束标识符为前缀的 cmets

        您也可以在 Blog 下载存档并查找步骤。

        【讨论】:

        • 在 eclipse neon 上不适合我:复制和粘贴什么也没做:唯一改变的是在市场 >> 安装插件 >> 更新下。我更新了coffeeScript插件,但在java>>编辑器>>折叠下没有得到“选择折叠使用”选项
        • 它在 Eclipse Oxygen 中工作,但是您需要再次重新启动 Eclipse。显示给我的图标是一个红色图标,所以我在配置中进行了更改,Window → Preference → Java → Editor → Folding 单击 Advanced 选项卡并将图标主题设置更改为现代
        【解决方案6】:

        AndroidStudio区域
        创建区域

        首先,为Surround With 菜单查找(并在需要时定义快捷方式)

        然后,选择代码,按Ctrl+Alt+Semicolon -> 选择region..endregion...

        前往地区

        首先,找到Custom Folding快捷方式
        其次,在代码中的任何位置,按Ctrl+Alt+Period('>' on keyboard)

        【讨论】:

          【解决方案7】:

          我从 C# 转到 java 并且遇到了同样的问题,区域的最佳和准确替代方案如下所示(在 Android Studio 中工作,不了解 intelliJ):

           //region [Description]
           int a;
           int b;
           int c;
          //endregion
          

          快捷方式如下:

          1-选择代码

          2- 按ctrl + alt + t

          3- 按c 并写下您的描述

          【讨论】:

          • 在 AndroidStudio 2.3.1 版中,它会折叠。我不知道它什么时候开始折叠的。
          • 谢谢。在 Android Studio 3.0 beta 2 中完美运行。出于好奇,我在 Eclipse Oxygen 中尝试过,默认情况下它不起作用,但没有进一步搜索。
          【解决方案8】:

          在 Mac 和 Android Studio 上遵循以下顺序:

          1. 突出显示要折叠的源代码
          2. Alt+Command+t
          3. 选择<editor-fold>

          您也可以选择其他选项:

          【讨论】:

            【解决方案9】:

            Android Studio(或IntelliJ IDEA)中最快的方式

            1. highlight the code你要包围它
            2. ctrl + alt + t
            3. c ==>然后输入描述
            4. 享受

            【讨论】:

            • // region 你的代码... // endregion 更高效更简单!呵呵;P
            【解决方案10】:

            我通常需要这个注释代码,所以我在开始和结束时使用大括号。

            {
            // Code
            // Code
            // Code
            // Code
            }
            

            它可以用于代码 sn-ps,但可能会在某些代码中产生问题,因为它会更改变量的范围。

            【讨论】:

              【解决方案11】:

              最好的方法

              //region DESCRIPTION_REGION
              int x = 22;
              // Comments
              String s = "SomeString";
              //endregion;
              

              提示:输入“;”在“endregion”的末尾

              【讨论】:

              • eclipse不折叠代码,你用的是什么IDE?
              • 它适用于 Android Studio 和 IntelliJ IDEA(两者均由 JetBrains 使用相同的代码库制作)
              【解决方案12】:

              没有这样的标准等价物。一些 IDE - 例如 Intellij 或 Eclipse - 可以根据所涉及的代码类型(构造函数、导入等)折叠,但没有什么比 #region 更相似了。

              【讨论】:

              • 其实这个是可以实现的。如果您向下滚动这篇文章,“Yaqub Ahmad”将解释如何获得此功能。这里还有一个链接 (kosiara87.blogspot.com/2011/12/…),它向您展示了如何将它添加到您现有的 eclipse 环境中......非常有用!
              • 当然。但是没有什么标准。它在 IDE 中执行,而不是使用语言(或文本)构造
              • @lKashef - 那么 standard 等价物是什么?下面提到的所有内容都与特定的 IDE 相关,不是吗?
              • @BrianAgnew,OP 没有提及任何有关标准的内容,而是希望能够在他的代码中包含类似区域的块。例如,您说“但没有什么比#region 更相似了”。例如在 IDEA 中 //region .. //endregion 的工作方式与 #region 完全一样。首先根本没有标准的方法来做到这一点,因为它取决于 IDE 本身或插件。具有微软背景的开发人员总是将 MS Visual Studio 视为“最佳”IDE,但实际上它只是其中一个选项,另一个 IDE 可能会也可能不会实现此类功能。
              • @BrianAgnew,我几乎放弃了,直到我看到其他人的回答比你的回答更有帮助。在这里真的没有难过的感觉,我们都在这里学习和分享我们的知识,并说明我被你的回答误导了这一事实,也许它在 2010 年是一个很好的答案,但不是今天。我希望你明白我的意思。
              【解决方案13】:

              只需安装并启用 Coffee-Bytes 插件 (Eclipse)

              【讨论】:

              • an earlier answer 中不仅提到了这一点,而且您甚至没有提供任何有用的信息。
              【解决方案14】:

              使用 Android Studio,试试这个:

              //region VARIABLES
              private String _sMyVar1;
              private String _sMyVar2;
              //endregion
              

              小心://region ...之后没有空行

              你会得到:

              【讨论】:

              • 正在查看所有答案并认为由于 Android Studio 基于 IntelliJ,因此必须支持这一点。指出这一点是件好事!
              • bummi,我确实在 0.4.2 中用空行尝试过,但仍然有效
              • 只是一个评论/建议(绝不是您问题的答案)。应该避免使用区域是一个普遍的观点,因为它们让你隐藏类的复杂性而不是处理你的编码风格。而不是每个类负责许多功能的大型类,而是将代码分解为更小的类。随着时间的推移,它将使您的代码更易于管理。在这里阅读更多:blog.codinghorror.com/the-problem-with-code-folding
              • @DanielSaidi 哦,太恐怖了! :) 文章“我什么都看不到!我必须手动展开这些部分以浏览此类中的任何代码。”中的那个人......所以因为他懒得按一个键(将扩展文件中的所有部分),不能使用该功能 - 这是一个非常棒的功能。现在我正在使用它一个一个地隐藏我已经验证的方法在我正在工作的类中是线程安全的,它确实有助于保持井井有条。当然有时我想知道那是什么我以为在那里,但这是一个很小的代价......
              • @DanielSaidi 这不是隐藏复杂性,而是隐藏普通代码,例如变量声明、getter、初始化代码等。另请注意,您不需要#regions 来折叠函数和类中的“复杂代码”。程序员错误地使用工具并不等于“工具不好”。
              【解决方案15】:

              有一些选项可以达到相同的效果,请遵循以下几点。

              1) 打开宏浏览器:

              2) 创建新宏:

              3) 将其命名为“OutlineRegions”(或任何您想要的名称)

              4) 右键单击​​“OutlineRegions”(在宏资源管理器上显示)选择“编辑”选项并将以下 VB 代码粘贴到其中:

                  Imports System
              Imports EnvDTE
              Imports EnvDTE80
              Imports EnvDTE90
              Imports EnvDTE90a
              Imports EnvDTE100
              Imports System.Diagnostics
              Imports System.Collections
              
              Public Module OutlineRegions
              
                  Sub OutlineRegions()
                      Dim selection As EnvDTE.TextSelection = DTE.ActiveDocument.Selection
              
                      Const REGION_START As String = "//#region"
                      Const REGION_END As String = "//#endregion"
              
                      selection.SelectAll()
                      Dim text As String = selection.Text
                      selection.StartOfDocument(True)
              
                      Dim startIndex As Integer
                      Dim endIndex As Integer
                      Dim lastIndex As Integer = 0
                      Dim startRegions As Stack = New Stack()
              
                      Do
                          startIndex = text.IndexOf(REGION_START, lastIndex)
                          endIndex = text.IndexOf(REGION_END, lastIndex)
              
                          If startIndex = -1 AndAlso endIndex = -1 Then
                              Exit Do
                          End If
              
                          If startIndex <> -1 AndAlso startIndex < endIndex Then
                              startRegions.Push(startIndex)
                              lastIndex = startIndex + 1
                          Else
                              ' Outline region ...
                              selection.MoveToLineAndOffset(CalcLineNumber(text, CInt(startRegions.Pop())), 1)
                              selection.MoveToLineAndOffset(CalcLineNumber(text, endIndex) + 1, 1, True)
                              selection.OutlineSection()
              
                              lastIndex = endIndex + 1
                          End If
                      Loop
              
                      selection.StartOfDocument()
                  End Sub
              
                  Private Function CalcLineNumber(ByVal text As String, ByVal index As Integer)
                      Dim lineNumber As Integer = 1
                      Dim i As Integer = 0
              
                      While i < index
                          If text.Chars(i) = vbCr Then
                              lineNumber += 1
                              i += 1
                          End If
              
                          i += 1
                      End While
              
                      Return lineNumber
                  End Function
              End Module
              

              5) 保存宏并关闭编辑器。

              6) 现在让我们为宏分配快捷方式。转到工具->选项->环境->键盘并在“显示包含的命令”文本框中搜索您的宏(在文本框中键入:宏,它会建议宏名称,选择您的。)

              7) 现在在“按下快捷键”下的文本框中,您可以输入所需的快捷键。我使用 Ctrl+M+N。

              用途:

              return
              {
              //Properties
              //#region
              Name:null,
              Address:null
              //#endregion
              }
              

              8) 按保存的快捷键

              查看以下结果:

              【讨论】:

              • 宏浏览器在哪里?我正在使用 Eclipse 4.3.1 并找不到它。
              • 这甚至不是Java?
              • @CJBS - re: This code seems to be for Visual Basic.NET 这表明 IDE 是 Visual Studio
              • @JesseChisholm - 这就是我的观点。 OP 想要 Java,而不是 VB,目标是 Eclipse IDE,而不是 VS。
              • RIP 回答。如果他使用的是visual studio,他可能只使用#region#endregion
              【解决方案16】:

              Jet Brains IDEA 具有此功能。您可以为此使用热键环绕(ctrl + alt + T)。这只是 IDEA 的功能。

              那里的区域如下所示:

              //region Description
              
              Some code
              
              //endregion
              

              【讨论】:

              • 谢谢!在 Android Studio 上完美运行。
              • 这个问题明确要求 Eclipse 的解决方案。
              • @Duncan 1. 向人们展示有其他选择并没有错。 2. google了一下Intellij下的地区,找到了。
              • 在 Linux 上,该热键运行终端
              • 刚试了一下,好像 IntelliJ 也支持嵌套区域!太糟糕了,这不是标准的。
              【解决方案17】:

              在 Eclipse 中,您可以折叠包裹变量区域块的括号。最接近的是做这样的事情:

              public class counter_class 
              { 
              
                  { // Region
              
                      int variable = 0;
              
                  }
              }
              

              【讨论】:

              • 这没用。它在方法中不起作用,而且它会破坏代码! (私有变量会抱怨他们想成为最终变量。没有范围定义的变量在内括号之外将无法访问!)
              • 我不喜欢这种方法,加了太多花括号。这可能会导致混乱的代码:(
              【解决方案18】:

              【讨论】:

              【解决方案19】:

              实际上,johann,# 表示它是一个预处理器指令,这基本上意味着它告诉 IDE 要做什么。

              在您的代码中使用#region#endregion 的情况下,无论最终代码是否存在,它都没有区别。如果使用它没有任何改变,你真的可以称它为语言元素吗?

              除此之外,java 没有预处理器指令,这意味着代码折叠的选项是基于每个 ide 定义的,例如在 netbeans 中使用 // 语句

              【讨论】:

              • 如果使用它没有任何改变,你真的可以称它为语言元素吗? - cmets 怎么样?!
              • 我之前听说过它不是语言的函数。而这个问题“如果使用它没有任何改变,你真的可以称它为语言元素吗?”很荒谬。大量时间重构使代码更易于人类阅读,并且没有(希望)影响代码的功能。
              【解决方案20】:

              与大多数人发布的相反,这不是 IDE 的事情。这是语言的事情。 #region 是一个 C# 语句。

              【讨论】:

              • 大多数人发布的是在 JAVA 中这是一个 IDE 功能。
              • 我确实看到 2 个最受欢迎的答案说没有这样的语言功能。 -1.
              • 在 C# 中,它部分是 IDE,部分是语言。该语言支持预处理器指令,但预处理器只是忽略它们(与处理器忽略 cmets 的方式相同)。 IDE (Visual Studio) 使用它们来进行代码折叠。
              • Java 没有指定代码折叠,只有 IDE (Netbeans) 有,Netbeans 有更多特殊的 cmets,如“TODO”等等。它们对于跟踪您在软件项目开发过程中的进度非常有用
              【解决方案21】:

              如果有人有兴趣,在 Eclipse 中,您可以一次性折叠所有方法等,只需在通常插入断点时单击鼠标右键,单击“折叠”>“全部折叠”。它知道这不是问题的答案,而只是提供快速代码折叠的替代方案。

              【讨论】:

              • 您还可以让 Eclipse 在打开源代码文件时自动折叠所有内容。 Preferences > Java > Editor > Folding > “Initially fold these elements”(勾选列表中的所有元素)。我发现只关注我需要的内容很方便,尤其是在较长的源代码文件中。
              • @ADTC - 谢谢 - 每次打开文件时我都要手动完成数百次 - 再也不会了!
              • @ToolmakerSteve 如果您可以在计算机上手动执行任何重复的操作,那么只有 必须 有一种方法可以将其自动化。 =D
              【解决方案22】:

              在该语言中没有等效项...基于 IDE...

              例如在 netbeans 中:

              NetBeans/Creator 支持这种语法:

              // <editor-fold defaultstate="collapsed" desc="Your Fold Comment">
              ...
              // </editor-fold>
              

              http://forums.java.net/jive/thread.jspa?threadID=1311

              【讨论】:

              • 尽管它不是特定于语言的折叠,但在 NetBeans 中仍然对我有所帮助。正是我想要达到的目标。只是希望我的代码对我来说更方便和更有条理。
              • 有什么快捷方式可以自动填充这一行吗?
              • @pini-cheyni - ui.netbeans.org/docs/ui/code_folding/cf_uispec.html 有可折叠的快捷方式....
              • @JadChahine:OP 询问了 Eclipse,但同意这适用于 NetBeans。语法有点笨拙,但复制粘贴很容易。
              【解决方案23】:

              这更像是 IDE 功能而不是语言功能。 Netbeans 允许您使用以下定义define your own folding definitions

              // <editor-fold defaultstate="collapsed" desc="user-description">
                ...any code...
              // </editor-fold>
              

              如文章中所述,其他编辑也可能支持这一点,但不能保证。

              【讨论】:

              • 至少在 Android Studio 中,你不能折叠块的一部分。如果折叠规范从一个块之外开始,并在一个块内结束,它将不会激活。
              【解决方案24】:
              #region
              
              // code
              
              #endregion
              

              真的只会让您在 IDE 中获得任何好处。对于 Java,IDE 中没有固定的标准,因此确实没有与#region 平行的标准

              【讨论】:

              • 如果region 有一个标准,那么我们可以确定java IDE 的 支持它不是吗?
              • @Pacerier 如果他们支持该标准,是的。我认为#region 与其说是标准,不如说是 IDE 功能。理论上,Java IDE 可以实现这种行为并使其成为事实上的标准
              猜你喜欢
              • 2014-09-29
              • 1970-01-01
              • 2011-06-29
              • 2010-09-24
              • 2023-04-06
              • 2014-12-11
              • 1970-01-01
              • 1970-01-01
              • 2012-06-02
              相关资源
              最近更新 更多