【问题标题】:Eclipse Code Templates: insert clipboard?Eclipse 代码模板:插入剪贴板?
【发布时间】:2012-04-05 05:46:32
【问题描述】:

我已经开始使用 Eclipse 代码模板并且很喜欢它们!但是对于现有代码,它们有点难以使用。这是最简单的例子。

我有一段预先存在的代码,我想将它包装在一个 try-catch 块中。目前我从模板创建 try-catch 块,然后将我想要的代码剪切粘贴到 try 块中。

我想要的是一种剪切代码并将其自动插入到 try 模板中的方法,即在模板代码中使用类似 {clipboard} 标记的东西。有没有办法在 Eclipse 中实现这一点?

【问题讨论】:

    标签: eclipse templates automation autocomplete code-snippets


    【解决方案1】:

    一般来说,学习如何做这些类型的事情的最好方法是查看现有的模板。特别是因为变量的名称可能会改变。在模板中使用 ${line_selection} 或 ${word_selection}。你问这个问题已经有一段时间了,现在有一个预先构建的 try catch 块,只需突出显示要包装的代码,点击Ctrl-space,然后输入try,然后点击enter。当您键入时,您的代码会被删除,但是当您按 Enter 时,它会返回到模板中。

    ${clipboard} 变量还有其他很好的用途,但现在是 2011 年,我认为还没有。

    【讨论】:

      【解决方案2】:

      您可以使用“选择”类型的变量。创建模板代码,然后转到“变量”选项卡并更改变量的类型。

      要使用,请选择将成为 try 块主体的代码。点击 ctrl-enter。选择模板。

      模板代码如下所示:

      try
        $sel$
      catch (exception e) {
        // TODO blah
      }
      

      【讨论】:

      • 这听起来不错,但我无法让它工作。创建模板时,我看到${line_selection}${word_selection} 的变量选项。但是,CTRL+Enter 会删除当前选定的文本。那是我最麻烦的地方,当我选择文本时,我无法显示模板选择器。
      • 这里的问题与 somethingkindawierd 相同。使用 Eclipse PDT……也许 PDT 会破坏它?
      【解决方案3】:

      我也在问同样的问题。

      ${clipboad} 变量的请求在Eclipse Bug 198886 中打开。

      ${line_selection} 和 ${word_selection} 是很好的选择。

      其他可能性:

      您也可以使用 ${cursor} 将光标放置在您想要的位置。之后,您只需粘贴剪贴板内容 (CTRL-V)

      这是我最喜欢的:使用 ${Default Value} 或仅将 ${} 与 ${word_selection} 结合使用

      这是我的模板:

      ${:import(myapp.shared.core.security.DefaultPermission, myapp.shared.core.security.DefaultPermission.PermissionRight)}setVisiblePermission(new DefaultPermission(${70L}, PermissionRight.READ));
      

      此模板的结果:

      我只需从剪贴板粘贴另一个 Long 值来替换 70L(在我的情况下这是一个很好的默认值)。

      来自 Eclipse 的其他示例(按钮 SWT 语句):

      ${buttonType:newType(org.eclipse.swt.widgets.Button)} ${button:newName(org.eclipse.swt.widgets.Button)}= new ${buttonType}(${parent:var(org.eclipse.swt.widgets.Composite)}, ${style:link(SWT.PUSH, SWT.TOGGLE, SWT.RADIO, SWT.CHECK, SWT.FLAT)});
      ${button}.setLayoutData(new ${type:newType(org.eclipse.swt.layout.GridData)}(SWT.${horizontal:link(BEGINNING, CENTER, END, FILL)}, SWT.${vertical:link(CENTER, TOP, BOTTOM, FILL)}, ${hex:link(false, true)}, ${vex:link(false, true)}));
      ${button}.setText(${word_selection}${});
      ${imp:import(org.eclipse.swt.SWT)}${cursor}
      

      他们使用 ${word_selection}${} 来达到相同的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-02
        • 2020-11-22
        • 1970-01-01
        • 1970-01-01
        • 2021-02-12
        • 1970-01-01
        • 1970-01-01
        • 2011-11-02
        相关资源
        最近更新 更多