How to change default terminal in VS Code - terminal

Whenever I open terminal in VS Code it always opens it's default one, and I always have to manually change it.
This is really annoying because I use terminal all the time every day. I checked Terminal settings in the toolbar but I can not find the option to change default. How can we do it?

When terminal is opened, in top right corner user should click on down-arrow button and then an option menu will appear. Then you should select Select Default Profile and you can choose your default terminal from there.

There are a lot of issues on github about this, see, e,g, Default console changed from what I wanted to Powershell during upgrade
( I think that is oldest tracking one for the v1.60 release).
I can replicate the problem on the Stable v1.60 build but not on the Insiders' Build with the exact same settings.
So it isn't your set-up and I'm sure the vscode team is aware of it. Your options are to
(1) use the Insiders' Build - at least that works for me,
(2) downgrade vscode to v1.59,
(3) when I click the Add Terminal + button I do get my default Git Bash terminal, or
(4) rename your default profile - see below.
FYI, my settings:
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"icon": "terminal-powershell"
},
"Command Prompt": {
"path": [
"${env:windir}\\Sysnative\\cmd.exe",
"${env:windir}\\System32\\cmd.exe"
],
"args": [],
"icon": "terminal-cmd"
},
// "Git Bash": { // "Git Bash" does not work
"GitBash": { // "GitBash" does work
"path": "C:\\Program Files\\Git\\bin\\bash.exe",
"icon": "terminal-bash"
}
},
// "terminal.integrated.defaultProfile.windows": "Git Bash" // does not work for me
"terminal.integrated.defaultProfile.windows": "GitBash" // does work
// deprecated but may still work for you
// "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
Previously trying to set Git Bash as default profile, for Git Bash it was suggested to use GitBash instead (remove the space). That never worked for me until today in the v1.60 Stable Build.
So might try changing your profile name to something other than Git Bash or WSL, etc, if that isn't working.

I have attempted to set the default terminal about a dozen times, but it is not sticking with the latest update. It keeps opening PowerShell as the default terminal. These settings have been working fine for me until yesterday's update (v1.60.0), which broke this.
"terminal.integrated.defaultProfile.windows": "WSL",
"terminal.integrated.profiles.windows": {
"WSL": {
"path": "C:\\WINDOWS\\System32\\wsl.exe",
"args": [
"~"
],
"icon": "terminal-ubuntu"
},
"Git Bash": {
"source": "Git Bash",
"icon": "terminal-bash"
},
"Command Prompt": {
"path": [
"${env:windir}\\System32\\cmd.exe"
],
"args": ["/K cls && cd /D C:\\OD"],
"icon": "terminal-cmd"
},
"PowerShell": {
"source": "PowerShell",
"icon": "terminal-powershell"
}
}
Anyone else experiencing this?

The solution that worked for me is:
Method 1:
Open Settings.json file and add the following line of code
"terminal.integrated.defaultProfile.windows": "Command Prompt"
After making this change my Settings.json file looks like this:
{
"files.autoSave": "afterDelay",
"window.zoomLevel": 1,
"liveServer.settings.donotVerifyTags": true,
"liveServer.settings.donotShowInfoMsg": true,
"terminal.integrated.automationShell.windows": "",
"terminal.integrated.automationShell.linux": "",
"terminal.integrated.defaultProfile.windows": "Command Prompt"
}
Method 2:
Click on Settings and search for defaultprofilewindows
You will get the default terminal on this tab. Click on the menu list and select Command Prompt.
You can choose any of the available Terminals and check which one will work as you want.
Note: Using either method you will get the same results. Both of these above-mentioned methods are working perfectly for me.

I got it to load properly, but when I try to run a Python script using the run button, it runs in PowerShell.
"terminal.integrated.automationShell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
"terminal.external.windowsExec": "C:\\Program Files\\Git\\bin\\bash.exe",
"terminal.integrated.profiles.windows": {
"PowerShell": null,
"Command Prompt": null,
"Git Bash": {
"path": "C:\\Program Files\\Git\\bin\\bash.exe",
"icon": "terminal-bash"
},
},
"terminal.integrated.defaultProfile.windows": "Git Bash"

