Visual Studio Codeは、デバッグおよびタスク構成ファイルといくつかの選択設定での変数置換をサポートしています。$ {variableName}構文を使用して、launch.jsonファイルとtasks.jsonファイルのキーと値の文字列で変数の置換を実行します。
プリセット変数
サポートされている変数は次のとおりです。
- $ {workspaceFolder} -VS Codeで開かれたフォルダーの最上位パス(ルートフォルダー)
- $ {workspaceFolderBasename} -「/」を除くVSCodeで開かれたフォルダーの名前
- $ {file} -現在開いているファイルの名前(絶対パス+メイン名+拡張子)
- $ {relativeFile}-相対 ファイル名(フォルダー名+ "/" +完全なファイル名)
- $ {relativeFileDirname}- 現在のファイルのフォルダー名(名前のみ、パスなし)
- $ {fileBasename}- 現在のファイルのフルネーム(メイン名+拡張子)
- $ {fileBasenameNoExtension}- 現在のファイルのメイン名(拡張子なし)
- $ {fileDirname}- ファイル名と末尾のパス区切り文字を除くファイルの絶対パス
- $ {fileExtname}- 現在開いているファイルの拡張子
- $ {cwd} -起動時のタスクランナーの現在の作業ディレクトリ
- $ {lineNumber}- カーソル位置にあるコードの行番号
- $ {selectedText}- 現在編集中のファイルで選択されたコンテンツ
- $ {execPath} -Code.exeへのパス
- $ {defaultBuildTask}- デフォルトのビルドタスクの名前
プリセット変数の例
次の状況を想定します。
你在编辑器中打开了文件,文件路径为:/home/your-username/your-project/folder/file.ext;
- 次のようにワークスペースフォルダをルートファイルします
/home/your-username/your-project
。
次に、各プリセット変数の値は次のようになります。
- $ {workspaceFolder} -
/home/your-username/your-project
- $ {workspaceFolderBasename} -
your-project
- $ {ファイル} -
/home/your-username/your-project/folder/file.ext
- $ {relativeFile} -
folder/file.ext
- $ {relativeFileDirname} -
folder
- $ {fileBasename} -
file.ext
- $ {fileBasenameNoExtension} -
file
- $ {fileDirname} -
/home/your-username/your-project/folder
- $ {fileExtname} -
.ext
- $ {lineNumber} -カーソルの行番号
- $ {selectedText} -コードエディタで選択されたテキスト
- $ {execPath} -Code.exeの場所
提示:将鼠标放到tasks.json和launch.json的字符串上时,使用IntelliSense可以获得预定义变量的提示信息。
各ワークスペースフォルダーの可変スコープ
環境変数
次のような$ {env:Name}構文を使用して、オペレーティングシステムの環境変数を参照することもできます。
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/app.js",
"cwd": "${workspaceFolder}",
"args": ["${env:USERNAME}"]
}
構成ファイル変数を導入する
$ {config:Name} 構文を使用して、構成ファイルに変数を導入でき ます。次に例を示します。${config:editor.fontSize}。
コマンド変数
上記のプリセット変数がニーズを満たせない場合は、変数、構文:$ {command:commandID}などのVSCodeコマンドを使用することもできます 。
コマンド変数が挿入されると、コマンドが実行され、変数はコマンドの結果(タイプは文字列)に置き換えられます。コマンドは、UIを使用しない単純な計算でも、VSコードに基づく拡張APIによって提供されるUI機能を備えた複雑な関数でもかまいません。
この機能の例は、extension.pickNodeProcess
実行中のすべてのNode.jsプロセスのリストから単一のプロセスを選択するための対話型コマンドを提供するVSCodeのNode.jsデバッガー拡張機能にあります 。このコマンドは、選択したプロセスのプロセスIDを返します。これにより 、次の方法で、プロセスIDによるアタッチの起動構成でextension.pickNodeProcess
コマンド を使用できる ようになります。
同様の例は、インタラクティブなコマンド拡張機能を提供するVSCodeのNode.jsデバッガー拡張機能にあります。実行中のすべてのNode.jsプロセスのリストから、単一プロセスのpickNodeProcessを選択します。このコマンドは、選択したプロセスのプロセスIDを返します。これにより、「プロセスIDによる追加のスタートアップコンフィギュレーションでpickNodeProcessコマンド」を使用できるようになります。、以下の方法:
{
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Attach by Process ID",
"processId": "${command:extension.pickNodeProcess}"
}
]
}
入力変数
コマンド変数はすでに非常に強力ですが、特定のコマンドを実行するメカニズムがありません。たとえば、プロンプト情報やデフォルト値をコマンドプロンプトに渡すことはできません。
この制限は、構文$ {input:variableID}の入力変数を使用することで解決できます。variableIDは、launch.jsonファイルとtasks.jsonファイルのinputsセクションのエントリに関連付けられ、その他のプロパティはinputセクションで構成できます。
次の例は、入力変数を使用したtask.jsonの一般的な構造を示しています。
{
"version": "2.0.0",
"tasks": [
{
"label": "task name",
// input变量
"command": "${input:variableID}"
// ...
}
],
"inputs": [ // input部分
{
// 通过 id 属性与其他部分关联
"id": "variableID",
//输入变量的类型,目前支持 promptString,pickString,command
"type": "type of input variable"
}
]
}
VSCodeで現在サポートされている入力変数タイプ:
- promptString:ユーザー入力を受け取るための入力ボックスを表示します。
- pickString: ユーザーがいくつかのオプションから選択できるドロップダウンリストを表示します。
- コマンド: 任意のコマンドを実行します
各入力変数タイプには、追加の構成属性が必要です。
promptString
:
- 説明: 表示される入力プロンプト情報。
- default: 指定されたデフォルト値。ユーザーが入力しない場合、このデフォルト値が使用されます。
pickString
:
- 説明: 表示される入力プロンプト情報。
- options:オプション の配列。
- default: 指定されたデフォルト値。ユーザーが入力しない場合、このデフォルト値が使用されます。デフォルト値はオプションの1つである必要があります。
command
:
- command: 変数補間で実行するコマンド。
- args: 実行中のコマンドのパラメーター。
以下は、 変数をtasks.json
介してinputs
AngularCLIを使用する方法を示す例 です。
{
"version": "2.0.0",
"tasks": [
{
"label": "ng g",
"type": "shell",
"command": "ng",
"args": ["g", "${input:componentType}", "${input:componentName}"]
}
],
"inputs": [
{
"type": "pickString",
"id": "componentType",
"description": "What type of component do you want to create?",
"options": [
"component",
"directive",
"pipe",
"service",
"class",
"guard",
"interface",
"enum",
"enum"
],
"default": "component"
},
{
"type": "promptString",
"id": "componentName",
"description": "Name your component.",
"default": "my-new-component"
}
]
}
次の例は、デバッグ構成でコマンドタイプの入力変数を使用する方法を示しています。構成では、特定のフォルダーからすべてのテストケースのリストが生成され、ユーザーがテストケースを選択できるようになります。拡張機能がextension.mochaSupport.testピッカーコマンドを提供するとします。このコマンドは、すべてのテストケースを1つの場所に保存し、言語のピッカーUIを表示してそのうちの1つを選択します。コマンドの入力パラメーターは、コマンド自体によって定義されます。
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Run specific test",
"program": "${workspaceFolder}/${input:pickTest}"
}
],
"inputs": [
{
"id": "pickTest",
"type": "command",
"command": "extension.mochaSupport.testPicker",
"args": {
"testFolder": "/out/tests"
}
}
]
}
コマンド入力は、タスクでも使用できます。次の例では、組み込みの[タスクの終了]コマンドが使用されています。パラメータを受け入れて、すべてのタスクを終了できます。
{
"version": "2.0.0",
"tasks": [
{
"label": "Terminate All Tasks",
"command": "echo ${input:terminate}",
"type": "shell",
"problemMatcher": []
}
],
"inputs": [
{
"id": "terminate",
"type": "command",
"command": "workbench.action.tasks.terminate",
"args": "terminateAll"
}
]
}
変数の値をテストする方法は?
実行時に変数の値を知る最も簡単な方法は、コンソールに変数の値を入力することです。例:知りたい場合は ${workspaceFolder}的值是什么
、次のようなtasks.jsonファイルを作成し、ファイルのコマンド値に「echo $ {workspaceFolder}」と入力して、メニューの[ターミナル] > [ タスクの実行]を選択 して tasks.json
ファイル
{
"version": "2.0.0",
"tasks": [
{
"label": "echo",
"type": "shell",
"command": "echo ${workspaceFolder}"
}
]
}
翻訳元:https://code.visualstudio.com/docs/editor/variables-reference