cmder: VSCode tasks don't run properly on Cmder

I’ve followed the instructions here and I’m able to run Cmder as VSCode integrated terminal. Everything seems to be working fine, except for VSCode > Run Task which ouputs a lot of stuff but doesn’t run the task.

Example: VSCode > Terminal > Run Task > npm start

Integrated terminals shows:

Executing task: npm start
DEBUG(init.bat): Env Var - CMDER_ROOT=D:\Portables\cmder

DEBUG(init.bat): Env Var - debug-output=1

DEBUG(init.bat): Looking for Git install root...

DEBUG(:read_version): Env Var - git_executable=D:\Portables\cmder\vendor\git-for-windows\cmd\git.exe

DEBUG(:read_version): D:\Portables\cmder\vendor\git-for-windows\cmd\git.exe does not exist.

DEBUG(:validate_version): Found Git Version for VENDORED: ...

DEBUG(:read_version): Env Var - git_executable=C:\Program Files\Git\cmd\git.exe

DEBUG(:read_version): Env Var - GIT_VERSION_USER=2.18.0.windows.1

DEBUG(:validate_version): Found Git Version for USER: ...

DEBUG(:enhance_path): Env Var - find_query=C:\\Program\ Files\\Git\\cmd

DEBUG(:enhance_path): Env Var 1 - found=0

DEBUG(:enhance_path): Env Var 2 - found=1

DEBUG(:enhance_path): Env Var - find_query=C:\\Program\ Files\\Git\\mingw64

DEBUG(:enhance_path): Env Var 1 - found=0

DEBUG(:enhance_path): Env Var 2 - found=0

DEBUG(:enhance_path): BEFORE Env Var - PATH=C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Docker\Docker\Resources\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Git\cmd;C:\ProgramData\chocolatey\bin;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Yarn\bin\;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\epari\AppData\Local\Microsoft\WindowsApps;C:\Users\epari\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\epari\AppData\Local\hyper\app-2.0.0\resources\bin;C:\Users\epari\AppData\Local\now-cli;D:\Path;C:\Users\epari\.dotnet\tools;C:\Program Files\dotnet;C:\Users\epari\AppData\Roaming\npm;C:\Users\epari\AppData\Local\Yarn\bin

DEBUG(:enhance_path): Appending 'C:\Program Files\Git\mingw64'

DEBUG(:enhance_path): AFTER Env Var - PATH=C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Docker\Docker\Resources\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Git\cmd;C:\ProgramData\chocolatey\bin;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Yarn\bin\;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\epari\AppData\Local\Microsoft\WindowsApps;C:\Users\epari\AppData\Local\Programs\Microsoft
VS Code\bin;C:\Users\epari\AppData\Local\hyper\app-2.0.0\resources\bin;C:\Users\epari\AppData\Local\now-cli;D:\Path;C:\Users\epari\.dotnet\tools;C:\Program Files\dotnet;C:\Users\epari\AppData\Roaming\npm;C:\Users\epari\AppData\Local\Yarn\bin;C:\Program Files\Git\mingw64

DEBUG(:enhance_path): Env Var - find_query=C:\\Program\ Files\\Git\\usr\\bin

DEBUG(:enhance_path): Env Var 1 - found=0

DEBUG(:enhance_path): Env Var 2 - found=0

DEBUG(:enhance_path): BEFORE Env Var - PATH=C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Docker\Docker\Resources\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Git\cmd;C:\ProgramData\chocolatey\bin;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Yarn\bin\;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\epari\AppData\Local\Microsoft\WindowsApps;C:\Users\epari\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\epari\AppData\Local\hyper\app-2.0.0\resources\bin;C:\Users\epari\AppData\Local\now-cli;D:\Path;C:\Users\epari\.dotnet\tools;C:\Program Files\dotnet;C:\Users\epari\AppData\Roaming\npm;C:\Users\epari\AppData\Local\Yarn\bin;C:\Program Files\Git\mingw64

DEBUG(:enhance_path): Appending 'C:\Program Files\Git\usr\bin'

DEBUG(:enhance_path): AFTER Env Var - PATH=C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Docker\Docker\Resources\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Git\cmd;C:\ProgramData\chocolatey\bin;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Yarn\bin\;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\epari\AppData\Local\Microsoft\WindowsApps;C:\Users\epari\AppData\Local\Programs\Microsoft
VS Code\bin;C:\Users\epari\AppData\Local\hyper\app-2.0.0\resources\bin;C:\Users\epari\AppData\Local\now-cli;D:\Path;C:\Users\epari\.dotnet\tools;C:\Program Files\dotnet;C:\Users\epari\AppData\Roaming\npm;C:\Users\epari\AppData\Local\Yarn\bin;C:\Program Files\Git\mingw64;C:\Program Files\Git\usr\bin

