2010-04-08 95 views
1

我已经开始使用Eclipse代码模板,并且非常喜欢他们!但对于现有的代码,它们有点难以使用。这是最简单的一个例子。Eclipse代码模板:插入剪贴板?

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

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

回答

2

一般要学习如何做这类事情是看现有的模板的最佳方式。特别是因为变量的名称可能会改变。在模板中使用$ {line_selection}或$ {word_selection}。自从你问这个问题已经有一段时间了,现在有一个预先建好的try catch块,只需点击你想要打包的代码,打到Ctrl-space,并输入try,然后点击enter。当你输入你的代码时会被删除,但是当你输入时它会回到模板中。

$ {clipboard}变量还有其他用处,但是它是2011年的版本,我认为它还不存在。

+0

查看Eclipse错误:https://bugs.eclipse.org/bugs/show_bug.cgi?id = 198886 – Jmini 2012-04-04 11:59:16

0

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

要使用,请选择将作为try-block主体的代码。点击ctrl-进入。选择模板。

模板代码看起来是这样的:

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

这听起来不错,但我无法让它工作。当创建一个模板时,我会看到'$ {line_selection}'或'$ {word_selection}'的变量选项。但是,CTRL + Enter会删除当前选中的文本。这是我遇到的最大麻烦,我无法让模板选择器在我选中文本时显示。 – bejonbee 2011-03-30 20:38:38

+0

与此处的某些内容相同的问题。使用Eclipse PDT ...也许PDT打破它? – 2011-10-18 10:27:23

0

我在问我同样的事情。

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

$ {line_selection}和$ {word_selection}是很好的可能性。

其他可能性:

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

这里我最喜欢的:结合使用$ {默认值}或只是$ {}与$ {word_selection}

这里我的模板:

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

结果这个模板:

Result of the template

我只是^ h从剪贴板粘贴另一个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} $ {}来达到同样的效果。