在VSCode设置中使用$ dir和反斜杠转义

时间:2017-09-08 08:54:02

标签: bash visual-studio-code escaping vscode-code-runner

我正在使用Code Runner [VSCode] [2] (Visual Studio代码),我试图更改{{1}的运行命令}}

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

C++

然后当我按// Set the executor of each language. "code-runner.executorMap": { // ... "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt" // ... } 并按CTRL SHIFT P上的Enter键运行我当前的C ++文件时,它会生成以下命令:

Run Code

但是命令的输出是:

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

这是因为您可以在正在运行的命令中看到它尝试将CD转到bash: cd: c:\C++" && g++ main.cpp -o main && c:C++"main: No such file or directory ,但"c:\C++\"字符未被转义,导致命令失败。 如果该命令将所有\个字符转义为\,则它将正确运行。

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

如何解决此问题并逃避从"c:\\C++\\"文件中的$dir变量中删除的路径?

1 个答案:

答案 0 :(得分:1)

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

如果这不起作用,您可以尝试在位于codeManager.js的{​​{1}}中创建自己的变量。

将条目添加到位于第246行附近的%VSCODE_INSTALL%\Data\code\extensions\formulahendry.coderunner-%VERSION%\out\src\数组中。例如:

placeholders

我曾经取代

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

因为我无法在类路径中使用带有显式引号的变量。 你也可以用正上方的正则表达式定义你自己的函数返回值(比如getCodeFileDirWithoutTrailingSlash)(约为第222行)。