【问题标题】:How to force Eclipse wrap that line? [duplicate]如何强制 Eclipse 换行? [复制]
【发布时间】:2012-03-12 10:41:03
【问题描述】:

有没有办法让 Eclipse 将带有 b 的行包装成每行 120 的长度? 我无法配置代码格式化程序来换行。这真的让我发疯了......

public class Position {
    public static void i() {
        error("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");

    }

    private static void error(String string) {
        // TODO Auto-generated method stub

    }
}

【问题讨论】:

    标签: java eclipse coding-style formatter


    【解决方案1】:

    我测试了user714695的建议:在字符串中间按回车,加号、引号和缩进会自动正确放置。

    这篇帖子Eclipse Shortcut to Split Long Strings 有更多关于这个问题的讨论。

    另一方面,据我所知,没有内置的方法可以做到这一点:您想突出显示一个字符串并自动格式化它以适当地放置换行符和 +。

    我最近想解决一个类似的问题,目标是在行中的字符数 >= 78 个字符时突出显示一个段落并换行(类似于 Vim 中的“gq”功能)。由于我无法立即找到在线执行此操作的方法,因此我决定看看编写插件是多么容易。结果比我想象的要容易得多,所以如果您对此感兴趣,我想我会发布一些基本说明。

    1. 新建一个插件项目
    2. 选择 Hello World,命令一开始
    3. 将必要的 Eclipse 库添加到插件依赖项中。右键单击项目,转到 PDE 工具,然后“打开清单”有一个依赖项选项卡。这是项目概述页面(如果尚未为您打开)。我添加了 org.eclipse.jface.text 和 org.eclipse.ui.workbench.texteditor。
    4. 编辑 SampleHandler.java 文件以处理突出显示的文本并在文档中替换它。
    5. 如果您单击可从项目概览按钮访问的“播放”按钮,则会启动一个新的 Eclipse 实例,以便您对其进行测试和交互。
    6. 编辑“plugins.xml”(也可从项目概览页面访问)
    7. 一旦您对插件感到满意,请按照项目概览页面中的导出说明进行操作。如果您选择“目录”选项,则会在其中放置一个 jar。将此 jar 添加到您的 workspace/.metadata/.plugins/ 目录或 Eclipse 查找插件的任何其他路径。

    下面是一些非常基本的示例代码,它们在 Scala 中进行自动换行,这是我用来编写 SampleHandler 的语言。肉在“执行”功能中:

    def execute(event: ExecutionEvent ): Object = {
      val window = HandlerUtil.getActiveWorkbenchWindowChecked(event)
      val editorPart = window.getActivePage().getActiveEditor()
      var offset = 0
      var length = 0
      var selectedText = ""
    
      val iSelection = editorPart.getEditorSite().getSelectionProvider().getSelection()
      val selection = iSelection.asInstanceOf[ITextSelection]
      offset = selection.getOffset()
    
      if (!iSelection.isEmpty()) {
        selectedText = selection.getText()
      }
    
      length = selection.getLength()
    
      val editor = editorPart.asInstanceOf[ITextEditor]
      val dp = editor.getDocumentProvider()
      val doc = dp.getDocument(editor.getEditorInput())
      val words = selectedText.split("""\s+""")
      var wrapped = ""
      var linesize = 0
    
      words.foreach{ w => 
    
        if(linesize+w.size >= 78) { 
          wrapped += "\n" 
          linesize = 0  
        }
    
        wrapped += w + " "
        linesize += w.size + 1
      }
    
      doc.replace(offset,length,wrapped)
    
      return null;
    }
    

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      不,eclipse 不会拆分字符串。如果将光标放在字符串中的某个位置并按 Enter 键,可能确实需要。

      【讨论】:

        【解决方案3】:

        似乎格式化程序或清理程序无法解决此问题,但是在插入字符串时可以使用“自动换行”字符串的首选项...只需在顶部键入一个关键字,例如“字符串”的首选项窗口。

        【讨论】:

          【解决方案4】:

          您可以使用带有正则表达式的搜索/替换 (Ctrl + f) 来做您想做的事情。应该有某种方法可以捕获字符串的前 N ​​个字符,并将字符串的其余部分捕获到单独的捕获组中,然后在“替换”字段中的这些组之间插入 "+"。不过我不是正则表达式大师,所以很遗憾我无法提供神奇的公式......

          一旦你有字符串常量拆分,你可以使用代码格式(Ctrl + Shift + F)来修复换行符。

          【讨论】:

            猜你喜欢
            • 2016-08-03
            • 1970-01-01
            • 1970-01-01
            • 2011-05-20
            • 1970-01-01
            • 2013-05-27
            • 2017-08-07
            • 2013-07-17
            相关资源
            最近更新 更多