エディターの指示
MPS でコーディングしている場合、テキストエディターでの通常のコードの入力方法と MPS でのコードの編集方法にはいくつかの違いがあることに気づくでしょう。MPS では、射影エディターでコードを入力するときに AST を直接操作します。エディターはテキストを編集しているような錯覚を与えますが、それには限界があります。そのため、キャレットを配置できる場所と、その位置に入力できる内容が若干制限されます。信じているように、射影エディターは多くの分野で大きなメリットをもたらします。多少の慣れが必要ですが、いくつかのコツを学べば、生産性とコードの品質において、プレーンテキストエディターの同僚に大きく後れを取ることができます。一般に、入力できるのは、完了メニューによって提案された項目のみです。MPS は、特定の位置でどの要素を許可し、どの要素を禁止するかを常に決定できます。入力したコードが赤色になると、コースから外れていることがわかります。
コード補完
コード補完 Ctrl+Space は、入力したステートメントをすばやく完了することを可能にする良い友達になります。これは、新しいものを入力するデフォルトの方法です。
現在のテキストセルに配置され、先に入力することでさらにフィルタリングできます。キャメルハンプがサポートされているため、長い名前の大文字を入力するだけで、MPS が残りを推測することに注意してください。
補完メニューには、グループ別に分類された 1 から数百までのアイテムが含まれています。そのための階層メニューを定義すると、それらの葉がメニュータイトルと同様に一覧表示されるようにフラットになります。
Ctrl+Space で開きます。フィルタリングするタイプ。矢印キーで項目を選択するか、クリックします。Tab、Enter で終了するか、ダブルクリックします。Escape で中止するか、メニューの外側をクリックするか、別のアプリケーション(Alt など)に変更します。フィルタリングを減らすには、左矢印を押します。最初に移動してすべてのフィルタリングを削除するには、Ctrl+Space をもう一度押します。
インテンション
多くの場合、インテンションと呼ばれる事前定義された半自動化されたプロシージャを使用して、コードを拡張または変更できます。Alt+Enter を押すと、MPS は、現在の位置のコードに適用可能なオプションを含むポップアップダイアログを表示します。一部のインテンションは、選択したコード領域にのみ適用できます。たとえば、try-catch ブロック内でコードをラップします。これらは SurroundWith インテンションと呼ばれ、目的のコードブロックを選択したら、Ctrl+Alt+T を押して、該当するインテンションのリストを表示します。
ナビゲーション
表示している要素の定義を確認する必要がある場合は、Ctrl+B または Ctrl + マウスクリックを押して、エディターで要素定義を開きます。画面上の編集可能な位置をすばやく移動するには、Shift+Tab を使用します。Enter は通常、現在の位置の直後に新しい要素を挿入し、すぐに編集できるようにします。Insert キーは、現在の位置の直前の位置に対しても同じことを行います。
コードに赤または黄色の下線が付いており、それぞれエラーまたは警告を示している場合、エラーの上にマウスを置くか Ctrl+F1 を押すと、エラーメッセージを含むポップアップを表示できます。
選択範囲
Control/Cmd + Up/Down キーの組み合わせにより、ブロックの選択を増減できます。これにより、AST の有効なサブツリーを常に選択できます。テキストのような選択の通常の Shift + 矢印キー方法も可能です。
調査
要素のタイプをすばやく見つけるには、Alt/Control + X を押して、選択した要素をノードエクスプローラーで開き、AST の適切な部分を調査できるようにします。Alt+F7 を使用すると、選択した要素の使用箇所を検索できます。要素の継承階層をすばやく視覚化するには、Ctrl+H を使用します。
インスペクタウィンドウ
Alt+2 を押すと、インスペクターウィンドウが開きます。一部のコードとプロパティ(エディタースタイル、マクロなど)は、インスペクターウィンドウ内に表示および編集されるため、ウィンドウを準備しておくことをお勧めします。
BaseLanguage の後置変換
ポストフィックスコード変換を使用すると、入力したコードのすぐ後に定義済みのキーワードを入力して、コードを簡単に変更できます。例: 式に適用された "if" ポストフィックスは、if ステートメントで式を囲みます。BaseLanguage は、いくつかのポストフィックスコード変換を提供します。
if - ブール式を IfStatement でラップすると、式がその条件になります。
while - ブール式を WhileStatement でラップすると、式がその条件になります。
キャスト - CastExpression で式をラップします。
paren - 式を括弧で囲みます。
var - 式を、その式で初期化された変数宣言に変換します。
return - ReturnStatement で式をラップします。
not - ブール式を NotExpression でラップします。
for - コレクション型の式を、式によって提供される値を反復処理する ForeachStatement でラップします。
最も便利なキーショートカット
ショートカット | アクション |
---|---|
Ctrl+Space | コード補完 |
Ctrl+B | 定義へジャンプ |
Alt+Enter | インテンション |
Tab | 次のセルに移動 |
Shift+Tab | 前のセルに移動 |
Ctrl+Up Ctrl+Down | コード選択を拡大 / 縮小する |
Shift + 矢印キー | 領域を選択 |
Ctrl+F9 | プロジェクトをコンパイル |
Shift+F10 | 現在の設定を実行する |
Alt+Shift+F10 | キャレットに式のタイプを表示する |
Ctrl+Alt+X, P | Node Explorer でキャレットの式を開き、適切なノードとその AST 環境をインスペクションします |
Ctrl+H | 構造を表示する (継承階層) |
Alt+Insert | 一般的なコンテキスト新規コマンド - 通常、指定された場所で作成できる要素を含むメニューをポップアップ表示します |
Ctrl+Alt+T | 囲む ... |
Ctrl+O | メソッドの上書き |
Ctrl+I | メソッドの実装 |
Ctrl+/ | 現在のノードをコメント / コメント解除 |
Ctrl+Shift+/ | ブロックコメントのコメント化 / コメント解除 (BaseLanguage でのみ利用可能) |
Ctrl+X | 現在の行または選択したブロックをバッファにカット |
Ctrl+C | 現在の行または選択したブロックをバッファにコピーする |
Ctrl+Alt+Shift+V | バッファから貼り付ける |
Ctrl+Shift+V | 履歴から貼り付け (以前にコピーされたすべてのコードブロックをリストするポップアップダイアログを表示します) |
Ctrl+Z | 元に戻す |
Ctrl+Shift+Z | やり直す |
Ctrl+D | 現在の行または選択したブロックを複製 |
完全なリスト
MPS キーボードショートカットの詳細については、デフォルトのキーマップ参照ページを参照してください。MPS ヘルプメニューからも利用できます。
関連ページ:

