1

我正在为 [VSCode][2] (Visual Studio Code)使用Code Runner ,并且我正在尝试更改.C++

我的 settings.json 文件中有以下设置:

// Set the executor of each language.
"code-runner.executorMap": {
    // ...

    "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"

    // ...
}

然后,当我按下CTRL SHIFT P并按下 enterRun Code以运行我当前的 C++ 文件时,它会生成以下要运行的命令:

cd "c:\C++\" && g++ main.cpp -o main && "c:\C++\"main

但是命令的输出是:

bash: cd: c:\C++" && g++ main.cpp -o main && c:C++"main: No such file or directory

这是因为正如您在正在运行的命令中看到的那样,它正在尝试 CD 到,"c:\C++\"\字符没有被转义,这会导致命令失败。如果该命令将所有\字符转义为"c:\\C++\\",它将正确运行。

我正在为我的集成终端使用 git bash 控制台。

如何解决此问题并转义从文件中的$dir变量中检索到的路径settings.json

4

1 回答 1

2

试试 $dirWithoutTrailingSlash 变量而不是 $dir。

如果这不起作用,您可以尝试在codeManager.js位于%VSCODE_INSTALL%\Data\code\extensions\formulahendry.coderunner-%VERSION%\out\src\.

将条目添加到placeholders位于第 246 行附近的数组中。例如:

{ regex: /\$dirWithoutQuotesNorTrailingSlash/g, replaceValue: this.getCodeFileDirWithoutTrailingSlash() }

我用来代替的

{ regex: /\$dirWithoutTrailingSlash/g, replaceValue: this.quoteFileName(this.getCodeFileDirWithoutTrailingSlash()) }

因为我不能在类路径中使用带有显式引号的变量。您还可以使用正则表达式定义您自己的函数返回值(如 getCodeFileDirWithoutTrailingSlash)(大约第 222 行)。

于 2017-10-02T14:08:49.320 回答