🕷️ Crawler Inspector

URL Lookup

Direct Parameter Lookup

Raw Queries and Responses

1. Shard Calculation

Query:
Response:
Calculated Shard: 22 (from laksa170)

2. Crawled Status Check

Query:
Response:

3. Robots.txt Check

Query:
Response:

4. Spam/Ban Check

Query:
Response:

5. Seen Status Check

ℹ️ Skipped - page is already crawled

📄
INDEXABLE
CRAWLED
8 hours ago
🤖
ROBOTS ALLOWED

Page Info Filters

FilterStatusConditionDetails
HTTP statusPASSdownload_http_code = 200HTTP 200
Age cutoffPASSdownload_stamp > now() - 6 MONTH0 months ago
History dropPASSisNull(history_drop_reason)No drop reason
Spam/banPASSfh_dont_index != 1 AND ml_spam_score = 0ml_spam_score=0
CanonicalPASSmeta_canonical IS NULL OR = '' OR = src_unparsedNot set

Page Details

PropertyValue
URLhttps://code.visualstudio.com/docs/terminal/basics
Last Crawled2026-04-12 18:08:48 (8 hours ago)
First Indexed2022-07-19 18:42:24 (3 years ago)
HTTP Status Code200
Meta TitleTerminal Basics
Meta DescriptionVisual Studio Code has an integrated terminal to enable working in your shell of choice without leaving the editor.
Meta Canonicalnull
Boilerpipe Text
Visual Studio Code includes a full featured integrated terminal that starts at the root of your workspace. It provides integration with the editor to support features like links and error detection . The integrated terminal can run commands such as mkdir and git just like a standalone terminal. You can open a terminal as follows: From the menu, use the Terminal > New Terminal or View > Terminal menu commands. From the Command Palette ( ⇧⌘P (Windows, Linux Ctrl+Shift+P ) ), use the View: Toggle Terminal command. In the Explorer, you can use the Open in Integrated Terminal context menu command to open a new terminal from a folder. To toggle the terminal panel, use the ⌃` (Windows, Linux Ctrl+` ) keyboard shortcut. To create a new terminal, use the ⌃⇧` (Windows, Linux Ctrl+Shift+` ) keyboard shortcut. VS Code's terminal has additional functionality called shell integration that tracks where commands are run with decorations on the left of a command and in the scrollbar: Note If you prefer to work outside VS Code, open an external terminal with the ⇧⌘C (Windows, Linux Ctrl+Shift+C ) keyboard shortcut Terminal shells The integrated terminal can use various shells installed on your machine, with the default being pulled from your system defaults. Shells are detected and presented in the terminal profiles dropdown. You can learn more about configuring terminal shells in the terminal profiles article. Managing terminals The terminal tabs UI is on the right side of the terminal view. Each terminal has an entry with its name, icon, color, and group decoration (if any). Add terminal instances by selecting the + icon on the top-right of the TERMINAL panel, selecting a profile from the terminal dropdown, or by triggering the ⌃⇧` (Windows, Linux Ctrl+Shift+` ) command. This action creates another entry in the tab list associated with that terminal. Remove terminal instances by hovering a tab and selecting the Trash Can button, selecting a tab item and pressing Delete , using Terminal: Kill the Active Terminal Instance command, or via the right-click context menu. Navigate between terminal groups using focus next ⇧⌘] (Windows, Linux Ctrl+PageDown ) and focus previous ⇧⌘[ (Windows, Linux Ctrl+PageUp ) . Icons may appear to the right of the terminal title on the tab label when a terminal's status changes. Some examples are a bell (macOS) and for tasks, displaying a check mark when there are no errors and an X otherwise. Hover the icon to read status information, which may contain actions. Groups (split panes) Place multiple terminals side-by-side and create a group by splitting a terminal: Hover over an entry in the list of terminals on the right and select the inline split button. Right-click the context menu and select the Split menu option. Alt and click on a tab, the + button, or the single tab on the terminal panel. Trigger the ⌘\ (Windows, Linux Ctrl+Shift+5 ) command. Tip The working directory for the new terminal depends on the terminal.integrated.splitCwd setting . Navigate between terminals in a group by focusing the previous pane, ⌥⌘← (Windows, Linux Alt+Left ) , or the next pane, ⌥⌘→ (Windows, Linux Alt+Right ) . Dragging and dropping tabs in the list rearranges them. Dragging a tab into the main terminal area allows moving a terminal from one group to another. Moving a terminal into its own group can be done with the Terminal: Unsplit Terminal command through the Command Palette or in the right-click context menu. Terminals in editor area You can open terminals in the editor area (terminal editors) with the Terminal: Create New Terminal in Editor Area command, the Terminal: Create New Terminal in Editor Area to the Side command, or by dragging a terminal from the terminal view into the editor area. Terminal editors are presented like regular editor tabs: You can have terminal editors on either side or arranged in multiple dimensions using the editor group layout system, e.g. PowerShell and WSL terminals stacked to the right of file editors: The terminal.integrated.defaultLocation setting can change the default view or editor area terminal location. Terminals in new windows Opening a terminal in a new VS Code window is possible in a few different ways: Use ⌃⇧⌥` (Windows, Linux Ctrl+Shift+Alt+` ) Right-click the terminal tab if you have multiple terminals, or left-click the tab if you only have a single terminal opened. Then select Move Terminal to New Window Select the New Terminal Window entry that's available in several different menus Navigating the buffer The content in the terminal is called the buffer, with the section right above the bottom viewport being called "scrollback". The amount of scrollback kept is determined by the terminal.integrated.scrollback setting and defaults to 1000 lines. There are various commands available to navigate around the terminal buffer: Scroll up a line - ⌥⌘PageUp (Windows Ctrl+Alt+PageUp , Linux Ctrl+Shift+Up ) Scroll down a line - ⌥⌘PageDown (Windows Ctrl+Alt+PageDown , Linux Ctrl+Shift+Down ) Scroll up a page - PageUp (Windows, Linux Shift+PageUp ) Scroll down a page - PageDown (Windows, Linux Shift+PageDown ) Scroll to the top - ⌘Home (Windows Ctrl+Home , Linux Shift+Home ) Scroll to the bottom - ⌘End (Windows Ctrl+End , Linux Shift+End ) Command navigation is also available (see shell integration ): Scroll to the previous command - ⌘↑ (Windows, Linux Ctrl+Up ) Scroll to the next command - ⌘↓ (Windows, Linux Ctrl+Down ) Scrolling will happen instantaneously, but can be configured to animate over a short duration with the terminal.integrated.smoothScrolling setting. Links The terminal features sophisticated link detection with editor integration and even extension contributed link handlers. Hover over a link to display an underline, then hold the Ctrl / Cmd key and click. These built-in link handlers are used in the following priority order: URIs/URLs: Links that look like URIs, such as https://code.visualstudio.com , vscode://path/to/file or file://path/to/file will open using the standard handler for the protocol. For example, https links will open the browser. File links: Links to files that have been verified to exist on the system. These will open the file in a new editor tab and support many common line/column formats such as file:1:2 , file:line 1, column 2 . Folder links: Links to folders are similar to file links but will open a new VS Code window at the folder. Word links: Fallback link type that uses the terminal.integrated.wordSeparators setting. The setting defines word boundaries and make nearly all text into words. Activating a word link searches the workspace for the word. If there is a single result it will open, otherwise it will present the search results. Word links are considered "low confidence" and will not show an underline or tooltip unless you hold the Ctrl / Cmd key. They also have limited support for line and column suffixes. The Open Detected Link command ( ⇧⌘G (Windows, Linux Ctrl+Shift+G ) ) can be used to access links via the keyboard: Tip If link verification causes performance issues, like in high latency remote environments, disable it via the terminal.integrated.enableFileLinks setting . Extensions handling links Extensions can contribute link providers which allow the extension to define what happens when clicked. An example of this is the GitLens extension detecting Git branch links. Keyboard accessibility Links are keyboard accessible through several commands that open links based on the type of link. Terminal: Open Last Local File Link - Opens the most recent local file link. No default keyboard shortcut. Terminal: Open Last URL link - Opens the most recent URI/URL link. No default keyboard shortcut. Terminal: Open Detected Link... - Opens a searchable Quick Pick with all detected links, including word links. The default keyboard shortcut is Ctrl/Cmd+Shift+O , which is the same as the Go to Symbol in Editor keyboard shortcut. Copy & paste The keyboard shortcuts for copy and paste follow platform standards: Linux: Ctrl+Shift+C and Ctrl+Shift+V ; selection paste is available with Shift+Insert macOS: Cmd+C and Cmd+V Windows: Ctrl+C and Ctrl+V Copying is done automatically on selection when terminal.integrated.copyOnSelection is enabled. By default, there is a warning when pasting multiple lines, which can be disabled with the terminal.integrated.enableMultiLinePasteWarning setting. This is only done when the shell does not support "bracketed paste mode". When that mode is enabled, the shell is indicating that it can handle multiple line pasting. Using the mouse Right-click behavior The right-click behavior differs based on the platform: Linux: Show the context menu. macOS: Select the word under the cursor and show the context menu. Windows: Copy and drop selection if there is a selection, otherwise paste. This can be configured using the terminal.integrated.rightClickBehavior setting. The options are: default - Show the context menu. copyPaste - Copy when there is a selection, otherwise paste. paste - Paste on right-click. selectWord - Select the word under the cursor and show the context menu. nothing - Do nothing and pass event to terminal. Column selection Press Alt and left-click drag to select a rectangle of text inside the terminal instead of the regular selection of a line. Reposition the cursor with Alt Alt and left-click will reposition the cursor to underneath the mouse. This works by simulating arrow keystrokes, which may not work reliably for some shells or programs. This feature can be disabled with the terminal.integrated.altClickMovesCursor setting. Mouse events mode When applications running in the terminal turn on mouse events mode, such as Vim mouse mode, mouse interaction is sent to the application instead of the terminal. This means that clicking and dragging will no longer create a selection. Terminal selection can be forced by holding the Alt key on Windows and Linux, this can also be done with the Option key on macOS but requires enabling the terminal.integrated.macOptionClickForcesSelection setting first. Find The integrated terminal has find functionality that can be triggered with ⌘F (Windows, Linux Ctrl+F ) . Tip Ctrl+F can be sent to the shell by removing the workbench.action.terminal.focusFind command from commands to skip shell . Run selected text To use the runSelectedText command, select text in an editor and run the command Terminal: Run Selected Text in Active Terminal via the Command Palette ( ⇧⌘P (Windows, Linux Ctrl+Shift+P ) ), the terminal will attempt to run the selected text. If no text is selected in the active editor, the entire line that the cursor is on will run in the terminal. Tip Also run the active file using the command workbench.action.terminal.runActiveFile . Maximizing the terminal The terminal view can be maximized by clicking the maximize panel size button with the upwards chevron icon. This will temporarily hide the editors and maximize the panel. This is useful to temporarily focus on a large amount of output. Some developers use VS Code as a standalone terminal by opening a new window, maximizing the panel, and hiding the side bar. Note that the panel can only be maximized if its alignment option is set to Center . Select all There is a Terminal: Select All command, which is bound to Cmd+A on macOS, but does not have a default keyboard shortcut on Windows and Linux as it may conflict with shell hotkeys. To use Ctrl+A to select all, add this custom keyboard shortcut: { "key" : "ctrl+a" , "command" : "workbench.action.terminal.selectAll" , "when" : "terminalFocus && !isMac" }, Drag and drop file paths Dragging a file into the terminal will input the path into the terminal, with escaping to match the active shell. Automating terminals with tasks The Tasks feature can be used to automate the launching of terminals, for example, the following .vscode/tasks.json file will launch a Command Prompt and PowerShell terminal in a single terminal group when the window starts: { "version" : "2.0.0" , "presentation" : { "echo" : false , "reveal" : "always" , "focus" : false , "panel" : "dedicated" , "showReuseMessage" : true }, "tasks" : [ { "label" : "Create terminals" , "dependsOn" : [ "First" , "Second" ], // Mark as the default build task so cmd/ctrl+shift+b will create them "group" : { "kind" : "build" , "isDefault" : true }, // Try start the task on folder open "runOptions" : { "runOn" : "folderOpen" } }, { // The name that shows up in terminal tab "label" : "First" , // The task will launch a shell "type" : "shell" , "command" : "" , // Set the shell type "options" : { "shell" : { "executable" : "cmd.exe" , "args" : [] } }, // Mark as a background task to avoid the spinner animation on the terminal tab "isBackground" : true , "problemMatcher" : [], // Create the tasks in a terminal group "presentation" : { "group" : "my-group" } }, { "label" : "Second" , "type" : "shell" , "command" : "" , "options" : { "shell" : { "executable" : "pwsh.exe" , "args" : [] } }, "isBackground" : true , "problemMatcher" : [], "presentation" : { "group" : "my-group" } } ] } This file could be committed to the repository to share with other developers or created as a user task via the workbench.action.tasks.openUserTasks command. Working directory By default, the terminal will open at the folder that is opened in the Explorer. The terminal.integrated.cwd setting allows specifying a custom path to open instead: { "terminal.integrated.cwd" : "/home/user" } Split terminals on Windows will start in the directory that the parent terminal started with. On macOS and Linux, split terminals will inherit the current working directory of the parent terminal. This behavior can be changed using the terminal.integrated.splitCwd setting: { "terminal.integrated.splitCwd" : "workspaceRoot" } There are also extensions available that give more options such as Terminal Here . Fixed dimension terminals The Terminal: Set Fixed Dimensions command allows changing the number of columns and rows that the terminal and it's backing pseudoterminal uses. This will add scroll bars when necessary, which may lead to an unpleasant UX and is generally not recommended, but it is a common ask on Windows in particular for reading logs or long lines when paging tools aren't available. You can also right-click on a terminal tab and select Toggle Size to Content Width ( ⌥Z (Windows, Linux Alt+Z ) ) to resize the number of terminal columns to the largest wrapped line in the terminal. GitHub Copilot in the terminal If you have access to GitHub Copilot , you can use it to get AI-powered help with terminal commands and shell scripting. There are several ways to use Copilot with the terminal: Terminal inline chat Start an inline chat directly in the terminal to get help with shell commands: Open the terminal ( ⌃` (Windows, Linux Ctrl+` ) ) Press ⌘I (Windows, Linux Ctrl+I ) or run the Terminal Inline Chat command from the Command Palette Enter your question or request in natural language, such as: "How do I find the largest files in this directory?" "Show me how to undo the last git commit" "Create a bash script to analyze log files" When Copilot provides a response, you can select Run to execute the command directly or Insert to add it to the terminal for further editing. For more information about using GitHub Copilot with the terminal, see Use terminal inline chat . Terminal chat participant Use the dedicated @terminal chat participant in ask mode in the Chat view: Open the Chat view ( ⌃⌘I (Windows, Linux Ctrl+Alt+I ) ) Start your question with @terminal to direct it to the terminal participant Ask about terminal commands, shell scripting, or explaining terminal output Examples: @terminal list the 5 largest files in this workspace @terminal /explain top shell command @terminal how to grep for patterns recursively Reference terminal context in chat You can include terminal information as context in your chat prompts: Use #terminalSelection to add selected text from the terminal to your chat prompt Use #terminalLastCommand to include the last command you ran in the terminal Next steps The basics of the terminal have been covered in this document. Read on to find out more about: Terminal inline chat - AI-powered suggestions right in your terminal. Tasks - Tasks let you integrate with external tools and leverage the terminal heavily. Mastering VS Code's Terminal - An external blog with plenty of power user tips for the terminal. Explore terminal commands by browsing the keyboard shortcuts within VS Code ( Preferences: Open Keyboard Shortcuts then search on 'terminal'). Common questions I'm having problems launching the terminal There's a dedicated troubleshooting guide for these sorts of problems. How do I create an Admin terminal? The integrated terminal shell is running with the permissions of VS Code. If you need to run a shell command with elevated (administrator) or different permissions, use platform utilities such as runas.exe within a terminal. You can learn more about customizing terminals via terminal profiles in Configuring Profiles . Can I add a keyboard shortcut for the Explorer's Open in Integrated Terminal command? You can open new terminals for specific folders from the Explorer via the Open in Integrated Terminal context menu command. By default, there is no keyboard shortcut associated with Open in Integrated Terminal but you can add your own via the Keyboard Shortcuts editor ( ⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S ) ) to add a keyboard shortcut to your keybindings.json . The keybindings.json example below adds the keyboard shortcut Ctrl+T for openInTerminal . { "key" : "ctrl+t" , "command" : "openInTerminal" , "when" : "filesExplorerFocus" } Why is nvm complaining about a prefix option when the integrated terminal is launched? nvm (Node Version Manager) users often see this error for the first time inside VS Code's integrated terminal: nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local" Run ` npm config delete prefix` or ` nvm use --delete-prefix v8.9.1 --silent ` to unset it This is mostly a macOS problem and does not happen in external terminals. The typical reasons for this are the following: npm was globally installed using another instance of node that is somewhere in your path (such as /usr/local/bin/npm ). To get the development tools on the $PATH , VS Code will launch a bash login shell on startup. This means that your ~/.bash_profile has already run and when an integrated terminal launches, it will run another login shell, reordering the $PATH potentially in unexpected ways. To resolve this issue, you need to track down where the old npm is installed and remove both it and its out-of-date node_modules. Find the nvm initialization script and run which npm before it runs, which should print the path when you launch a new terminal. Once you have the path to npm, find the old node_modules by resolving the symlink by running a command something like this: ls -la /usr/local/bin | grep "np[mx]" This will give you the resolved path at the end: ... npm -> ../lib/node_modules/npm/bin/npm-cli.js ... npx -> ../lib/node_modules/npm/bin/npx-cli.js From there, removing the files and relaunching VS Code should fix the issue: rm /usr/local/bin/npm /usr/local/lib/node_modules/npm/bin/npm-cli.js rm /usr/local/bin/npx /usr/local/lib/node_modules/npm/bin/npx-cli.js Why does macOS make a ding sound when I resize terminal split panes? The keyboard shortcuts ⌃⌘← and ⌃⌘→ are the defaults for resizing individual split panes in the terminal. While they work, they also cause a system "invalid key" sound to play due to an issue in Chromium. The recommended workaround is to tell macOS to no-op for these keyboard shortcuts by running this in your terminal: mkdir -p ~/Library/KeyBindings cat > ~/Library/KeyBindings/DefaultKeyBinding.dict << EOF { "@^\UF700" = "noop:"; "@^\UF701" = "noop:"; "@^\UF702" = "noop:"; "@^\UF703" = "noop:"; "@~^\UF700" = "noop:"; "@~^\UF701" = "noop:"; "@~^\UF702" = "noop:"; "@~^\UF703" = "noop:"; } EOF I'm having problems with the terminal rendering. What can I do? By default, the integrated terminal will render using GPU acceleration on most machines. Typically when there are rendering problems it's an issue of something in your hardware/OS/drivers not playing nicely with the GPU renderer. The first thing to try is to disable GPU acceleration, trading off rendering speed for DOM-based rendering, which is more reliable: { "terminal.integrated.gpuAcceleration" : "off" } See the GPU acceleration section for more information. I see 1~ or [201~ when I paste something This normally means that the program/shell running inside the terminal requested to turn on "bracketed paste mode" but something doesn't support it properly. To work around this, you could run printf "\e[?2004l" to disable it for that session or add the following to your ~/.inputrc file: set enable-bracketed-paste off Alternatively, bracketed paste mode can be forced to ignore the shell's request by turning it off with this setting: { "terminal.integrated.ignoreBracketedPasteMode" : true } Ctrl+A, Ctrl+R output ^A, ^R on zsh This can happen if zsh is in Vim mode instead of Emacs mode, due to setting $EDITOR or $VISUAL to vi / vim in your init scripts. To work around this, you have two options: Ensure that you don't set $EDITOR to vi(m) . However, this isn't an option if you want your Git editor to work. Add bindkey -e to your init script to set Emacs explicitly. How can I configure Cmd+. to map to Ctrl+C like macOS' built-in terminal? The macOS default terminal uses Cmd+. to perform the same as Ctrl+C . To get this behavior in VS Code, add this custom keyboard shortcut : { "key" : "cmd+." , "command" : "workbench.action.terminal.sendSequence" , "when" : "terminalFocus" , "args" : { "text" : " \u0003 " } } Why are the colors in the terminal not correct? One of our accessibility features we enable by default is to ensure a minimum contrast ratio of at least 4.5 is met for the foreground text. This feature ensures that text is readable regardless of the shell and theme used which is not possible otherwise. To disable this feature, you can set: "terminal.integrated.minimumContrastRatio" : 1 See the minimum contrast ratio section for more information. 4/8/2026
Markdown
[Visual Studio Code](https://code.visualstudio.com/) - [Docs](https://code.visualstudio.com/docs) - [Updates](https://code.visualstudio.com/updates) - [Blog](https://code.visualstudio.com/blogs) - [API](https://code.visualstudio.com/api) - [Extensions](https://marketplace.visualstudio.com/VSCode) - [MCP](https://code.visualstudio.com/mcp) - [FAQ](https://code.visualstudio.com/docs/supporting/faq) - [Learn](https://code.visualstudio.com/learn) - [Events](https://aka.ms/vscode/live) - [Download](https://code.visualstudio.com/Download) ![](https://code.visualstudio.com/assets/icons/search-dark.svg) ![](https://code.visualstudio.com/assets/icons/search.svg) Search Ctrl+Shift+P ![Switch to the dark theme](https://code.visualstudio.com/assets/icons/theme-light.svg) ![Switch to the light theme](https://code.visualstudio.com/assets/icons/theme-dark.svg) [Download](https://code.visualstudio.com/Download) Explore Agentic Development - [Join a GitHub Copilot Dev Day near you\!](https://aka.ms/githubcopilotdevdays) Dismiss this update #### Documentation - [Overview](https://code.visualstudio.com/docs) - [Setup](https://code.visualstudio.com/docs/terminal/basics#setup-articles) - [Overview](https://code.visualstudio.com/docs/setup/setup-overview) - [Linux](https://code.visualstudio.com/docs/setup/linux) - [macOS](https://code.visualstudio.com/docs/setup/mac) - [Windows](https://code.visualstudio.com/docs/setup/windows) - [VS Code for the Web](https://code.visualstudio.com/docs/setup/vscode-web) - [Raspberry Pi](https://code.visualstudio.com/docs/setup/raspberry-pi) - [Network](https://code.visualstudio.com/docs/setup/network) - [Additional Components](https://code.visualstudio.com/docs/setup/additional-components) - [Uninstall](https://code.visualstudio.com/docs/setup/uninstall) - [Get Started](https://code.visualstudio.com/docs/terminal/basics#getstarted-articles) - [VS Code Tutorial](https://code.visualstudio.com/docs/getstarted/getting-started) - [Copilot Quickstart](https://code.visualstudio.com/docs/getstarted/copilot-quickstart) - [User Interface](https://code.visualstudio.com/docs/getstarted/userinterface) - [Personalize VS Code](https://code.visualstudio.com/docs/getstarted/personalize-vscode) - [Install Extensions](https://code.visualstudio.com/docs/getstarted/extensions) - [Tips and Tricks](https://code.visualstudio.com/docs/getstarted/tips-and-tricks) - [Intro Videos](https://code.visualstudio.com/docs/getstarted/introvideos) - [GitHub Copilot](https://code.visualstudio.com/docs/terminal/basics#copilot-articles) - [Overview](https://code.visualstudio.com/docs/copilot/overview) - [Setup](https://code.visualstudio.com/docs/copilot/setup) - [Quickstart](https://code.visualstudio.com/docs/copilot/getting-started) - [Concepts](https://code.visualstudio.com/docs/terminal/basics#copilot-concepts-articles) - [Overview](https://code.visualstudio.com/docs/copilot/concepts/overview) - [Language Models](https://code.visualstudio.com/docs/copilot/concepts/language-models) - [Context](https://code.visualstudio.com/docs/copilot/concepts/context) - [Tools](https://code.visualstudio.com/docs/copilot/concepts/tools) - [Agents](https://code.visualstudio.com/docs/copilot/concepts/agents) - [Customization](https://code.visualstudio.com/docs/copilot/concepts/customization) - [Trust & Safety](https://code.visualstudio.com/docs/copilot/concepts/trust-and-safety) - [Agents](https://code.visualstudio.com/docs/terminal/basics#copilot-agents-articles) - [Overview](https://code.visualstudio.com/docs/copilot/agents/overview) - [Agents Tutorial](https://code.visualstudio.com/docs/copilot/agents/agents-tutorial) - [Planning](https://code.visualstudio.com/docs/copilot/agents/planning) - [Memory](https://code.visualstudio.com/docs/copilot/agents/memory) - [Tools](https://code.visualstudio.com/docs/copilot/agents/agent-tools) - [Subagents](https://code.visualstudio.com/docs/copilot/agents/subagents) - [Local Agents](https://code.visualstudio.com/docs/copilot/agents/local-agents) - [Copilot CLI](https://code.visualstudio.com/docs/copilot/agents/copilot-cli) - [Cloud Agents](https://code.visualstudio.com/docs/copilot/agents/cloud-agents) - [Third-Party Agents](https://code.visualstudio.com/docs/copilot/agents/third-party-agents) - [Chat](https://code.visualstudio.com/docs/terminal/basics#copilot-chat-articles) - [Overview](https://code.visualstudio.com/docs/copilot/chat/copilot-chat) - [Chat Sessions](https://code.visualstudio.com/docs/copilot/chat/chat-sessions) - [Add Context](https://code.visualstudio.com/docs/copilot/chat/copilot-chat-context) - [Inline Chat](https://code.visualstudio.com/docs/copilot/chat/inline-chat) - [Review Edits](https://code.visualstudio.com/docs/copilot/chat/review-code-edits) - [Checkpoints](https://code.visualstudio.com/docs/copilot/chat/chat-checkpoints) - [Debug Chat Interactions](https://code.visualstudio.com/docs/copilot/chat/chat-debug-view) - [Prompt Examples](https://code.visualstudio.com/docs/copilot/chat/prompt-examples) - [Customization](https://code.visualstudio.com/docs/terminal/basics#copilot-customization-articles) - [Overview](https://code.visualstudio.com/docs/copilot/customization/overview) - [Instructions](https://code.visualstudio.com/docs/copilot/customization/custom-instructions) - [Prompt Files](https://code.visualstudio.com/docs/copilot/customization/prompt-files) - [Custom Agents](https://code.visualstudio.com/docs/copilot/customization/custom-agents) - [Agent Skills](https://code.visualstudio.com/docs/copilot/customization/agent-skills) - [Language Models](https://code.visualstudio.com/docs/copilot/customization/language-models) - [MCP](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) - [Hooks](https://code.visualstudio.com/docs/copilot/customization/hooks) - [Plugins](https://code.visualstudio.com/docs/copilot/customization/agent-plugins) - [Guides & Tutorials](https://code.visualstudio.com/docs/terminal/basics#copilot-guides-articles) - [Context Engineering](https://code.visualstudio.com/docs/copilot/guides/context-engineering-guide) - [Customize AI](https://code.visualstudio.com/docs/copilot/guides/customize-copilot-guide) - [Test-Driven Development](https://code.visualstudio.com/docs/copilot/guides/test-driven-development-guide) - [Edit Notebooks with AI](https://code.visualstudio.com/docs/copilot/guides/notebooks-with-ai) - [Test with AI](https://code.visualstudio.com/docs/copilot/guides/test-with-copilot) - [Test Web Apps with Browser Tools](https://code.visualstudio.com/docs/copilot/guides/browser-agent-testing-guide) - [Debug with AI](https://code.visualstudio.com/docs/copilot/guides/debug-with-copilot) - [MCP Dev Guide](https://code.visualstudio.com/docs/copilot/guides/mcp-developer-guide) - [Monitoring](https://code.visualstudio.com/docs/copilot/guides/monitoring-agents) - [Inline Suggestions](https://code.visualstudio.com/docs/copilot/ai-powered-suggestions) - [Smart Actions](https://code.visualstudio.com/docs/copilot/copilot-smart-actions) - [Best Practices](https://code.visualstudio.com/docs/copilot/best-practices) - [Security](https://code.visualstudio.com/docs/copilot/security) - [Troubleshooting](https://code.visualstudio.com/docs/copilot/troubleshooting) - [FAQ](https://code.visualstudio.com/docs/copilot/faq) - [Reference](https://code.visualstudio.com/docs/terminal/basics#copilot-reference-articles) - [Cheat Sheet](https://code.visualstudio.com/docs/copilot/reference/copilot-vscode-features) - [Settings Reference](https://code.visualstudio.com/docs/copilot/reference/copilot-settings) - [MCP Configuration](https://code.visualstudio.com/docs/copilot/reference/mcp-configuration) - [Workspace Context](https://code.visualstudio.com/docs/copilot/reference/workspace-context) - [Configure](https://code.visualstudio.com/docs/terminal/basics#configure-articles) - [Display Language](https://code.visualstudio.com/docs/configure/locales) - [Layout](https://code.visualstudio.com/docs/configure/custom-layout) - [Keyboard Shortcuts](https://code.visualstudio.com/docs/configure/keybindings) - [Settings](https://code.visualstudio.com/docs/configure/settings) - [Settings Sync](https://code.visualstudio.com/docs/configure/settings-sync) - [Extensions](https://code.visualstudio.com/docs/terminal/basics#configure-extensions-articles) - [Extension Marketplace](https://code.visualstudio.com/docs/configure/extensions/extension-marketplace) - [Extension Runtime Security](https://code.visualstudio.com/docs/configure/extensions/extension-runtime-security) - [Themes](https://code.visualstudio.com/docs/configure/themes) - [Profiles](https://code.visualstudio.com/docs/configure/profiles) - [Accessibility](https://code.visualstudio.com/docs/terminal/basics#configure-accessibility-articles) - [Overview](https://code.visualstudio.com/docs/configure/accessibility/accessibility) - [Voice Interactions](https://code.visualstudio.com/docs/configure/accessibility/voice) - [Command Line Interface](https://code.visualstudio.com/docs/configure/command-line) - [Telemetry](https://code.visualstudio.com/docs/configure/telemetry) - [Edit Code](https://code.visualstudio.com/docs/terminal/basics#editing-articles) - [Basic Editing](https://code.visualstudio.com/docs/editing/codebasics) - [IntelliSense](https://code.visualstudio.com/docs/editing/intellisense) - [Code Navigation](https://code.visualstudio.com/docs/editing/editingevolved) - [Refactoring](https://code.visualstudio.com/docs/editing/refactoring) - [Snippets](https://code.visualstudio.com/docs/editing/userdefinedsnippets) - [Workspaces](https://code.visualstudio.com/docs/terminal/basics#editing-workspaces-articles) - [Overview](https://code.visualstudio.com/docs/editing/workspaces/workspaces) - [Multi-Root Workspaces](https://code.visualstudio.com/docs/editing/workspaces/multi-root-workspaces) - [Workspace Trust](https://code.visualstudio.com/docs/editing/workspaces/workspace-trust) - [Build, Debug, Test](https://code.visualstudio.com/docs/terminal/basics#debugtest-articles) - [Tasks](https://code.visualstudio.com/docs/debugtest/tasks) - [Debugging](https://code.visualstudio.com/docs/debugtest/debugging) - [Debug Configuration](https://code.visualstudio.com/docs/debugtest/debugging-configuration) - [Testing](https://code.visualstudio.com/docs/debugtest/testing) - [Port Forwarding](https://code.visualstudio.com/docs/debugtest/port-forwarding) - [Integrated Browser](https://code.visualstudio.com/docs/debugtest/integrated-browser) - [Source Control](https://code.visualstudio.com/docs/terminal/basics#sourcecontrol-articles) - [Overview](https://code.visualstudio.com/docs/sourcecontrol/overview) - [Quickstart](https://code.visualstudio.com/docs/sourcecontrol/quickstart) - [Staging & Committing](https://code.visualstudio.com/docs/sourcecontrol/staging-commits) - [Branches & Worktrees](https://code.visualstudio.com/docs/sourcecontrol/branches-worktrees) - [Repositories & Remotes](https://code.visualstudio.com/docs/sourcecontrol/repos-remotes) - [Merge Conflicts](https://code.visualstudio.com/docs/sourcecontrol/merge-conflicts) - [Collaborate on GitHub](https://code.visualstudio.com/docs/sourcecontrol/github) - [Troubleshooting](https://code.visualstudio.com/docs/sourcecontrol/troubleshooting) - [FAQ](https://code.visualstudio.com/docs/sourcecontrol/faq) - [Terminal](https://code.visualstudio.com/docs/terminal/basics#terminal-articles) - [Getting Started Tutorial](https://code.visualstudio.com/docs/terminal/getting-started) - [Terminal Basics](https://code.visualstudio.com/docs/terminal/basics) - [Terminal Profiles](https://code.visualstudio.com/docs/terminal/profiles) - [Shell Integration](https://code.visualstudio.com/docs/terminal/shell-integration) - [Appearance](https://code.visualstudio.com/docs/terminal/appearance) - [Advanced](https://code.visualstudio.com/docs/terminal/advanced) - [Enterprise](https://code.visualstudio.com/docs/terminal/basics#enterprise-articles) - [Overview](https://code.visualstudio.com/docs/enterprise/overview) - [Enterprise Policies](https://code.visualstudio.com/docs/enterprise/policies) - [AI Settings](https://code.visualstudio.com/docs/enterprise/ai-settings) - [Extensions](https://code.visualstudio.com/docs/enterprise/extensions) - [Telemetry](https://code.visualstudio.com/docs/enterprise/telemetry) - [Updates](https://code.visualstudio.com/docs/enterprise/updates) - [Languages](https://code.visualstudio.com/docs/terminal/basics#languages-articles) - [Overview](https://code.visualstudio.com/docs/languages/overview) - [JavaScript](https://code.visualstudio.com/docs/languages/javascript) - [JSON](https://code.visualstudio.com/docs/languages/json) - [HTML](https://code.visualstudio.com/docs/languages/html) - [Emmet](https://code.visualstudio.com/docs/languages/emmet) - [CSS, SCSS and Less](https://code.visualstudio.com/docs/languages/css) - [TypeScript](https://code.visualstudio.com/docs/languages/typescript) - [Markdown](https://code.visualstudio.com/docs/languages/markdown) - [PowerShell](https://code.visualstudio.com/docs/languages/powershell) - [C++](https://code.visualstudio.com/docs/languages/cpp) - [Java](https://code.visualstudio.com/docs/languages/java) - [PHP](https://code.visualstudio.com/docs/languages/php) - [Python](https://code.visualstudio.com/docs/languages/python) - [Julia](https://code.visualstudio.com/docs/languages/julia) - [R](https://code.visualstudio.com/docs/languages/r) - [Ruby](https://code.visualstudio.com/docs/languages/ruby) - [Rust](https://code.visualstudio.com/docs/languages/rust) - [Go](https://code.visualstudio.com/docs/languages/go) - [T-SQL](https://code.visualstudio.com/docs/languages/tsql) - [C\#](https://code.visualstudio.com/docs/languages/csharp) - [.NET](https://code.visualstudio.com/docs/languages/dotnet) - [Swift](https://code.visualstudio.com/docs/languages/swift) - [Node.js / JavaScript](https://code.visualstudio.com/docs/terminal/basics#nodejs-articles) - [Working with JavaScript](https://code.visualstudio.com/docs/nodejs/working-with-javascript) - [Node.js Tutorial](https://code.visualstudio.com/docs/nodejs/nodejs-tutorial) - [Node.js Debugging](https://code.visualstudio.com/docs/nodejs/nodejs-debugging) - [Deploy Node.js Apps](https://code.visualstudio.com/docs/nodejs/nodejs-deployment) - [Browser Debugging](https://code.visualstudio.com/docs/nodejs/browser-debugging) - [Angular Tutorial](https://code.visualstudio.com/docs/nodejs/angular-tutorial) - [React Tutorial](https://code.visualstudio.com/docs/nodejs/reactjs-tutorial) - [Vue Tutorial](https://code.visualstudio.com/docs/nodejs/vuejs-tutorial) - [Debugging Recipes](https://code.visualstudio.com/docs/nodejs/debugging-recipes) - [Performance Profiling](https://code.visualstudio.com/docs/nodejs/profiling) - [Extensions](https://code.visualstudio.com/docs/nodejs/extensions) - [TypeScript](https://code.visualstudio.com/docs/terminal/basics#typescript-articles) - [Tutorial](https://code.visualstudio.com/docs/typescript/typescript-tutorial) - [Transpiling](https://code.visualstudio.com/docs/typescript/typescript-transpiling) - [Editing](https://code.visualstudio.com/docs/typescript/typescript-editing) - [Refactoring](https://code.visualstudio.com/docs/typescript/typescript-refactoring) - [Debugging](https://code.visualstudio.com/docs/typescript/typescript-debugging) - [Python](https://code.visualstudio.com/docs/terminal/basics#python-articles) - [Quick Start](https://code.visualstudio.com/docs/python/python-quick-start) - [Tutorial](https://code.visualstudio.com/docs/python/python-tutorial) - [Run Python Code](https://code.visualstudio.com/docs/python/run) - [Editing](https://code.visualstudio.com/docs/python/editing) - [Linting](https://code.visualstudio.com/docs/python/linting) - [Formatting](https://code.visualstudio.com/docs/python/formatting) - [Debugging](https://code.visualstudio.com/docs/python/debugging) - [Environments](https://code.visualstudio.com/docs/python/environments) - [Testing](https://code.visualstudio.com/docs/python/testing) - [Python Interactive](https://code.visualstudio.com/docs/python/jupyter-support-py) - [Django Tutorial](https://code.visualstudio.com/docs/python/tutorial-django) - [FastAPI Tutorial](https://code.visualstudio.com/docs/python/tutorial-fastapi) - [Flask Tutorial](https://code.visualstudio.com/docs/python/tutorial-flask) - [Create Containers](https://code.visualstudio.com/docs/python/tutorial-create-containers) - [Deploy Python Apps](https://code.visualstudio.com/docs/python/python-on-azure) - [Python in the Web](https://code.visualstudio.com/docs/python/python-web) - [Settings Reference](https://code.visualstudio.com/docs/python/settings-reference) - [Java](https://code.visualstudio.com/docs/terminal/basics#java-articles) - [Getting Started](https://code.visualstudio.com/docs/java/java-tutorial) - [Navigate and Edit](https://code.visualstudio.com/docs/java/java-editing) - [Refactoring](https://code.visualstudio.com/docs/java/java-refactoring) - [Formatting and Linting](https://code.visualstudio.com/docs/java/java-linting) - [Project Management](https://code.visualstudio.com/docs/java/java-project) - [Build Tools](https://code.visualstudio.com/docs/java/java-build) - [Run and Debug](https://code.visualstudio.com/docs/java/java-debugging) - [Testing](https://code.visualstudio.com/docs/java/java-testing) - [Spring Boot](https://code.visualstudio.com/docs/java/java-spring-boot) - [Modernizing Java Apps](https://code.visualstudio.com/docs/java/java-app-mod) - [Application Servers](https://code.visualstudio.com/docs/java/java-tomcat-jetty) - [Deploy Java Apps](https://code.visualstudio.com/docs/java/java-on-azure) - [GUI Applications](https://code.visualstudio.com/docs/java/java-gui) - [Extensions](https://code.visualstudio.com/docs/java/extensions) - [FAQ](https://code.visualstudio.com/docs/java/java-faq) - [C++](https://code.visualstudio.com/docs/terminal/basics#cpp-articles) - [Intro Videos](https://code.visualstudio.com/docs/cpp/introvideos-cpp) - [GCC on Linux](https://code.visualstudio.com/docs/cpp/config-linux) - [GCC on Windows](https://code.visualstudio.com/docs/cpp/config-mingw) - [GCC on Windows Subsystem for Linux](https://code.visualstudio.com/docs/cpp/config-wsl) - [Clang on macOS](https://code.visualstudio.com/docs/cpp/config-clang-mac) - [Microsoft C++ on Windows](https://code.visualstudio.com/docs/cpp/config-msvc) - [Build with CMake](https://code.visualstudio.com/docs/cpp/build-with-cmake) - [CMake Tools on Linux](https://code.visualstudio.com/docs/cpp/cmake-linux) - [CMake Quick Start](https://code.visualstudio.com/docs/cpp/cmake-quickstart) - [C++ Dev Tools for Copilot](https://code.visualstudio.com/docs/cpp/cpp-devtools) - [Editing and Navigating](https://code.visualstudio.com/docs/cpp/cpp-ide) - [Debugging](https://code.visualstudio.com/docs/cpp/cpp-debug) - [Configure Debugging](https://code.visualstudio.com/docs/cpp/launch-json-reference) - [Refactoring](https://code.visualstudio.com/docs/cpp/cpp-refactoring) - [Settings Reference](https://code.visualstudio.com/docs/cpp/customize-cpp-settings) - [Configure IntelliSense](https://code.visualstudio.com/docs/cpp/configure-intellisense) - [Configure IntelliSense for Cross-Compiling](https://code.visualstudio.com/docs/cpp/configure-intellisense-crosscompilation) - [FAQ](https://code.visualstudio.com/docs/cpp/faq-cpp) - [C\#](https://code.visualstudio.com/docs/terminal/basics#csharp-articles) - [Intro Videos](https://code.visualstudio.com/docs/csharp/introvideos-csharp) - [Get Started](https://code.visualstudio.com/docs/csharp/get-started) - [Navigate and Edit](https://code.visualstudio.com/docs/csharp/navigate-edit) - [IntelliCode](https://code.visualstudio.com/docs/csharp/intellicode) - [Refactoring](https://code.visualstudio.com/docs/csharp/refactoring) - [Formatting and Linting](https://code.visualstudio.com/docs/csharp/formatting-linting) - [Project Management](https://code.visualstudio.com/docs/csharp/project-management) - [Build Tools](https://code.visualstudio.com/docs/csharp/build-tools) - [Package Management](https://code.visualstudio.com/docs/csharp/package-management) - [Run and Debug](https://code.visualstudio.com/docs/csharp/debugging) - [Testing](https://code.visualstudio.com/docs/csharp/testing) - [FAQ](https://code.visualstudio.com/docs/csharp/cs-dev-kit-faq) - [Container Tools](https://code.visualstudio.com/docs/terminal/basics#containers-articles) - [Overview](https://code.visualstudio.com/docs/containers/overview) - [Node.js](https://code.visualstudio.com/docs/containers/quickstart-node) - [Python](https://code.visualstudio.com/docs/containers/quickstart-python) - [ASP.NET Core](https://code.visualstudio.com/docs/containers/quickstart-aspnet-core) - [Debug](https://code.visualstudio.com/docs/containers/debug-common) - [Docker Compose](https://code.visualstudio.com/docs/containers/docker-compose) - [Registries](https://code.visualstudio.com/docs/containers/quickstart-container-registries) - [Deploy to Azure](https://code.visualstudio.com/docs/containers/app-service) - [Choose a Dev Environment](https://code.visualstudio.com/docs/containers/choosing-dev-environment) - [Customize](https://code.visualstudio.com/docs/containers/reference) - [Develop with Kubernetes](https://code.visualstudio.com/docs/containers/bridge-to-kubernetes) - [Tips and Tricks](https://code.visualstudio.com/docs/containers/troubleshooting) - [Data Science](https://code.visualstudio.com/docs/terminal/basics#datascience-articles) - [Overview](https://code.visualstudio.com/docs/datascience/overview) - [Jupyter Notebooks](https://code.visualstudio.com/docs/datascience/jupyter-notebooks) - [Data Science Tutorial](https://code.visualstudio.com/docs/datascience/data-science-tutorial) - [Python Interactive](https://code.visualstudio.com/docs/datascience/python-interactive) - [Data Wrangler Quick Start](https://code.visualstudio.com/docs/datascience/data-wrangler-quick-start) - [Data Wrangler](https://code.visualstudio.com/docs/datascience/data-wrangler) - [PyTorch Support](https://code.visualstudio.com/docs/datascience/pytorch-support) - [Azure Machine Learning](https://code.visualstudio.com/docs/datascience/azure-machine-learning) - [Manage Jupyter Kernels](https://code.visualstudio.com/docs/datascience/jupyter-kernel-management) - [Jupyter Notebooks on the Web](https://code.visualstudio.com/docs/datascience/notebooks-web) - [Data Science in Microsoft Fabric](https://code.visualstudio.com/docs/datascience/microsoft-fabric-quickstart) - [Intelligent Apps](https://code.visualstudio.com/docs/terminal/basics#intelligentapps-articles) - [AI Toolkit Overview](https://code.visualstudio.com/docs/intelligentapps/overview) - [AI Toolkit Copilot Tools](https://code.visualstudio.com/docs/intelligentapps/copilot-tools) - [Models](https://code.visualstudio.com/docs/intelligentapps/models) - [Playground](https://code.visualstudio.com/docs/intelligentapps/playground) - [Agent Builder](https://code.visualstudio.com/docs/intelligentapps/agentbuilder) - [Agent Inspector](https://code.visualstudio.com/docs/intelligentapps/agent-inspector) - [Migrating from Visualizer to Agent Inspector](https://code.visualstudio.com/docs/intelligentapps/migrate-from-visualizer) - [Bulk Run](https://code.visualstudio.com/docs/intelligentapps/bulkrun) - [Evaluation](https://code.visualstudio.com/docs/intelligentapps/evaluation) - [Fine-Tuning (Automated Setup)](https://code.visualstudio.com/docs/intelligentapps/finetune) - [Fine-Tuning (Project Template)](https://code.visualstudio.com/docs/intelligentapps/finetune-legacy) - [Model Conversion](https://code.visualstudio.com/docs/intelligentapps/modelconversion) - [Tracing](https://code.visualstudio.com/docs/intelligentapps/tracing) - [Profiling (Windows ML)](https://code.visualstudio.com/docs/intelligentapps/profiling) - [FAQ](https://code.visualstudio.com/docs/intelligentapps/faq) - [Reference](https://code.visualstudio.com/docs/terminal/basics#intelligentapps-reference-articles) - [File Structure](https://code.visualstudio.com/docs/intelligentapps/reference/FileStructure) - [Manual Model Conversion](https://code.visualstudio.com/docs/intelligentapps/reference/ManualModelConversion) - [Manual Model Conversion on GPU](https://code.visualstudio.com/docs/intelligentapps/reference/ManualConversionOnGPU) - [Setup Environment Without AI Toolkit](https://code.visualstudio.com/docs/intelligentapps/reference/SetupWithoutAITK) - [Template Project](https://code.visualstudio.com/docs/intelligentapps/reference/TemplateProject) - [Azure](https://code.visualstudio.com/docs/terminal/basics#azure-articles) - [Overview](https://code.visualstudio.com/docs/azure/overview) - [Getting Started](https://code.visualstudio.com/docs/azure/gettingstarted) - [Resources View](https://code.visualstudio.com/docs/azure/resourcesextension) - [Deployment](https://code.visualstudio.com/docs/azure/deployment) - [VS Code for the Web - Azure](https://code.visualstudio.com/docs/azure/vscodeforweb) - [Containers](https://code.visualstudio.com/docs/azure/containers) - [Azure Kubernetes Service](https://code.visualstudio.com/docs/azure/aksextensions) - [Kubernetes](https://code.visualstudio.com/docs/azure/kubernetes) - [MongoDB](https://code.visualstudio.com/docs/azure/mongodb) - [Remote Debugging for Node.js](https://code.visualstudio.com/docs/azure/remote-debugging) - [Remote](https://code.visualstudio.com/docs/terminal/basics#remote-articles) - [Overview](https://code.visualstudio.com/docs/remote/remote-overview) - [SSH](https://code.visualstudio.com/docs/remote/ssh) - [Dev Containers](https://code.visualstudio.com/docs/remote/dev-containers) - [Windows Subsystem for Linux](https://code.visualstudio.com/docs/remote/wsl) - [GitHub Codespaces](https://code.visualstudio.com/docs/remote/codespaces) - [VS Code Server](https://code.visualstudio.com/docs/remote/vscode-server) - [Tunnels](https://code.visualstudio.com/docs/remote/tunnels) - [SSH Tutorial](https://code.visualstudio.com/docs/remote/ssh-tutorial) - [WSL Tutorial](https://code.visualstudio.com/docs/remote/wsl-tutorial) - [Tips and Tricks](https://code.visualstudio.com/docs/remote/troubleshooting) - [FAQ](https://code.visualstudio.com/docs/remote/faq) - [Dev Containers](https://code.visualstudio.com/docs/terminal/basics#devcontainers-articles) - [Overview](https://code.visualstudio.com/docs/devcontainers/containers) - [Tutorial](https://code.visualstudio.com/docs/devcontainers/tutorial) - [Attach to Container](https://code.visualstudio.com/docs/devcontainers/attach-container) - [Create Dev Container](https://code.visualstudio.com/docs/devcontainers/create-dev-container) - [Advanced Containers](https://code.visualstudio.com/docs/devcontainers/containers-advanced) - [devcontainer.json](https://code.visualstudio.com/docs/devcontainers/devcontainerjson-reference) - [Dev Container CLI](https://code.visualstudio.com/docs/devcontainers/devcontainer-cli) - [Tips and Tricks](https://code.visualstudio.com/docs/devcontainers/tips-and-tricks) - [FAQ](https://code.visualstudio.com/docs/devcontainers/faq) - [Reference](https://code.visualstudio.com/docs/terminal/basics#reference-articles) - [Default Keyboard Shortcuts](https://code.visualstudio.com/docs/reference/default-keybindings) - [Default Settings](https://code.visualstudio.com/docs/reference/default-settings) - [Substitution Variables](https://code.visualstudio.com/docs/reference/variables-reference) - [Tasks Schema](https://code.visualstudio.com/docs/reference/tasks-appendix) Topics Copy as Markdown - Copy as Markdown - View as Markdown #### On this page there are 19 sectionsOn this page - [Terminal shells](https://code.visualstudio.com/docs/terminal/basics#_terminal-shells) - [Managing terminals](https://code.visualstudio.com/docs/terminal/basics#_managing-terminals) - [Terminals in editor area](https://code.visualstudio.com/docs/terminal/basics#_terminals-in-editor-area) - [Terminals in new windows](https://code.visualstudio.com/docs/terminal/basics#_terminals-in-new-windows) - [Navigating the buffer](https://code.visualstudio.com/docs/terminal/basics#_navigating-the-buffer) - [Links](https://code.visualstudio.com/docs/terminal/basics#_links) - [Copy & paste](https://code.visualstudio.com/docs/terminal/basics#_copy-paste) - [Using the mouse](https://code.visualstudio.com/docs/terminal/basics#_using-the-mouse) - [Find](https://code.visualstudio.com/docs/terminal/basics#_find) - [Run selected text](https://code.visualstudio.com/docs/terminal/basics#_run-selected-text) - [Maximizing the terminal](https://code.visualstudio.com/docs/terminal/basics#_maximizing-the-terminal) - [Select all](https://code.visualstudio.com/docs/terminal/basics#_select-all) - [Drag and drop file paths](https://code.visualstudio.com/docs/terminal/basics#_drag-and-drop-file-paths) - [Automating terminals with tasks](https://code.visualstudio.com/docs/terminal/basics#_automating-terminals-with-tasks) - [Working directory](https://code.visualstudio.com/docs/terminal/basics#_working-directory) - [Fixed dimension terminals](https://code.visualstudio.com/docs/terminal/basics#_fixed-dimension-terminals) - [GitHub Copilot in the terminal](https://code.visualstudio.com/docs/terminal/basics#_github-copilot-in-the-terminal) - [Next steps](https://code.visualstudio.com/docs/terminal/basics#_next-steps) - [Common questions](https://code.visualstudio.com/docs/terminal/basics#_common-questions) # Terminal Basics Visual Studio Code includes a full featured integrated terminal that starts at the root of your workspace. It provides integration with the editor to support features like [links](https://code.visualstudio.com/docs/terminal/basics#_links) and [error detection](https://code.visualstudio.com/docs/debugtest/tasks). The integrated terminal can run commands such as mkdir and git just like a standalone terminal. You can open a terminal as follows: - From the menu, use the **Terminal** \> **New Terminal** or **View** \> **Terminal** menu commands. - From the **Command Palette** (⇧⌘P (Windows, Linux Ctrl+Shift+P)), use the **View: Toggle Terminal** command. - In the Explorer, you can use the **Open in Integrated Terminal** context menu command to open a new terminal from a folder. - To toggle the terminal panel, use the ⌃\` (Windows, Linux Ctrl+\`) keyboard shortcut. - To create a new terminal, use the ⌃⇧\` (Windows, Linux Ctrl+Shift+\`) keyboard shortcut. VS Code's terminal has additional functionality called shell integration that tracks where commands are run with decorations on the left of a command and in the scrollbar: ![The integrated terminal can run commands such as mkdir and git just like a standalone terminal. VS Code's terminal has additional functionality called shell integration that tracks where commands are run with decorations on the left of a command and in the scrollbar.](https://code.visualstudio.com/assets/docs/terminal/basics/integrated-terminal.png) Note If you prefer to work outside VS Code, open an external terminal with the ⇧⌘C (Windows, Linux Ctrl+Shift+C) keyboard shortcut ## [Terminal shells](https://code.visualstudio.com/docs/terminal/basics#_terminal-shells) The integrated terminal can use various shells installed on your machine, with the default being pulled from your system defaults. Shells are detected and presented in the terminal profiles dropdown. ![A detected profile can be chosen in the dropdown next to the new terminal button. Some examples on Windows include PowerShell, Command Prompt, Git Bash and WSL](https://code.visualstudio.com/assets/docs/terminal/basics/select-profile-dropdown.png) You can learn more about configuring terminal shells in the [terminal profiles](https://code.visualstudio.com/docs/terminal/profiles) article. ## [Managing terminals](https://code.visualstudio.com/docs/terminal/basics#_managing-terminals) The terminal tabs UI is on the right side of the terminal view. Each terminal has an entry with its name, icon, color, and group decoration (if any). ![Activating the Launch Profile button will show all detected and manually configured profiles](https://code.visualstudio.com/assets/docs/terminal/basics/tabs.png) Add terminal instances by selecting the **\+** icon on the top-right of the **TERMINAL** panel, selecting a profile from the terminal dropdown, or by triggering the ⌃⇧\` (Windows, Linux Ctrl+Shift+\`) command. This action creates another entry in the tab list associated with that terminal. Remove terminal instances by hovering a tab and selecting the **Trash Can** button, selecting a tab item and pressing Delete, using **Terminal: Kill the Active Terminal Instance** command, or via the right-click context menu. Navigate between terminal groups using focus next ⇧⌘\] (Windows, Linux Ctrl+PageDown) and focus previous ⇧⌘\[ (Windows, Linux Ctrl+PageUp). Icons may appear to the right of the terminal title on the tab label when a terminal's status changes. Some examples are a bell (macOS) and for tasks, displaying a check mark when there are no errors and an X otherwise. Hover the icon to read status information, which may contain actions. ### [Groups (split panes)](https://code.visualstudio.com/docs/terminal/basics#_groups-split-panes) Place multiple terminals side-by-side and create a group by splitting a terminal: - Hover over an entry in the list of terminals on the right and select the inline split button. - Right-click the context menu and select the **Split** menu option. - Alt and click on a tab, the **\+** button, or the single tab on the terminal panel. - Trigger the ⌘\\ (Windows, Linux Ctrl+Shift+5) command. Tip The working directory for the new terminal depends on the terminal.integrated.splitCwd Open in VS Code Open in VS Code Insiders [setting](https://code.visualstudio.com/docs/configure/settings). Navigate between terminals in a group by focusing the previous pane, ⌥⌘← (Windows, Linux Alt+Left), or the next pane, ⌥⌘→ (Windows, Linux Alt+Right). Dragging and dropping tabs in the list rearranges them. Dragging a tab into the main terminal area allows moving a terminal from one group to another. Moving a terminal into its own group can be done with the **Terminal: Unsplit Terminal** command through the Command Palette or in the right-click context menu. ## [Terminals in editor area](https://code.visualstudio.com/docs/terminal/basics#_terminals-in-editor-area) You can open terminals in the editor area (terminal editors) with the **Terminal: Create New Terminal in Editor Area** command, the **Terminal: Create New Terminal in Editor Area to the Side** command, or by dragging a terminal from the terminal view into the editor area. Terminal editors are presented like regular editor tabs: ![Terminal editors are presented like regular text file tabs](https://code.visualstudio.com/assets/docs/terminal/basics/terminal-editor.png) You can have terminal editors on either side or arranged in multiple dimensions using the editor group layout system, e.g. PowerShell and WSL terminals stacked to the right of file editors: ![Terminal editors are can be laid out using the editor group layout system, for example 2 terminals could sit to the right of a text editor](https://code.visualstudio.com/assets/docs/terminal/basics/terminal-editor-grid.png) The terminal.integrated.defaultLocation Open in VS Code Open in VS Code Insiders setting can change the default `view` or `editor` area terminal location. ## [Terminals in new windows](https://code.visualstudio.com/docs/terminal/basics#_terminals-in-new-windows) Opening a terminal in a new VS Code window is possible in a few different ways: - Use ⌃⇧⌥\` (Windows, Linux Ctrl+Shift+Alt+\`) - Right-click the terminal tab if you have multiple terminals, or left-click the tab if you only have a single terminal opened. Then select **Move Terminal to New Window** - Select the **New Terminal Window** entry that's available in several different menus ## [Navigating the buffer](https://code.visualstudio.com/docs/terminal/basics#_navigating-the-buffer) The content in the terminal is called the buffer, with the section right above the bottom viewport being called "scrollback". The amount of scrollback kept is determined by the terminal.integrated.scrollback Open in VS Code Open in VS Code Insiders [setting](https://code.visualstudio.com/docs/configure/settings) and defaults to `1000` lines. There are various commands available to navigate around the terminal buffer: - Scroll up a line - ⌥⌘PageUp (Windows Ctrl+Alt+PageUp, Linux Ctrl+Shift+Up) - Scroll down a line - ⌥⌘PageDown (Windows Ctrl+Alt+PageDown, Linux Ctrl+Shift+Down) - Scroll up a page - PageUp (Windows, Linux Shift+PageUp) - Scroll down a page - PageDown (Windows, Linux Shift+PageDown) - Scroll to the top - ⌘Home (Windows Ctrl+Home, Linux Shift+Home) - Scroll to the bottom - ⌘End (Windows Ctrl+End, Linux Shift+End) **Command** navigation is also available (see [shell integration](https://code.visualstudio.com/docs/terminal/shell-integration)): - Scroll to the previous command - ⌘↑ (Windows, Linux Ctrl+Up) - Scroll to the next command - ⌘↓ (Windows, Linux Ctrl+Down) Scrolling will happen instantaneously, but can be configured to animate over a short duration with the terminal.integrated.smoothScrolling Open in VS Code Open in VS Code Insiders setting. ## [Links](https://code.visualstudio.com/docs/terminal/basics#_links) The terminal features sophisticated link detection with editor integration and even extension contributed link handlers. Hover over a link to display an underline, then hold the Ctrl/Cmd key and click. These built-in link handlers are used in the following priority order: - URIs/URLs: Links that look like URIs, such as `https://code.visualstudio.com`, `vscode://path/to/file` or `file://path/to/file` will open using the standard handler for the protocol. For example, `https` links will open the browser. ![Opening a URI link will open it in the system browser](https://code.visualstudio.com/assets/docs/terminal/basics/link-uri.png) - File links: Links to files that have been verified to exist on the system. These will open the file in a new editor tab and support many common line/column formats such as `file:1:2`, `file:line 1, column 2`. ![Activating a file link will open it in an editor](https://code.visualstudio.com/assets/docs/terminal/basics/link-file.png) - Folder links: Links to folders are similar to file links but will open a new VS Code window at the folder. ![Activating a folder link will open it in a new window](https://code.visualstudio.com/assets/docs/terminal/basics/link-folder.png) - Word links: Fallback link type that uses the terminal.integrated.wordSeparators Open in VS Code Open in VS Code Insiders setting. The setting defines word boundaries and make nearly all text into words. Activating a word link searches the workspace for the word. If there is a single result it will open, otherwise it will present the search results. Word links are considered "low confidence" and will not show an underline or tooltip unless you hold the Ctrl/Cmd key. They also have limited support for line and column suffixes. ![Activating a word link 'terminal:15' will open a Quick Pick searching the workspace for all files containing 'terminal', choosing an option will open the file at line 15](https://code.visualstudio.com/assets/docs/terminal/basics/link-word.png) The **Open Detected Link** command (⇧⌘G (Windows, Linux Ctrl+Shift+G)) can be used to access links via the keyboard: ![Open Detected Link opens a quick pick with all links in the viewport, split into categories](https://code.visualstudio.com/assets/docs/terminal/basics/link-open-detected.png) Tip If link verification causes performance issues, like in high latency remote environments, disable it via the terminal.integrated.enableFileLinks Open in VS Code Open in VS Code Insiders [setting](https://code.visualstudio.com/docs/configure/settings). ### [Extensions handling links](https://code.visualstudio.com/docs/terminal/basics#_extensions-handling-links) Extensions can contribute **link providers** which allow the extension to define what happens when clicked. An example of this is the [GitLens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) extension detecting Git branch links. ![When GitLens is installed, hovering a branch name will provide custom behavior to open the branch in the UI](https://code.visualstudio.com/assets/docs/terminal/basics/link-extension.png) ### [Keyboard accessibility](https://code.visualstudio.com/docs/terminal/basics#_keyboard-accessibility) Links are keyboard accessible through several commands that open links based on the type of link. - **Terminal: Open Last Local File Link** - Opens the most recent local file link. No default keyboard shortcut. - **Terminal: Open Last URL link** - Opens the most recent URI/URL link. No default keyboard shortcut. - **Terminal: Open Detected Link...** - Opens a searchable Quick Pick with all detected links, including word links. The default keyboard shortcut is Ctrl/Cmd+Shift+O, which is the same as the **Go to Symbol in Editor** keyboard shortcut. ## [Copy & paste](https://code.visualstudio.com/docs/terminal/basics#_copy-paste) The keyboard shortcuts for copy and paste follow platform standards: - Linux: Ctrl+Shift+C and Ctrl+Shift+V; selection paste is available with Shift+Insert - macOS: Cmd+C and Cmd+V - Windows: Ctrl+C and Ctrl+V Copying is done automatically on selection when terminal.integrated.copyOnSelection Open in VS Code Open in VS Code Insiders is enabled. By default, there is a warning when pasting multiple lines, which can be disabled with the terminal.integrated.enableMultiLinePasteWarning Open in VS Code Open in VS Code Insiders setting. This is only done when the shell does not support "bracketed paste mode". When that mode is enabled, the shell is indicating that it can handle multiple line pasting. ## [Using the mouse](https://code.visualstudio.com/docs/terminal/basics#_using-the-mouse) ### [Right-click behavior](https://code.visualstudio.com/docs/terminal/basics#_rightclick-behavior) The right-click behavior differs based on the platform: - Linux: Show the context menu. - macOS: Select the word under the cursor and show the context menu. - Windows: Copy and drop selection if there is a selection, otherwise paste. This can be configured using the terminal.integrated.rightClickBehavior Open in VS Code Open in VS Code Insiders setting. The options are: - `default` - Show the context menu. - `copyPaste` - Copy when there is a selection, otherwise paste. - `paste` - Paste on right-click. - `selectWord` - Select the word under the cursor and show the context menu. - `nothing` - Do nothing and pass event to terminal. ### [Column selection](https://code.visualstudio.com/docs/terminal/basics#_column-selection) Press Alt and left-click drag to select a rectangle of text inside the terminal instead of the regular selection of a line. ### [Reposition the cursor with Alt](https://code.visualstudio.com/docs/terminal/basics#_reposition-the-cursor-with-alt) Alt and left-click will reposition the cursor to underneath the mouse. This works by simulating arrow keystrokes, which may not work reliably for some shells or programs. This feature can be disabled with the terminal.integrated.altClickMovesCursor Open in VS Code Open in VS Code Insiders setting. ### [Mouse events mode](https://code.visualstudio.com/docs/terminal/basics#_mouse-events-mode) When applications running in the terminal turn on mouse events mode, such as Vim mouse mode, mouse interaction is sent to the application instead of the terminal. This means that clicking and dragging will no longer create a selection. Terminal selection can be forced by holding the Alt key on Windows and Linux, this can also be done with the Option key on macOS but requires enabling the terminal.integrated.macOptionClickForcesSelection Open in VS Code Open in VS Code Insiders setting first. ## [Find](https://code.visualstudio.com/docs/terminal/basics#_find) The integrated terminal has find functionality that can be triggered with ⌘F (Windows, Linux Ctrl+F). ![Find in the terminal will highlight all text matching the query](https://code.visualstudio.com/assets/docs/terminal/basics/terminal-find.png) Tip Ctrl+F can be sent to the shell by removing the `workbench.action.terminal.focusFind` command from [commands to skip shell](https://code.visualstudio.com/docs/terminal/advanced#_keyboard-shortcuts-and-the-shell). ## [Run selected text](https://code.visualstudio.com/docs/terminal/basics#_run-selected-text) To use the `runSelectedText` command, select text in an editor and run the command **Terminal: Run Selected Text in Active Terminal** via the **Command Palette** (⇧⌘P (Windows, Linux Ctrl+Shift+P)), the terminal will attempt to run the selected text. If no text is selected in the active editor, the entire line that the cursor is on will run in the terminal. Tip Also run the active file using the command `workbench.action.terminal.runActiveFile`. ## [Maximizing the terminal](https://code.visualstudio.com/docs/terminal/basics#_maximizing-the-terminal) The terminal view can be maximized by clicking the maximize panel size button with the upwards chevron icon. This will temporarily hide the editors and maximize the panel. This is useful to temporarily focus on a large amount of output. Some developers use VS Code as a standalone terminal by opening a new window, maximizing the panel, and hiding the side bar. Note that the panel can only be maximized if its [alignment](https://code.visualstudio.com/docs/configure/custom-layout#_panel-alignment) option is set to **Center**. ## [Select all](https://code.visualstudio.com/docs/terminal/basics#_select-all) There is a **Terminal: Select All** command, which is bound to Cmd+A on macOS, but does not have a default keyboard shortcut on Windows and Linux as it may conflict with shell hotkeys. To use Ctrl+A to select all, add this custom keyboard shortcut: JSON ``` { "key": "ctrl+a", "command": "workbench.action.terminal.selectAll", "when": "terminalFocus && !isMac" }, ``` ## [Drag and drop file paths](https://code.visualstudio.com/docs/terminal/basics#_drag-and-drop-file-paths) Dragging a file into the terminal will input the path into the terminal, with escaping to match the active shell. ## [Automating terminals with tasks](https://code.visualstudio.com/docs/terminal/basics#_automating-terminals-with-tasks) The [Tasks](https://code.visualstudio.com/docs/debugtest/tasks) feature can be used to automate the launching of terminals, for example, the following `.vscode/tasks.json` file will launch a Command Prompt and PowerShell terminal in a single terminal group when the window starts: Jsonc ``` { "version": "2.0.0", "presentation": { "echo": false, "reveal": "always", "focus": false, "panel": "dedicated", "showReuseMessage": true }, "tasks": [ { "label": "Create terminals", "dependsOn": [ "First", "Second" ], // Mark as the default build task so cmd/ctrl+shift+b will create them "group": { "kind": "build", "isDefault": true }, // Try start the task on folder open "runOptions": { "runOn": "folderOpen" } }, { // The name that shows up in terminal tab "label": "First", // The task will launch a shell "type": "shell", "command": "", // Set the shell type "options": { "shell": { "executable": "cmd.exe", "args": [] } }, // Mark as a background task to avoid the spinner animation on the terminal tab "isBackground": true, "problemMatcher": [], // Create the tasks in a terminal group "presentation": { "group": "my-group" } }, { "label": "Second", "type": "shell", "command": "", "options": { "shell": { "executable": "pwsh.exe", "args": [] } }, "isBackground": true, "problemMatcher": [], "presentation": { "group": "my-group" } } ] } ``` This file could be committed to the repository to share with other developers or created as a user task via the `workbench.action.tasks.openUserTasks` command. ## [Working directory](https://code.visualstudio.com/docs/terminal/basics#_working-directory) By default, the terminal will open at the folder that is opened in the Explorer. The terminal.integrated.cwd Open in VS Code Open in VS Code Insiders setting allows specifying a custom path to open instead: JSON ``` { "terminal.integrated.cwd": "/home/user" } ``` Split terminals on Windows will start in the directory that the parent terminal started with. On macOS and Linux, split terminals will inherit the current working directory of the parent terminal. This behavior can be changed using the terminal.integrated.splitCwd Open in VS Code Open in VS Code Insiders setting: JSON ``` { "terminal.integrated.splitCwd": "workspaceRoot" } ``` There are also extensions available that give more options such as [Terminal Here](https://marketplace.visualstudio.com/items?itemName=Tyriar.vscode-terminal-here). ## [Fixed dimension terminals](https://code.visualstudio.com/docs/terminal/basics#_fixed-dimension-terminals) The **Terminal: Set Fixed Dimensions** command allows changing the number of columns and rows that the terminal and it's backing pseudoterminal uses. This will add scroll bars when necessary, which may lead to an unpleasant UX and is generally not recommended, but it is a common ask on Windows in particular for reading logs or long lines when paging tools aren't available. You can also right-click on a terminal tab and select **Toggle Size to Content Width** (⌥Z (Windows, Linux Alt+Z)) to resize the number of terminal columns to the largest wrapped line in the terminal. ## [GitHub Copilot in the terminal](https://code.visualstudio.com/docs/terminal/basics#_github-copilot-in-the-terminal) If you have access to [GitHub Copilot](https://code.visualstudio.com/docs/copilot/setup), you can use it to get AI-powered help with terminal commands and shell scripting. There are several ways to use Copilot with the terminal: ### [Terminal inline chat](https://code.visualstudio.com/docs/terminal/basics#_terminal-inline-chat) Start an inline chat directly in the terminal to get help with shell commands: 1. Open the terminal (⌃\` (Windows, Linux Ctrl+\`)) 2. Press ⌘I (Windows, Linux Ctrl+I) or run the **Terminal Inline Chat** command from the Command Palette 3. Enter your question or request in natural language, such as: - "How do I find the largest files in this directory?" - "Show me how to undo the last git commit" - "Create a bash script to analyze log files" ![Terminal inline chat helps you quickly get and run shell commands](https://code.visualstudio.com/assets/docs/terminal/basics/terminal-chat-2.png) When Copilot provides a response, you can select **Run** to execute the command directly or **Insert** to add it to the terminal for further editing. For more information about using GitHub Copilot with the terminal, see [Use terminal inline chat](https://code.visualstudio.com/docs/copilot/chat/inline-chat#_use-terminal-inline-chat). ### [Terminal chat participant](https://code.visualstudio.com/docs/terminal/basics#_terminal-chat-participant) Use the dedicated `@terminal` chat participant in ask mode in the Chat view: 1. Open the Chat view (⌃⌘I (Windows, Linux Ctrl+Alt+I)) 2. Start your question with `@terminal` to direct it to the terminal participant 3. Ask about terminal commands, shell scripting, or explaining terminal output Examples: - `@terminal list the 5 largest files in this workspace` - `@terminal /explain top shell command` - `@terminal how to grep for patterns recursively` ### [Reference terminal context in chat](https://code.visualstudio.com/docs/terminal/basics#_reference-terminal-context-in-chat) You can include terminal information as context in your chat prompts: - Use `#terminalSelection` to add selected text from the terminal to your chat prompt - Use `#terminalLastCommand` to include the last command you ran in the terminal ## [Next steps](https://code.visualstudio.com/docs/terminal/basics#_next-steps) The basics of the terminal have been covered in this document. Read on to find out more about: - [Terminal inline chat](https://code.visualstudio.com/docs/copilot/chat/inline-chat#_use-terminal-inline-chat) - AI-powered suggestions right in your terminal. - [Tasks](https://code.visualstudio.com/docs/debugtest/tasks) - Tasks let you integrate with external tools and leverage the terminal heavily. - [Mastering VS Code's Terminal](https://www.growingwiththeweb.com/2017/03/mastering-vscodes-terminal.html) - An external blog with plenty of power user tips for the terminal. - Explore terminal commands by browsing the keyboard shortcuts within VS Code (**Preferences: Open Keyboard Shortcuts** then search on 'terminal'). ## [Common questions](https://code.visualstudio.com/docs/terminal/basics#_common-questions) ### [I'm having problems launching the terminal](https://code.visualstudio.com/docs/terminal/basics#_im-having-problems-launching-the-terminal) There's a [dedicated troubleshooting guide](https://code.visualstudio.com/docs/supporting/troubleshoot-terminal-launch) for these sorts of problems. ### [How do I create an Admin terminal?](https://code.visualstudio.com/docs/terminal/basics#_how-do-i-create-an-admin-terminal) The integrated terminal shell is running with the permissions of VS Code. If you need to run a shell command with elevated (administrator) or different permissions, use platform utilities such as `runas.exe` within a terminal. You can learn more about customizing terminals via terminal profiles in [Configuring Profiles](https://code.visualstudio.com/docs/terminal/profiles#_configuring-profiles). ### [Can I add a keyboard shortcut for the Explorer's Open in Integrated Terminal command?](https://code.visualstudio.com/docs/terminal/basics#_can-i-add-a-keyboard-shortcut-for-the-explorers-open-in-integrated-terminal-command) You can open new terminals for specific folders from the Explorer via the **Open in Integrated Terminal** context menu command. ![A folder selected in the Explorer displaying the context menu with the Open in Integrated Terminal command](https://code.visualstudio.com/assets/docs/terminal/basics/open-in-terminal-command.png) By default, there is no keyboard shortcut associated with **Open in Integrated Terminal** but you can add your own via the Keyboard Shortcuts editor (⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S)) to add a keyboard shortcut to your `keybindings.json`. The `keybindings.json` example below adds the keyboard shortcut Ctrl+T for `openInTerminal`. JSON ``` { "key": "ctrl+t", "command": "openInTerminal", "when": "filesExplorerFocus" } ``` ### [Why is nvm complaining about a prefix option when the integrated terminal is launched?](https://code.visualstudio.com/docs/terminal/basics#_why-is-nvm-complaining-about-a-prefix-option-when-the-integrated-terminal-is-launched) nvm (Node Version Manager) users often see this error for the first time inside VS Code's integrated terminal: Bash ``` nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local" Run `npm config delete prefix` or `nvm use --delete-prefix v8.9.1 --silent` to unset it ``` This is mostly a macOS problem and does not happen in external terminals. The typical reasons for this are the following: - `npm` was globally installed using another instance of `node` that is somewhere in your path (such as `/usr/local/bin/npm`). - To get the development tools on the `$PATH`, VS Code will launch a bash login shell on startup. This means that your `~/.bash_profile` has already run and when an integrated terminal launches, it will run **another** login shell, reordering the `$PATH` potentially in unexpected ways. To resolve this issue, you need to track down where the old `npm` is installed and remove both it and its out-of-date node\_modules. Find the `nvm` initialization script and run `which npm` before it runs, which should print the path when you launch a new terminal. Once you have the path to npm, find the old node\_modules by resolving the symlink by running a command something like this: Bash ``` ls -la /usr/local/bin | grep "np[mx]" ``` This will give you the resolved path at the end: Bash ``` ... npm -> ../lib/node_modules/npm/bin/npm-cli.js ... npx -> ../lib/node_modules/npm/bin/npx-cli.js ``` From there, removing the files and relaunching VS Code should fix the issue: Bash ``` rm /usr/local/bin/npm /usr/local/lib/node_modules/npm/bin/npm-cli.js rm /usr/local/bin/npx /usr/local/lib/node_modules/npm/bin/npx-cli.js ``` ### [Why does macOS make a ding sound when I resize terminal split panes?](https://code.visualstudio.com/docs/terminal/basics#_why-does-macos-make-a-ding-sound-when-i-resize-terminal-split-panes) The keyboard shortcuts ⌃⌘← and ⌃⌘→ are the defaults for resizing individual split panes in the terminal. While they work, they also cause a system "invalid key" sound to play due to an issue in Chromium. The [recommended workaround](https://github.com/microsoft/vscode/issues/44070#issuecomment-799716362) is to tell macOS to no-op for these keyboard shortcuts by running this in your terminal: Bash ``` mkdir -p ~/Library/KeyBindings cat > ~/Library/KeyBindings/DefaultKeyBinding.dict <<EOF { "@^\UF700" = "noop:"; "@^\UF701" = "noop:"; "@^\UF702" = "noop:"; "@^\UF703" = "noop:"; "@~^\UF700" = "noop:"; "@~^\UF701" = "noop:"; "@~^\UF702" = "noop:"; "@~^\UF703" = "noop:"; } EOF ``` ### [I'm having problems with the terminal rendering. What can I do?](https://code.visualstudio.com/docs/terminal/basics#_im-having-problems-with-the-terminal-rendering-what-can-i-do) By default, the integrated terminal will render using GPU acceleration on most machines. Typically when there are rendering problems it's an issue of something in your hardware/OS/drivers not playing nicely with the GPU renderer. The first thing to try is to disable GPU acceleration, trading off rendering speed for DOM-based rendering, which is more reliable: JSON ``` { "terminal.integrated.gpuAcceleration": "off" } ``` See the [GPU acceleration](https://code.visualstudio.com/docs/terminal/appearance#_gpu-acceleration) section for more information. ### [I see 1~ or \[201~ when I paste something](https://code.visualstudio.com/docs/terminal/basics#_i-see-1-or-201-when-i-paste-something) This normally means that the program/shell running inside the terminal requested to turn on "bracketed paste mode" but something doesn't support it properly. To work around this, you could run `printf "\e[?2004l"` to disable it for that session or add the following to your `~/.inputrc` file: Bash ``` set enable-bracketed-paste off ``` Alternatively, bracketed paste mode can be forced to ignore the shell's request by turning it off with this setting: JSON ``` { "terminal.integrated.ignoreBracketedPasteMode": true } ``` ### [Ctrl+A, Ctrl+R output ^A, ^R on zsh](https://code.visualstudio.com/docs/terminal/basics#_ctrla-ctrlr-output-a-r-on-zsh) This can happen if zsh is in Vim mode instead of Emacs mode, due to setting `$EDITOR` or `$VISUAL` to `vi`/`vim` in your init scripts. To work around this, you have two options: - Ensure that you don't set `$EDITOR` to `vi(m)`. However, this isn't an option if you want your Git editor to work. - Add `bindkey -e` to your init script to set Emacs explicitly. ### [How can I configure Cmd+. to map to Ctrl+C like macOS' built-in terminal?](https://code.visualstudio.com/docs/terminal/basics#_how-can-i-configure-cmd-to-map-to-ctrlc-like-macos-builtin-terminal) The macOS default terminal uses Cmd+. to perform the same as Ctrl+C. To get this behavior in VS Code, add this [custom keyboard shortcut](https://code.visualstudio.com/docs/configure/keybindings): JSON ``` { "key": "cmd+.", "command": "workbench.action.terminal.sendSequence", "when": "terminalFocus", "args": { "text": "\u0003" } } ``` ### [Why are the colors in the terminal not correct?](https://code.visualstudio.com/docs/terminal/basics#_why-are-the-colors-in-the-terminal-not-correct) One of our accessibility features we enable by default is to ensure a minimum contrast ratio of at least 4.5 is met for the foreground text. This feature ensures that text is readable regardless of the shell and theme used which is not possible otherwise. To disable this feature, you can set: JSON ``` "terminal.integrated.minimumContrastRatio": 1 ``` See the [minimum contrast ratio](https://code.visualstudio.com/docs/terminal/appearance#_minimum-contrast-ratio) section for more information. ## Help and support ### Still need help? - [![](https://code.visualstudio.com/assets/community/sidebar/stackoverflow.svg)Ask the community](https://stackoverflow.com/questions/tagged/vscode) - [![](https://code.visualstudio.com/assets/community/sidebar/github.svg)Request features](https://go.microsoft.com/fwlink/?LinkID=533482) - [![](https://code.visualstudio.com/assets/community/sidebar/issue.svg)Report issues](https://www.github.com/Microsoft/vscode/issues) ### Help us improve Edit this page 4/8/2026 - [![RSS](https://code.visualstudio.com/assets/community/sidebar/rss.svg)RSS Feed](https://code.visualstudio.com/feed.xml) - [![Stackoverflow](https://code.visualstudio.com/assets/community/sidebar/stackoverflow.svg)Ask questions](https://stackoverflow.com/questions/tagged/vscode) - [![Twitter](https://code.visualstudio.com/assets/community/sidebar/twitter.svg)Follow @code](https://go.microsoft.com/fwlink/?LinkID=533687) - [![GitHub](https://code.visualstudio.com/assets/community/sidebar/github.svg)Request features](https://go.microsoft.com/fwlink/?LinkID=533482) - [![Issues](https://code.visualstudio.com/assets/community/sidebar/issue.svg)Report issues](https://www.github.com/Microsoft/vscode/issues) - [![YouTube](https://code.visualstudio.com/assets/community/sidebar/youtube.svg)Watch videos](https://www.youtube.com/channel/UCs5Y5_7XK8HLDX0SLNwkd3w) - [![VS Code on Github](https://code.visualstudio.com/assets/icons/github-icon.svg)](https://github.com/microsoft/vscode) - [![Follow us on X](https://code.visualstudio.com/assets/icons/x-icon.svg)](https://go.microsoft.com/fwlink/?LinkID=533687) - [![VS Code on LinkedIn](https://code.visualstudio.com/assets/icons/linkedin-icon.svg)](https://www.linkedin.com/showcase/vs-code) - [![VS Code on Bluesky](https://code.visualstudio.com/assets/icons/bluesky-icon.svg)](https://bsky.app/profile/vscode.dev) - [![Join the VS Code community on Reddit](https://code.visualstudio.com/assets/icons/reddit-icon.svg)](https://www.reddit.com/r/vscode/) - [![The VS Code Insiders Podcast](https://code.visualstudio.com/assets/icons/podcast-icon.svg)](https://www.vscodepodcast.com/) - [![VS Code on TikTok](https://code.visualstudio.com/assets/icons/tiktok-icon.svg)](https://www.tiktok.com/@vscode) - [![VS Code on YouTube](https://code.visualstudio.com/assets/icons/youtube-icon.svg)](https://www.youtube.com/@code) [![Microsoft homepage](https://code.visualstudio.com/assets/icons/microsoft.svg)](https://www.microsoft.com/) - [Support](https://support.serviceshub.microsoft.com/supportforbusiness/create?sapId=d66407ed-3967-b000-4cfb-2c318cad363d "Get support for VS Code") - [Privacy](https://go.microsoft.com/fwlink/?LinkId=521839 "View the Microsoft privacy statement") - [Manage Cookies]() - [Terms of Use](https://www.microsoft.com/legal/terms-of-use "View the Microsoft Terms of Use") - [License](https://code.visualstudio.com/License "View the Visual Studio Code license") - [Your Privacy Choices](https://aka.ms/YourCaliforniaPrivacyChoices "View Your Privacy Choices") - [Consumer Health Privacy](https://go.microsoft.com/fwlink/?linkid=2259814 "View the Microsoft Consumer Health Privacy policy")
Readable Markdown
Visual Studio Code includes a full featured integrated terminal that starts at the root of your workspace. It provides integration with the editor to support features like [links](https://code.visualstudio.com/docs/terminal/basics#_links) and [error detection](https://code.visualstudio.com/docs/debugtest/tasks). The integrated terminal can run commands such as mkdir and git just like a standalone terminal. You can open a terminal as follows: - From the menu, use the **Terminal** \> **New Terminal** or **View** \> **Terminal** menu commands. - From the **Command Palette** (⇧⌘P (Windows, Linux Ctrl+Shift+P)), use the **View: Toggle Terminal** command. - In the Explorer, you can use the **Open in Integrated Terminal** context menu command to open a new terminal from a folder. - To toggle the terminal panel, use the ⌃\` (Windows, Linux Ctrl+\`) keyboard shortcut. - To create a new terminal, use the ⌃⇧\` (Windows, Linux Ctrl+Shift+\`) keyboard shortcut. VS Code's terminal has additional functionality called shell integration that tracks where commands are run with decorations on the left of a command and in the scrollbar: ![The integrated terminal can run commands such as mkdir and git just like a standalone terminal. VS Code's terminal has additional functionality called shell integration that tracks where commands are run with decorations on the left of a command and in the scrollbar.](https://code.visualstudio.com/assets/docs/terminal/basics/integrated-terminal.png) Note If you prefer to work outside VS Code, open an external terminal with the ⇧⌘C (Windows, Linux Ctrl+Shift+C) keyboard shortcut ## [Terminal shells](https://code.visualstudio.com/docs/terminal/basics#_terminal-shells) The integrated terminal can use various shells installed on your machine, with the default being pulled from your system defaults. Shells are detected and presented in the terminal profiles dropdown. ![A detected profile can be chosen in the dropdown next to the new terminal button. Some examples on Windows include PowerShell, Command Prompt, Git Bash and WSL](https://code.visualstudio.com/assets/docs/terminal/basics/select-profile-dropdown.png) You can learn more about configuring terminal shells in the [terminal profiles](https://code.visualstudio.com/docs/terminal/profiles) article. ## [Managing terminals](https://code.visualstudio.com/docs/terminal/basics#_managing-terminals) The terminal tabs UI is on the right side of the terminal view. Each terminal has an entry with its name, icon, color, and group decoration (if any). ![Activating the Launch Profile button will show all detected and manually configured profiles](https://code.visualstudio.com/assets/docs/terminal/basics/tabs.png) Add terminal instances by selecting the **\+** icon on the top-right of the **TERMINAL** panel, selecting a profile from the terminal dropdown, or by triggering the ⌃⇧\` (Windows, Linux Ctrl+Shift+\`) command. This action creates another entry in the tab list associated with that terminal. Remove terminal instances by hovering a tab and selecting the **Trash Can** button, selecting a tab item and pressing Delete, using **Terminal: Kill the Active Terminal Instance** command, or via the right-click context menu. Navigate between terminal groups using focus next ⇧⌘\] (Windows, Linux Ctrl+PageDown) and focus previous ⇧⌘\[ (Windows, Linux Ctrl+PageUp). Icons may appear to the right of the terminal title on the tab label when a terminal's status changes. Some examples are a bell (macOS) and for tasks, displaying a check mark when there are no errors and an X otherwise. Hover the icon to read status information, which may contain actions. ### [Groups (split panes)](https://code.visualstudio.com/docs/terminal/basics#_groups-split-panes) Place multiple terminals side-by-side and create a group by splitting a terminal: - Hover over an entry in the list of terminals on the right and select the inline split button. - Right-click the context menu and select the **Split** menu option. - Alt and click on a tab, the **\+** button, or the single tab on the terminal panel. - Trigger the ⌘\\ (Windows, Linux Ctrl+Shift+5) command. Tip The working directory for the new terminal depends on the terminal.integrated.splitCwd [setting](https://code.visualstudio.com/docs/configure/settings). Navigate between terminals in a group by focusing the previous pane, ⌥⌘← (Windows, Linux Alt+Left), or the next pane, ⌥⌘→ (Windows, Linux Alt+Right). Dragging and dropping tabs in the list rearranges them. Dragging a tab into the main terminal area allows moving a terminal from one group to another. Moving a terminal into its own group can be done with the **Terminal: Unsplit Terminal** command through the Command Palette or in the right-click context menu. ## [Terminals in editor area](https://code.visualstudio.com/docs/terminal/basics#_terminals-in-editor-area) You can open terminals in the editor area (terminal editors) with the **Terminal: Create New Terminal in Editor Area** command, the **Terminal: Create New Terminal in Editor Area to the Side** command, or by dragging a terminal from the terminal view into the editor area. Terminal editors are presented like regular editor tabs: ![Terminal editors are presented like regular text file tabs](https://code.visualstudio.com/assets/docs/terminal/basics/terminal-editor.png) You can have terminal editors on either side or arranged in multiple dimensions using the editor group layout system, e.g. PowerShell and WSL terminals stacked to the right of file editors: ![Terminal editors are can be laid out using the editor group layout system, for example 2 terminals could sit to the right of a text editor](https://code.visualstudio.com/assets/docs/terminal/basics/terminal-editor-grid.png) The terminal.integrated.defaultLocation setting can change the default `view` or `editor` area terminal location. ## [Terminals in new windows](https://code.visualstudio.com/docs/terminal/basics#_terminals-in-new-windows) Opening a terminal in a new VS Code window is possible in a few different ways: - Use ⌃⇧⌥\` (Windows, Linux Ctrl+Shift+Alt+\`) - Right-click the terminal tab if you have multiple terminals, or left-click the tab if you only have a single terminal opened. Then select **Move Terminal to New Window** - Select the **New Terminal Window** entry that's available in several different menus ## [Navigating the buffer](https://code.visualstudio.com/docs/terminal/basics#_navigating-the-buffer) The content in the terminal is called the buffer, with the section right above the bottom viewport being called "scrollback". The amount of scrollback kept is determined by the terminal.integrated.scrollback [setting](https://code.visualstudio.com/docs/configure/settings) and defaults to `1000` lines. There are various commands available to navigate around the terminal buffer: - Scroll up a line - ⌥⌘PageUp (Windows Ctrl+Alt+PageUp, Linux Ctrl+Shift+Up) - Scroll down a line - ⌥⌘PageDown (Windows Ctrl+Alt+PageDown, Linux Ctrl+Shift+Down) - Scroll up a page - PageUp (Windows, Linux Shift+PageUp) - Scroll down a page - PageDown (Windows, Linux Shift+PageDown) - Scroll to the top - ⌘Home (Windows Ctrl+Home, Linux Shift+Home) - Scroll to the bottom - ⌘End (Windows Ctrl+End, Linux Shift+End) **Command** navigation is also available (see [shell integration](https://code.visualstudio.com/docs/terminal/shell-integration)): - Scroll to the previous command - ⌘↑ (Windows, Linux Ctrl+Up) - Scroll to the next command - ⌘↓ (Windows, Linux Ctrl+Down) Scrolling will happen instantaneously, but can be configured to animate over a short duration with the terminal.integrated.smoothScrolling setting. ## [Links](https://code.visualstudio.com/docs/terminal/basics#_links) The terminal features sophisticated link detection with editor integration and even extension contributed link handlers. Hover over a link to display an underline, then hold the Ctrl/Cmd key and click. These built-in link handlers are used in the following priority order: - URIs/URLs: Links that look like URIs, such as `https://code.visualstudio.com`, `vscode://path/to/file` or `file://path/to/file` will open using the standard handler for the protocol. For example, `https` links will open the browser. ![Opening a URI link will open it in the system browser](https://code.visualstudio.com/assets/docs/terminal/basics/link-uri.png) - File links: Links to files that have been verified to exist on the system. These will open the file in a new editor tab and support many common line/column formats such as `file:1:2`, `file:line 1, column 2`. ![Activating a file link will open it in an editor](https://code.visualstudio.com/assets/docs/terminal/basics/link-file.png) - Folder links: Links to folders are similar to file links but will open a new VS Code window at the folder. ![Activating a folder link will open it in a new window](https://code.visualstudio.com/assets/docs/terminal/basics/link-folder.png) - Word links: Fallback link type that uses the terminal.integrated.wordSeparators setting. The setting defines word boundaries and make nearly all text into words. Activating a word link searches the workspace for the word. If there is a single result it will open, otherwise it will present the search results. Word links are considered "low confidence" and will not show an underline or tooltip unless you hold the Ctrl/Cmd key. They also have limited support for line and column suffixes. ![Activating a word link 'terminal:15' will open a Quick Pick searching the workspace for all files containing 'terminal', choosing an option will open the file at line 15](https://code.visualstudio.com/assets/docs/terminal/basics/link-word.png) The **Open Detected Link** command (⇧⌘G (Windows, Linux Ctrl+Shift+G)) can be used to access links via the keyboard: ![Open Detected Link opens a quick pick with all links in the viewport, split into categories](https://code.visualstudio.com/assets/docs/terminal/basics/link-open-detected.png) Tip If link verification causes performance issues, like in high latency remote environments, disable it via the terminal.integrated.enableFileLinks [setting](https://code.visualstudio.com/docs/configure/settings). ### [Extensions handling links](https://code.visualstudio.com/docs/terminal/basics#_extensions-handling-links) Extensions can contribute **link providers** which allow the extension to define what happens when clicked. An example of this is the [GitLens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) extension detecting Git branch links. ![When GitLens is installed, hovering a branch name will provide custom behavior to open the branch in the UI](https://code.visualstudio.com/assets/docs/terminal/basics/link-extension.png) ### [Keyboard accessibility](https://code.visualstudio.com/docs/terminal/basics#_keyboard-accessibility) Links are keyboard accessible through several commands that open links based on the type of link. - **Terminal: Open Last Local File Link** - Opens the most recent local file link. No default keyboard shortcut. - **Terminal: Open Last URL link** - Opens the most recent URI/URL link. No default keyboard shortcut. - **Terminal: Open Detected Link...** - Opens a searchable Quick Pick with all detected links, including word links. The default keyboard shortcut is Ctrl/Cmd+Shift+O, which is the same as the **Go to Symbol in Editor** keyboard shortcut. ## [Copy & paste](https://code.visualstudio.com/docs/terminal/basics#_copy-paste) The keyboard shortcuts for copy and paste follow platform standards: - Linux: Ctrl+Shift+C and Ctrl+Shift+V; selection paste is available with Shift+Insert - macOS: Cmd+C and Cmd+V - Windows: Ctrl+C and Ctrl+V Copying is done automatically on selection when terminal.integrated.copyOnSelection is enabled. By default, there is a warning when pasting multiple lines, which can be disabled with the terminal.integrated.enableMultiLinePasteWarning setting. This is only done when the shell does not support "bracketed paste mode". When that mode is enabled, the shell is indicating that it can handle multiple line pasting. ## [Using the mouse](https://code.visualstudio.com/docs/terminal/basics#_using-the-mouse) ### [Right-click behavior](https://code.visualstudio.com/docs/terminal/basics#_rightclick-behavior) The right-click behavior differs based on the platform: - Linux: Show the context menu. - macOS: Select the word under the cursor and show the context menu. - Windows: Copy and drop selection if there is a selection, otherwise paste. This can be configured using the terminal.integrated.rightClickBehavior setting. The options are: - `default` - Show the context menu. - `copyPaste` - Copy when there is a selection, otherwise paste. - `paste` - Paste on right-click. - `selectWord` - Select the word under the cursor and show the context menu. - `nothing` - Do nothing and pass event to terminal. ### [Column selection](https://code.visualstudio.com/docs/terminal/basics#_column-selection) Press Alt and left-click drag to select a rectangle of text inside the terminal instead of the regular selection of a line. ### [Reposition the cursor with Alt](https://code.visualstudio.com/docs/terminal/basics#_reposition-the-cursor-with-alt) Alt and left-click will reposition the cursor to underneath the mouse. This works by simulating arrow keystrokes, which may not work reliably for some shells or programs. This feature can be disabled with the terminal.integrated.altClickMovesCursor setting. ### [Mouse events mode](https://code.visualstudio.com/docs/terminal/basics#_mouse-events-mode) When applications running in the terminal turn on mouse events mode, such as Vim mouse mode, mouse interaction is sent to the application instead of the terminal. This means that clicking and dragging will no longer create a selection. Terminal selection can be forced by holding the Alt key on Windows and Linux, this can also be done with the Option key on macOS but requires enabling the terminal.integrated.macOptionClickForcesSelection setting first. ## [Find](https://code.visualstudio.com/docs/terminal/basics#_find) The integrated terminal has find functionality that can be triggered with ⌘F (Windows, Linux Ctrl+F). ![Find in the terminal will highlight all text matching the query](https://code.visualstudio.com/assets/docs/terminal/basics/terminal-find.png) Tip Ctrl+F can be sent to the shell by removing the `workbench.action.terminal.focusFind` command from [commands to skip shell](https://code.visualstudio.com/docs/terminal/advanced#_keyboard-shortcuts-and-the-shell). ## [Run selected text](https://code.visualstudio.com/docs/terminal/basics#_run-selected-text) To use the `runSelectedText` command, select text in an editor and run the command **Terminal: Run Selected Text in Active Terminal** via the **Command Palette** (⇧⌘P (Windows, Linux Ctrl+Shift+P)), the terminal will attempt to run the selected text. If no text is selected in the active editor, the entire line that the cursor is on will run in the terminal. Tip Also run the active file using the command `workbench.action.terminal.runActiveFile`. ## [Maximizing the terminal](https://code.visualstudio.com/docs/terminal/basics#_maximizing-the-terminal) The terminal view can be maximized by clicking the maximize panel size button with the upwards chevron icon. This will temporarily hide the editors and maximize the panel. This is useful to temporarily focus on a large amount of output. Some developers use VS Code as a standalone terminal by opening a new window, maximizing the panel, and hiding the side bar. Note that the panel can only be maximized if its [alignment](https://code.visualstudio.com/docs/configure/custom-layout#_panel-alignment) option is set to **Center**. ## [Select all](https://code.visualstudio.com/docs/terminal/basics#_select-all) There is a **Terminal: Select All** command, which is bound to Cmd+A on macOS, but does not have a default keyboard shortcut on Windows and Linux as it may conflict with shell hotkeys. To use Ctrl+A to select all, add this custom keyboard shortcut: ``` { "key": "ctrl+a", "command": "workbench.action.terminal.selectAll", "when": "terminalFocus && !isMac" }, ``` ## [Drag and drop file paths](https://code.visualstudio.com/docs/terminal/basics#_drag-and-drop-file-paths) Dragging a file into the terminal will input the path into the terminal, with escaping to match the active shell. ## [Automating terminals with tasks](https://code.visualstudio.com/docs/terminal/basics#_automating-terminals-with-tasks) The [Tasks](https://code.visualstudio.com/docs/debugtest/tasks) feature can be used to automate the launching of terminals, for example, the following `.vscode/tasks.json` file will launch a Command Prompt and PowerShell terminal in a single terminal group when the window starts: ``` { "version": "2.0.0", "presentation": { "echo": false, "reveal": "always", "focus": false, "panel": "dedicated", "showReuseMessage": true }, "tasks": [ { "label": "Create terminals", "dependsOn": [ "First", "Second" ], // Mark as the default build task so cmd/ctrl+shift+b will create them "group": { "kind": "build", "isDefault": true }, // Try start the task on folder open "runOptions": { "runOn": "folderOpen" } }, { // The name that shows up in terminal tab "label": "First", // The task will launch a shell "type": "shell", "command": "", // Set the shell type "options": { "shell": { "executable": "cmd.exe", "args": [] } }, // Mark as a background task to avoid the spinner animation on the terminal tab "isBackground": true, "problemMatcher": [], // Create the tasks in a terminal group "presentation": { "group": "my-group" } }, { "label": "Second", "type": "shell", "command": "", "options": { "shell": { "executable": "pwsh.exe", "args": [] } }, "isBackground": true, "problemMatcher": [], "presentation": { "group": "my-group" } } ] } ``` This file could be committed to the repository to share with other developers or created as a user task via the `workbench.action.tasks.openUserTasks` command. ## [Working directory](https://code.visualstudio.com/docs/terminal/basics#_working-directory) By default, the terminal will open at the folder that is opened in the Explorer. The terminal.integrated.cwd setting allows specifying a custom path to open instead: ``` { "terminal.integrated.cwd": "/home/user" } ``` Split terminals on Windows will start in the directory that the parent terminal started with. On macOS and Linux, split terminals will inherit the current working directory of the parent terminal. This behavior can be changed using the terminal.integrated.splitCwd setting: ``` { "terminal.integrated.splitCwd": "workspaceRoot" } ``` There are also extensions available that give more options such as [Terminal Here](https://marketplace.visualstudio.com/items?itemName=Tyriar.vscode-terminal-here). ## [Fixed dimension terminals](https://code.visualstudio.com/docs/terminal/basics#_fixed-dimension-terminals) The **Terminal: Set Fixed Dimensions** command allows changing the number of columns and rows that the terminal and it's backing pseudoterminal uses. This will add scroll bars when necessary, which may lead to an unpleasant UX and is generally not recommended, but it is a common ask on Windows in particular for reading logs or long lines when paging tools aren't available. You can also right-click on a terminal tab and select **Toggle Size to Content Width** (⌥Z (Windows, Linux Alt+Z)) to resize the number of terminal columns to the largest wrapped line in the terminal. ## [GitHub Copilot in the terminal](https://code.visualstudio.com/docs/terminal/basics#_github-copilot-in-the-terminal) If you have access to [GitHub Copilot](https://code.visualstudio.com/docs/copilot/setup), you can use it to get AI-powered help with terminal commands and shell scripting. There are several ways to use Copilot with the terminal: ### [Terminal inline chat](https://code.visualstudio.com/docs/terminal/basics#_terminal-inline-chat) Start an inline chat directly in the terminal to get help with shell commands: 1. Open the terminal (⌃\` (Windows, Linux Ctrl+\`)) 2. Press ⌘I (Windows, Linux Ctrl+I) or run the **Terminal Inline Chat** command from the Command Palette 3. Enter your question or request in natural language, such as: - "How do I find the largest files in this directory?" - "Show me how to undo the last git commit" - "Create a bash script to analyze log files" ![Terminal inline chat helps you quickly get and run shell commands](https://code.visualstudio.com/assets/docs/terminal/basics/terminal-chat-2.png) When Copilot provides a response, you can select **Run** to execute the command directly or **Insert** to add it to the terminal for further editing. For more information about using GitHub Copilot with the terminal, see [Use terminal inline chat](https://code.visualstudio.com/docs/copilot/chat/inline-chat#_use-terminal-inline-chat). ### [Terminal chat participant](https://code.visualstudio.com/docs/terminal/basics#_terminal-chat-participant) Use the dedicated `@terminal` chat participant in ask mode in the Chat view: 1. Open the Chat view (⌃⌘I (Windows, Linux Ctrl+Alt+I)) 2. Start your question with `@terminal` to direct it to the terminal participant 3. Ask about terminal commands, shell scripting, or explaining terminal output Examples: - `@terminal list the 5 largest files in this workspace` - `@terminal /explain top shell command` - `@terminal how to grep for patterns recursively` ### [Reference terminal context in chat](https://code.visualstudio.com/docs/terminal/basics#_reference-terminal-context-in-chat) You can include terminal information as context in your chat prompts: - Use `#terminalSelection` to add selected text from the terminal to your chat prompt - Use `#terminalLastCommand` to include the last command you ran in the terminal ## [Next steps](https://code.visualstudio.com/docs/terminal/basics#_next-steps) The basics of the terminal have been covered in this document. Read on to find out more about: - [Terminal inline chat](https://code.visualstudio.com/docs/copilot/chat/inline-chat#_use-terminal-inline-chat) - AI-powered suggestions right in your terminal. - [Tasks](https://code.visualstudio.com/docs/debugtest/tasks) - Tasks let you integrate with external tools and leverage the terminal heavily. - [Mastering VS Code's Terminal](https://www.growingwiththeweb.com/2017/03/mastering-vscodes-terminal.html) - An external blog with plenty of power user tips for the terminal. - Explore terminal commands by browsing the keyboard shortcuts within VS Code (**Preferences: Open Keyboard Shortcuts** then search on 'terminal'). ## [Common questions](https://code.visualstudio.com/docs/terminal/basics#_common-questions) ### [I'm having problems launching the terminal](https://code.visualstudio.com/docs/terminal/basics#_im-having-problems-launching-the-terminal) There's a [dedicated troubleshooting guide](https://code.visualstudio.com/docs/supporting/troubleshoot-terminal-launch) for these sorts of problems. ### [How do I create an Admin terminal?](https://code.visualstudio.com/docs/terminal/basics#_how-do-i-create-an-admin-terminal) The integrated terminal shell is running with the permissions of VS Code. If you need to run a shell command with elevated (administrator) or different permissions, use platform utilities such as `runas.exe` within a terminal. You can learn more about customizing terminals via terminal profiles in [Configuring Profiles](https://code.visualstudio.com/docs/terminal/profiles#_configuring-profiles). ### [Can I add a keyboard shortcut for the Explorer's Open in Integrated Terminal command?](https://code.visualstudio.com/docs/terminal/basics#_can-i-add-a-keyboard-shortcut-for-the-explorers-open-in-integrated-terminal-command) You can open new terminals for specific folders from the Explorer via the **Open in Integrated Terminal** context menu command. ![A folder selected in the Explorer displaying the context menu with the Open in Integrated Terminal command](https://code.visualstudio.com/assets/docs/terminal/basics/open-in-terminal-command.png) By default, there is no keyboard shortcut associated with **Open in Integrated Terminal** but you can add your own via the Keyboard Shortcuts editor (⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S)) to add a keyboard shortcut to your `keybindings.json`. The `keybindings.json` example below adds the keyboard shortcut Ctrl+T for `openInTerminal`. ``` { "key": "ctrl+t", "command": "openInTerminal", "when": "filesExplorerFocus" } ``` ### [Why is nvm complaining about a prefix option when the integrated terminal is launched?](https://code.visualstudio.com/docs/terminal/basics#_why-is-nvm-complaining-about-a-prefix-option-when-the-integrated-terminal-is-launched) nvm (Node Version Manager) users often see this error for the first time inside VS Code's integrated terminal: ``` nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local" Run `npm config delete prefix` or `nvm use --delete-prefix v8.9.1 --silent` to unset it ``` This is mostly a macOS problem and does not happen in external terminals. The typical reasons for this are the following: - `npm` was globally installed using another instance of `node` that is somewhere in your path (such as `/usr/local/bin/npm`). - To get the development tools on the `$PATH`, VS Code will launch a bash login shell on startup. This means that your `~/.bash_profile` has already run and when an integrated terminal launches, it will run **another** login shell, reordering the `$PATH` potentially in unexpected ways. To resolve this issue, you need to track down where the old `npm` is installed and remove both it and its out-of-date node\_modules. Find the `nvm` initialization script and run `which npm` before it runs, which should print the path when you launch a new terminal. Once you have the path to npm, find the old node\_modules by resolving the symlink by running a command something like this: ``` ls -la /usr/local/bin | grep "np[mx]" ``` This will give you the resolved path at the end: ``` ... npm -> ../lib/node_modules/npm/bin/npm-cli.js ... npx -> ../lib/node_modules/npm/bin/npx-cli.js ``` From there, removing the files and relaunching VS Code should fix the issue: ``` rm /usr/local/bin/npm /usr/local/lib/node_modules/npm/bin/npm-cli.js rm /usr/local/bin/npx /usr/local/lib/node_modules/npm/bin/npx-cli.js ``` ### [Why does macOS make a ding sound when I resize terminal split panes?](https://code.visualstudio.com/docs/terminal/basics#_why-does-macos-make-a-ding-sound-when-i-resize-terminal-split-panes) The keyboard shortcuts ⌃⌘← and ⌃⌘→ are the defaults for resizing individual split panes in the terminal. While they work, they also cause a system "invalid key" sound to play due to an issue in Chromium. The [recommended workaround](https://github.com/microsoft/vscode/issues/44070#issuecomment-799716362) is to tell macOS to no-op for these keyboard shortcuts by running this in your terminal: ``` mkdir -p ~/Library/KeyBindings cat > ~/Library/KeyBindings/DefaultKeyBinding.dict <<EOF { "@^\UF700" = "noop:"; "@^\UF701" = "noop:"; "@^\UF702" = "noop:"; "@^\UF703" = "noop:"; "@~^\UF700" = "noop:"; "@~^\UF701" = "noop:"; "@~^\UF702" = "noop:"; "@~^\UF703" = "noop:"; } EOF ``` ### [I'm having problems with the terminal rendering. What can I do?](https://code.visualstudio.com/docs/terminal/basics#_im-having-problems-with-the-terminal-rendering-what-can-i-do) By default, the integrated terminal will render using GPU acceleration on most machines. Typically when there are rendering problems it's an issue of something in your hardware/OS/drivers not playing nicely with the GPU renderer. The first thing to try is to disable GPU acceleration, trading off rendering speed for DOM-based rendering, which is more reliable: ``` { "terminal.integrated.gpuAcceleration": "off" } ``` See the [GPU acceleration](https://code.visualstudio.com/docs/terminal/appearance#_gpu-acceleration) section for more information. ### [I see 1~ or \[201~ when I paste something](https://code.visualstudio.com/docs/terminal/basics#_i-see-1-or-201-when-i-paste-something) This normally means that the program/shell running inside the terminal requested to turn on "bracketed paste mode" but something doesn't support it properly. To work around this, you could run `printf "\e[?2004l"` to disable it for that session or add the following to your `~/.inputrc` file: ``` set enable-bracketed-paste off ``` Alternatively, bracketed paste mode can be forced to ignore the shell's request by turning it off with this setting: ``` { "terminal.integrated.ignoreBracketedPasteMode": true } ``` ### [Ctrl+A, Ctrl+R output ^A, ^R on zsh](https://code.visualstudio.com/docs/terminal/basics#_ctrla-ctrlr-output-a-r-on-zsh) This can happen if zsh is in Vim mode instead of Emacs mode, due to setting `$EDITOR` or `$VISUAL` to `vi`/`vim` in your init scripts. To work around this, you have two options: - Ensure that you don't set `$EDITOR` to `vi(m)`. However, this isn't an option if you want your Git editor to work. - Add `bindkey -e` to your init script to set Emacs explicitly. ### [How can I configure Cmd+. to map to Ctrl+C like macOS' built-in terminal?](https://code.visualstudio.com/docs/terminal/basics#_how-can-i-configure-cmd-to-map-to-ctrlc-like-macos-builtin-terminal) The macOS default terminal uses Cmd+. to perform the same as Ctrl+C. To get this behavior in VS Code, add this [custom keyboard shortcut](https://code.visualstudio.com/docs/configure/keybindings): ``` { "key": "cmd+.", "command": "workbench.action.terminal.sendSequence", "when": "terminalFocus", "args": { "text": "\u0003" } } ``` ### [Why are the colors in the terminal not correct?](https://code.visualstudio.com/docs/terminal/basics#_why-are-the-colors-in-the-terminal-not-correct) One of our accessibility features we enable by default is to ensure a minimum contrast ratio of at least 4.5 is met for the foreground text. This feature ensures that text is readable regardless of the shell and theme used which is not possible otherwise. To disable this feature, you can set: ``` "terminal.integrated.minimumContrastRatio": 1 ``` See the [minimum contrast ratio](https://code.visualstudio.com/docs/terminal/appearance#_minimum-contrast-ratio) section for more information. 4/8/2026
Shard22 (laksa)
Root Hash11536831065451992222
Unparsed URLcom,visualstudio!code,/docs/terminal/basics s443