DEBUG(init.bat): Env Var - GIT_INSTALL_ROOT=C:\Program Files\Git

DEBUG(init.bat): Found Git in: 'C:\Program Files\Git'

DEBUG(:enhance_path_recursive): Env Var - add_path=D:\Portables\cmder\bin

DEBUG(:enhance_path_recursive): Env Var - position=

DEBUG(:enhance_path_recursive): Env Var - max_depth=1

DEBUG(:enhance_path_recursive): Adding parent directory - 'D:\Portables\cmder\bin'

DEBUG(:enhance_path): Env Var - find_query=D:\\Portables\\cmder\\bin

DEBUG(:enhance_path): Env Var 1 - found=0

DEBUG(:enhance_path): Env Var 2 - found=0

DEBUG(:enhance_path): BEFORE Env Var - PATH=C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Docker\Docker\Resources\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Git\cmd;C:\ProgramData\chocolatey\bin;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Yarn\bin\;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\epari\AppData\Local\Microsoft\WindowsApps;C:\Users\epari\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\epari\AppData\Local\hyper\app-2.0.0\resources\bin;C:\Users\epari\AppData\Local\now-cli;D:\Path;C:\Users\epari\.dotnet\tools;C:\Program Files\dotnet;C:\Users\epari\AppData\Roaming\npm;C:\Users\epari\AppData\Local\Yarn\bin;C:\Program Files\Git\mingw64;C:\Program Files\Git\usr\bin

DEBUG(:enhance_path): Prepending 'D:\Portables\cmder\bin'

DEBUG(:enhance_path): AFTER Env Var - PATH=D:\Portables\cmder\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Docker\Docker\Resources\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Git\cmd;C:\ProgramData\chocolatey\bin;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Yarn\bin\;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\epari\AppData\Local\Microsoft\WindowsApps;C:\Users\epari\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\epari\AppData\Local\hyper\app-2.0.0\resources\bin;C:\Users\epari\AppData\Local\now-cli;D:\Path;C:\Users\epari\.dotnet\tools;C:\Program Files\dotnet;C:\Users\epari\AppData\Roaming\npm;C:\Users\epari\AppData\Local\Yarn\bin;C:\Program Files\Git\mingw64;C:\Program Files\Git\usr\bin

DEBUG(:enhance_path): Env Var - find_query=D:\\Portables\\cmder

DEBUG(:enhance_path): Env Var 1 - found=0

DEBUG(:enhance_path): Env Var 2 - found=0

DEBUG(:enhance_path): BEFORE Env Var - PATH=D:\Portables\cmder\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Docker\Docker\Resources\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Git\cmd;C:\ProgramData\chocolatey\bin;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Yarn\bin\;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\epari\AppData\Local\Microsoft\WindowsApps;C:\Users\epari\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\epari\AppData\Local\hyper\app-2.0.0\resources\bin;C:\Users\epari\AppData\Local\now-cli;D:\Path;C:\Users\epari\.dotnet\tools;C:\Program Files\dotnet;C:\Users\epari\AppData\Roaming\npm;C:\Users\epari\AppData\Local\Yarn\bin;C:\Program Files\Git\mingw64;C:\Program Files\Git\usr\bin

DEBUG(:enhance_path): Appending 'D:\Portables\cmder'

DEBUG(:enhance_path): AFTER Env Var - PATH=D:\Portables\cmder\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Docker\Docker\Resources\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Git\cmd;C:\ProgramData\chocolatey\bin;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Yarn\bin\;C:\Users\epari\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\epari\AppData\Local\Microsoft\WindowsApps;C:\Users\epari\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\epari\AppData\Local\hyper\app-2.0.0\resources\bin;C:\Users\epari\AppData\Local\now-cli;D:\Path;C:\Users\epari\.dotnet\tools;C:\Program Files\dotnet;C:\Users\epari\AppData\Roaming\npm;C:\Users\epari\AppData\Local\Yarn\bin;C:\Program Files\Git\mingw64;C:\Program Files\Git\usr\bin;D:\Portables\cmder

DEBUG(init.bat): Env Var - HOME=C:\Users\epari

Not sure if a bug in VSCode, cmder or in the integration between the two.

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Reactions: 5
  • Comments: 25 (9 by maintainers)

Most upvoted comments