Related

Why doesn't VSCode load my environment in the first terminal?

When I first open VSCode, it restores the history in any tabs that I had previously opened, displaying 'History restored' in all terminals.
However it always fails to load my environment as defined in my ~/.bash_profile into the first terminal I have open from my previous session, meaning I need to manually run source ~/.bash_profile for that terminal.
If I had more than one terminal open, it will load my environment into the other terminals, but never the first.
If I create a new terminal manually it always loads my environment.
Settings:
"terminal.integrated.defaultProfile.osx": "bash",
"terminal.integrated.profiles.osx": {
"bash": {
"path": "/bin/bash",
"args": ["-l"],
"icon": "terminal-bash"
}
},

How to configure the VS Code shell like the developer command prompt?

I'm trying to set up a task for compiling my C++ code in Visual Studio Code. I can't get it to work... but the command it spits out works perfectly fine when I just open the Developer Command Prompt and paste it in.
I've managed to narrow down this problem to the correct environment variables not being set in the shell that VS Code is using (as evidenced by running echo %INCLUDE% just returning %INCLUDE%).
Now I don't exactly know how the Developer Command Prompt differs from a normal Powershell terminal as used by VS Code, so I wouldn't know exactly how to configure it (aside from running vcvarsall.bat), but even if I could, every time I open a new terminal in VS Code the environment variables have reset themselves again.
In essence, the solutions to this problem that I can see are:
Run vcvarsall.bat before every build task.
Unfortunately I'm not familiar enough to know how to execute multiple commands in a row using a tasks.json configuration file.
Configure the shell that VS Code uses to be like the Developer Command Prompt by default.
Unfortunately, I have no clue where to even start with this. I can easily set the shell used to either cmd or PowerShell, but not to the Developer Command Prompt, and neither can I find where to configure its environment variables, nor do I know what the full effects of vcvarsall.bat are so I know which variables to set.
If there's a simpler way of achieving what I'm after, I'd be very happy to hear it. Though regardless, what it comes down to is that I want to know how to configure VS Code in a way that allows me to compile my code from inside the IDE.
I found an answer after a bunch more poking around. My setup (in tasks.json) is now as follows:
"command": "&",
"args": [
"'D:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Auxiliary\\Build\\vcvars32.bat';",
"cl.exe",
"/Zi",
"/EHsc",
"/Fe:",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}"
]
with & you can execute a path that contains spaces. This leads to my vcvars32.bat (Location may be different for other people) which sets up the correct variables without having to enter them manually. ; lets you execute multiple commands one after the other in PowerShell.
The accepted answer did not work for me but was helpful in finding a solution that did work.
Using the task type "process" and then settting the command to the batch file called by the Developer Command Prompt launches the windows command prompt directly (instead of invoking it via powershell).
The first argument is then "&" which means that the compiler will be invoked within the developer command prompt context instead of just being passed to the batch file as an argument.
>{
"version": "2.0.0",
"tasks": [
{
"type": "process",
"label": "cl.exe build active file",
"command": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Auxiliary\\Build\\vcvars32.bat",
"args": [
"&"
"cl.exe",
"/Zi",
"/EHsc",
"/Fe:",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}"
],
"problemMatcher": ["$msCompile"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
You can create a new task type within your tasks.json this way:
{
"version": "2.0.0",
"windows": {
"options": {
"shell": {
"executable": "cmd.exe",
"args": [
"/C",
// The path to VsDevCmd.bat depends on the version of Visual Studio you have installed.
"\"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/Tools/VsDevCmd.bat\"",
"&&"
]
}
}
},
"tasks": [
{
"type": "shell",
"label": "cl.exe build active file",
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/Fe:",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}"
],
"problemMatcher": ["$msCompile"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
Don't forget to change type of task to "shell".
Note that the build will start with a couple of sec delay.
See here: https://code.visualstudio.com/docs/cpp/config-msvc#_run-vs-code-outside-the-developer-command-prompt

Shortcut to clear terminal doesn't work in Visual Studio Code on MacOS

Somehow I can't use ⌘ + K to clear terminal even though the shortcut has set up as default.
Solution moved from #mayognaise's question post.
The command was overwritten by an extension.
To overwrite it to reset, added the following lines in keybindings.json.
{ "key": "cmd+k", "command": "workbench.action.terminal.clear", "when": "terminalFocus" }

How to select a different type of command shell in the Visual Studio Code integrated terminal?

I looked at this link which talks about changing the default command shell in the integrated terminal of Visual Studio Code. I was able to change it to Git Bash using the below setting in the settings.json file. You can open settings.json file by pressing the Ctrl + , or from File → Preferences → Settings menu:
{
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
}
There is a + sign in the integrated terminal with the help of which you can have multiple terminals running parallelly as shown in the screenshot below:
I want to load a Git Bash shell in terminal # 1, Windows PowerShell in terminal # 2, and so on. What is the relevant configuration to achieve it?
No need to keep changing your default terminal setting. Install the Shell Launcher extension, configure it, and then ctrl-shift-t to select which terminal you want to open inside of VS Code.
As of June 17 '2018, things have become really smooth in Visual Studio (VS) Code when it comes to changing the integrated command shell. I'm enlisting all the options here:
Select a different command shell on the go - Name of the command shell is itself a command to switch the current command shell to the target command shell. For example, let's say my integrated command shell is currently showing Bash, and I want to switch to PowerShell. Then type powershell command and press Enter. The command shell will change to PowerShell. Similarly it works for all other types of command shells installed in VS Code.
More instances of command shell - Press Ctrl + Shift + `(back-tick). Every time you press the keyboard shortcut combination, a new instance of the command shell will get added.
Change the configuration of default command shell type - Press F1 in Visual Studio Code and type or select Terminal: Select Default Shell as shown in the snapshot below.
Once selected, then choose the default command shell of your choice to change the settings permanently:
In recent version (1.15.0) you can
change the settings, then run the terminal, you've set
then change the settings again and run the another type of terminal by pressing the + sign
and so on...
You can put this in your settings file, and uncomment which one you need.
// 64-bit cmd if available, otherwise 32-bit
//"terminal.integrated.shell.windows": "C:\\Windows\\sysnative\\cmd.exe"
// 64-bit PowerShell if available, otherwise 32-bit
//"terminal.integrated.shell.windows": "C:\\Windows\\sysnative\\WindowsPowerShell\\v1.0\\powershell.exe"
// Git Bash
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
// Bash on Ubuntu (on Windows)
//"terminal.integrated.shell.windows": "C:\\Windows\\sysnative\\bash.exe"
Click on Arrow then click something like Select template profile
so then , will Open the search bar automatically, so... change by your choice
Terminal profiles is what you are looking for - https://code.visualstudio.com/docs/terminal/profiles. It didn't exist by the time the question was posted and the only solution by that time was the somewhat limited "terimnal.integrated.terminal.xxx" solution.
Example configuration:
"terminal.integrated.profiles.windows": {
"Cmd": {
"path": "C:\\Windows\\System32\\cmd.exe",
"icon": "terminal-cmd"
},
"GitBash": {
"path": "C:\\Program Files\\Git\\bin\\bash.exe", "icon": "terminal-bash",
"icon": "terminal-bash"
},
"PowerShell": {
"path": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
"icon": "terminal-powershell"
},
},

VSCode Change Default Terminal

I am using Visual Studio Code on my Windows 10 PC. I want to change my default terminal from Windows PowerShell to Bash on Ubuntu (on Windows).
How can I do that?
You can also select your default terminal by pressing F1 in VS Code and typing/selecting Terminal: Select Default Profile (or Terminal: Select Default Shell in older VSCode versions).
Older:
Configure your default integrated terminal by running the Terminal: Select Default Profile command, which is also accessible via the terminal dropdown.
See https://code.visualstudio.com/docs/editor/integrated-terminal#_terminal-profiles
I just type following keywords in the opened terminal;
powershell
bash
cmd
node
python (or python3)
See details in the below image. (VSCode version 1.19.1 - windows 10 OS)
It works on VS Code Mac as well. I tried it with VSCode (Version 1.20.1)
Go to File > Preferences > Settings (or press Ctrl+,) then click the leftmost icon in the top right corner, "Open Settings (JSON)"
In the JSON settings window, add this (within the curly braces {}):
"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\bash.exe"`
(Here you can put any other custom settings you want as well)
Checkout that path to make sure your bash.exe file is there otherwise find out where it is and point to that path instead.
Now if you open a new terminal window in VS Code, it should open with bash instead of PowerShell.
Since you use WSL, VSCode has dedicated Remote - WSL extension so you can use Linux environment directly in VSCode. When you open the project inside Linux, by default, it's use Linux default shell (bash by default), so no config needed.
If you want to switch to other profile, there is Terminal > Integrated > Default Profile: Linux section so you can pick your favorite one.
Going off of #arielhad's solution...
My VSCode version was 1.57.1.
Open settings.xml file:
Ctrl + Shift + p
Type 'Open Settings (JSON)' and select.
Add the following:
"terminal.integrated.profiles.windows": {
"PowerShell": {
"path": [
"${env:windir}\\Sysnative\\WindowsPowerShell\\v1.0\\powershell.exe",
"${env:windir}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
],
"source": "PowerShell",
"icon": "terminal-powershell",
"args": [
"-NoLogo",
"-ExecutionPolicy",
"Bypass"
]
},
"Command Prompt": {
"path": [
"${env:windir}\\Sysnative\\cmd.exe",
"${env:windir}\\System32\\cmd.exe"
],
"icon": "terminal-cmd"
},
//START: THIS DOES NOT WORK
"Git Bash": {
"path": [
"C:\\Program Files\\Git\\bin\\bash.exe",
],
"source": "Git Bash",
"icon": "terminal-bash"
}
// END: THIS DOES NOT WORK
//START: THIS WORKS
"GitBash": {
"path": [
"C:\\Program Files\\Git\\bin\\bash.exe",
],
"icon": "terminal-bash"
}
// END: THIS WORKS
}
I don't know why the second way works but it does. It appears the 'Git Bash' is a reserved name and I guess you cannot set the path.
To change the default terminal for your project in Visual Studio Code:
Create a folder by name of .vscode
Create a settings.json file in this folder:
Write the settings you want
for example, if you are a window user and want to set "Command Prompt" as the default terminal you can write:
"terminal.integrated.defaultProfile.windows": "Command Prompt"
values You can pass: "Git Bash", "PowerShell", and "Command Prompt".
for Linux you will use terminal.integrated.defaultProfile.linux and for mac os you will use: terminal.integrated.defaultProfile.osx
press ctrl+Shift+p
-> type settings.json
at the of file change the 'powershell' to 'Git Bash'
The integrated shell option still works but has been depreciated. The fix is to use the integrated profile instead:
"terminal.integrated.defaultProfile.windows": "C:\\Program Files\\Git\\bin\\bash.exe (migrated)",
"terminal.integrated.profiles.windows": {
"C:\\Program Files\\Git\\bin\\bash.exe (migrated)": {
"path": "C:\\Program Files\\Git\\bin\\bash.exe",
"args": []
}
}
Just press Ctrl + Shift +p
search "Terminal: Select Default Profile" click
You will see terminals options and select Git Bash
If you want to select the type of console, you can write this in the file "keybinding.json" (this file can be found in the following path "File-> Preferences-> Keyboard Shortcuts")
`
//with this you can select what type of console you want
{
"key": "ctrl+shift+t",
"command": "shellLauncher.launch"
},
//and this will help you quickly change console
{
"key": "ctrl+shift+j",
"command": "workbench.action.terminal.focusNext"
},
{
"key": "ctrl+shift+k",
"command": "workbench.action.terminal.focusPrevious"
}`
You can change the terminal by opening command pallete by pressing CTRL SHIFT P
or you can go to View in the top and click "Open Command Pallete"
then type Terminal: Select Default Profile
and you you type which terminal you want.

Resources