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 に答える