デフォルトのキーマップ参照
編集のコア:コード補完状況に応じたインテンションアクションを表示元に戻すやり直しタブ次のセルに移動 Shift + Tab 前のセルに移動一般的な編集:囲む ... 現在の行または選択したブロックをバッファにカット現在の行または選択したブロックをバッファにコピーするバッファから貼り付ける現在の行または選択したブロックを複製 Shift + F5 ルートのクローンブロック選択領域を拡大

IDE の設定
設定ダイアログを介して、MPS の多くの側面を構成できます。特定の設定項目にすばやく移動するには、左上隅にある便利なテキスト検索フィールドを使用できます。デフォルトではテキストフィールドにフォーカスが設定されているため、入力を開始するだけです。検索は個々の画面の奥深くまで行われることに注意してください。プラグイン:MPS はモジュール式で、いくつかのプラグインがバンドルされています。MPS プラグインマネージャーを開くと、インストールで使用可能なプラグインのリストが表示されます。サポートされ...

解決方法を見つける
このドキュメントは MPS に関する問題を解決するために何をすべきか、どこを見ればよいかについてステップバイステップのアドバイスを提供するべきです。それは私たち自身の経験を取り入れたパターンと使い方の体系的な集まりです。リフレクションエディター:射影エディターはその性質上、制御された方法でモデルをユーザーに提示します。言語設計者の意図に応じて、言語はユーザからいくつかの情報またはいくつかのノードを隠し、コードを操作するためのいくつかの方法を禁止することがあります。また、ある意味でエディターの定...