エディターの指示
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 に関する問題を解決するために何をすべきか、どこを探せばよいかを、段階的に分かりやすく解説したものです。これは、私たちの経験に基づいたパターンと使い方を体系的にまとめたものです。リフレクションエディター:射影エディターは、その性質上、モデルを制御された方法でユーザーに提示します。言語設計者の意図によっては、言語は一部の情報やノードをユーザーから隠蔽したり、コード操作の一部を禁止したりする場合があります。また、エディターの定義が何らかの点で破損していたり不完全だったりす...