3

可能重复:
如何在 MATLAB 中检索选定的文本?

我想实现并向“评估选择”功能添加一些功能,您可以在其中突出显示代码,然后通过右键单击鼠标(或 F9)“评估选择”。

在编辑器环境中,它是这样完成的:

editorObject = matlab.desktop.editor.getActive;
eval([editorObject.SelectedText ';']);

如何从命令行窗口或帮助窗口实现此功能?

编辑

也许我没有清楚地表达我的问题。

假设我们已经有了这个名为eva_select()的函数,我可以这样使用函数:

  1. 我将该功能包装为快捷方式按钮。
  2. 使用鼠标在命令行窗口中选择一个变量,也许我之前输入过,比如var_a
  3. 然后我点击那个快捷方式按钮,我之前选择的文本将被执行。这与按F9键或选择鼠标右键菜单——“评估选择”完全相同。

如果我们真的有这个功能,我们可以做得更多!我们可以将eva_select () 修改为 eva_select_size (),这样我们就可以在命令行窗口或者帮助窗口中选择一个变量,比如说var_a ,点击 eva_select_size() 快捷键,然后在命令中得到size(var_a)线窗口!

编辑

谢谢,我可以在命令窗口中检索文本,但我不能在帮助窗口中做同样的事情,可以这样做吗?

4

2 回答 2

3

命令窗口与 MATLAB 桌面中的其他 GUI 组件一样,都是基于 Java 的。因此它可以通过编程方式访问,但它完全没有文档记录,并且它的使用不受官方支持。

环顾四周,这是一个似乎在 R2012a 和 R2012b 中都适用的解决方案。它涉及获取JTextArea命令窗口底层的句柄,该句柄用于获取所选文本(以评估所选变量名称的大小)

使用以下代码创建快捷方式:

x = com.mathworks.mde.cmdwin.XCmdWndView.getInstance();
s = char(x.getSelectedText());
if isvarname(s) && exist(s,'var')
    eval( sprintf('size(%s)',s) );
end

接下来在命令窗口中突出显示一个变量名并执行快捷方式。尺寸将立即打印,如下面的屏幕截图所示:

截屏

于 2012-11-07T16:08:57.257 回答
0

它不是很好,因为它是一个外部解决方案,但这就是它的工作方式:

假设您在命令窗口中并希望通过选择它来评估 size(var_a),您可以使用键盘宏来执行此操作。定义 var_a 的相应函数

f(x) = eval('size(' x ')' 

%这可以在宏中完成,但最好在这里进行以便于编辑。

然后确保您的宏执行此操作:

Copy 'var_a'
Turn it into 'f(var_a)'
Paste the result
Hit enter

就像我说的,它不漂亮,但它应该可以解决问题。

于 2012-11-07T10:14:41.810 回答