What works for me is just specifying cmd.exe in tasks.json (I don’t want to be polluting project-wide tasks with stuff specific to me) and passing the tasks as shell commands (as opposed to using the type property for things like gulp and npm). So at the top I have just that:

{
    "version": "2.0.0",
    "windows": {
        "options": {
            "shell": {
                "executable": "cmd.exe",
                "args": ["/d", "/c"]
            }
        }
    },
    // ...
}

… and instead of using the type property for things like npm and gulp, I pass them on directly to the shell, i.e. instead of

{
    // ...
    "tasks": [
        {
            "type": "npm",
            "script": "start",
            "problemMatcher": [
                "$gulp-tsc"
            ],
            // ...
        }
    ]
}

I have

{
    // ...
    "tasks": [
        {
            "label": "default",
            "command": "npm run start",
            "type": "shell",
            "args": [],
            "problemMatcher": [
                "$gulp-tsc"
            ],
            "presentation": {
                "group": "dev",
                "reveal": "always",
                "focus": false,
                "panel": "dedicated"
            },
            "group": "build",
            "runOptions": {
                "runOn": "folderOpen"
            }
        }
    ]
}

This even works to start tasks at project open. What doesn’t always work is interrupting the task with Ctrl+C (thus I have to kill the whole terminal instance), but it might be a different, unrelated bug.

@ajaymittur28 , i created vscode_init script specially for fixing vscode tasks!

I could not make it work. @kamenminkov and @StableCoder Did it work for you?

Yes. I just re-tested in 1.33.1, and it works fine. This is my whole tasks.json file I used to use Cmder specifically as the task shell, since using it without spews plenty of garbage:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "windows": {
        "options": {
            "shell": {
                "executable": "cmd.exe",
                "args": [
                    "/d", "/c", "C:\\tools\\Cmder\\vendor\\init.bat", "&&"
                ]
            }
        }
    },
    "tasks": [
        {
            "label": "BuildIt",
            "type": "shell",
            "command": "cd ${workspaceFolder}/build && make && echo All done!",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

Again, specifying it in the tasks.json file overrides just the task shell environment. Shouldn’t affect regular integrated terminal use, or the specified “terminal.integrated.shellArgs.windows” in the regular settings.json file.

There is a hacky way to get tasks to work. As by default using the Cmder shell with tasks will fail. However, in the associated tasks.json file, we can override the VSCode shell and default behaviour for tasks, and have Cmder initialized a bit more manually:

{
    "version": "2.0.0",
    "windows": {
        "options": {
            "shell": {
                "executable": "cmd.exe",
                "args": [
                    "/d", "/c", "[cmder_root]\\vendor\\init.bat", "&&"
                ]
            }
        }
    },
    "tasks": [
        {
            "label": "Build",
            "type": "shell",
            "command": "cd ${workspaceFolder}/build && make"
        },
...

This, when placed in the tasks.json file will override the shell specifically to run said tasks, without the need to modify the regular VSCode settings.json.

I meet the same problem. When I run the build task, it will run perfect. image but when I run the “run task”, the terminal shows: image


my tasks.json:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Build",
      "command": "g++",
      "args": [
        "-g",
        "-Wall",
        "-fexec-charset=GBK",
        "-std=c++17",
        "-lm",
        "${file}",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}.exe"
      ],
      "problemMatcher": {
        "owner": "cpp",
        "fileLocation": "absolute",
        "pattern": {
          "regexp": "^(.*):(\\d+):(\\d+):\\s+(error):\\s+(.*)$",
          "file": 1,
          "line": 2,
          "column": 3,
          "severity": 4,
          "message": 5
        }
      },
      "group": {
        "kind": "build",
        "isDefault": true
      }
    },
    {
      "label": "Run",
      "type": "shell",
      "dependsOn": "Build",
      "command": "${fileDirname}/${fileBasenameNoExtension}.exe",
      "args": [],
      "presentation": {
        "echo": true,
        "reveal": "always",
        "focus": false
      },
      "problemMatcher": [],
      "group": {
        "kind": "test",
        "isDefault": true
      }
    }
  ]
}

and my VSCode integrated settings are the same as @eparizzi . I had set the %CMDER_ROOT% .

@eparizzi what you are seeing is cmder debug output normally enabled using the init.bat /d command. What command is being run in vscode config?

I experienced the same problem. I am forced to remove the cmder integration from vscode to do debugging

already have a solution #2113

@StableCoder This works if I disable the “terminal.integrated.shellArgs.windows” setting, which defeats the whole purpose - if I want to open a new terminal without a task, it opens a bare cmd. I wouldn’t mind bare cmd for tasks themselves.