Recent from talks
Contribute something
Nothing was collected or created yet.
Visual Studio Code
View on Wikipedia| Visual Studio Code | |
|---|---|
Logo used since May 2019 | |
Visual Studio Code starting screen with dark theme | |
| Original author | Erich Gamma |
| Developer | Microsoft |
| Initial release | April 29, 2015 |
| Stable release | |
| Preview release | 1.105.0-insiders[3] |
| Repository | |
| Written in | TypeScript, JavaScript, HTML, CSS[4] |
| Operating system | Windows 10 or later, macOS 10.15 or later, Linux |
| Platform | x86-64, ARM32, ARM64 |
| Size |
|
| Available in | 15 languages |
List of languages English (US), Simplified Chinese, Traditional Chinese, French, German, Italian, Portuguese (Brazil), Japanese, Korean, Russian, Spanish, Hungarian, Turkish, Polish, Czech[5] | |
| Type | Source-code editor[6][7] |
| License | Proprietary freeware[8][9] based on open-source project[10][11] |
| Website | code |
Visual Studio Code (commonly referred to as VS Code)[12] is a source-code editor[6][7] developed by Microsoft for Windows, Linux, macOS and web browsers.[13][14] Features include support for debugging, syntax highlighting, intelligent code completion, snippets, code refactoring, and embedded version control with Git. Users can change the theme, keyboard shortcuts and preferences.
Visual Studio Code also has an extensive marketplace that can make it function more like an integrated development environment.[15] It contains extensions, programming languages,[16] themes, keyboard shortcuts, AI models, and more available to install.
Visual Studio Code is proprietary software released under the "Microsoft Software License",[9] but based on the MIT licensed program named "Visual Studio Code – Open Source" (also known as "Code – OSS"), also created by Microsoft and available through GitHub.[17]
In the 2025 Stack Overflow Developer Survey, out of over 49,000 responses, 75.9% of respondents reported using Visual Studio Code, more than twice the percentage of respondents who reported using its nearest alternative, Visual Studio.[18]
History
[edit]Visual Studio Code was first announced on April 29, 2015 by Microsoft at the 2015 Build conference. A preview build was released shortly thereafter.[19]
On November 18, 2015, the project "Visual Studio Code – Open Source" (also known as "Code – OSS"), on which Visual Studio Code is based, was released under the open-source MIT License and made available on GitHub.[17]
Extension support was also announced.[20] On April 14, 2016, Visual Studio Code graduated from the public preview stage and was released to the web.[21]
Features
[edit]Code editor
[edit]Visual Studio Code is a source-code editor[6][7] that can be used with a variety of programming languages, including C, C#, C++, Fortran, Go, Java, JavaScript, Node.js, Python, Rust, and Julia.[22][23][24][25][26] Visual Studio Code employs the same editor component (codenamed "Monaco") used in Azure DevOps (formerly called "Visual Studio Online" and "Visual Studio Team Services").[27]
The downloadable version of Visual Studio Code is built on the Electron framework,[28] which is used to develop Node.js web applications that run on the Blink layout engine. Visual Studio Code for the Web is a browser-based version of the editor that can be used to edit both local files and remote repositories (on GitHub and Microsoft Azure) without installing the full program.[29] It is officially supported and hosted by Microsoft and can be accessed at vscode
Out of the box, Visual Studio Code includes basic support for most common programming languages. This basic support includes syntax highlighting, bracket matching, code folding, and configurable snippets. Visual Studio Code also ships with IntelliSense for JavaScript, TypeScript, JSON, CSS, and HTML, as well as debugging support for Node.js. Support for additional languages can be provided by freely available extensions on the VS Code Marketplace.[30]
Debugging
[edit]VS Code features a built-in debugger designed to enhance the development process. It provides native support for debugging Node.js applications, while additional debuggers for other programming languages can be installed via extensions. The debugger allows developers to attach to running processes and step through source code line-by-line during execution, offering a detailed view of program flow. It can also display disassembly for low-level analysis in C++.[31] Furthermore, users can set breakpoints – either standard or conditional – to pause execution at specific points and examine the program's state, while also monitoring variable values in real-time as the code runs.
An interactive feature of VS Code's debugging toolkit is the Debug Console.[32] This panel is integrated directly into the debugging session, enabling users to evaluate expressions, such as checking variable values or testing functions, and execute commands on the fly. This functionality provides developers with greater control and deeper insight into the program's behavior.
File management and workspace
[edit]Instead of a project system, VS Code allows users to open one or more directories, which can then be saved in workspaces for future reuse. This allows it to operate as a language-agnostic code editor for any language. It supports many programming languages and a set of features that differ per language. Unwanted files and folders can be excluded from the project tree via settings.
Command Palette
[edit]Many Visual Studio Code features are not exposed through menus or the user interface but can be accessed via the Command Palette.[33] The Command Palette is able to execute virtually every feature the graphical interface supports, making it very keyboard-accessible.[34]
Integrated terminal
[edit]Visual Studio Code provides a fully featured integrated terminal that opens at the root of the current workspace, allowing users to run shell commands without leaving the editor environment.[35] It can be toggled via View → Terminal, the Command Palette (View: Toggle Integrated Terminal), or the keyboard shortcut (Ctrl+'). Users may open multiple terminals in tabs or split panes, rename them, and kill sessions individually, directly within the editor UI.
This terminal hosts any shell installed on the system—Bash, Zsh, PowerShell, Fish, Git Bash, WSL, etc.—and detects available profiles automatically, making it simple to switch contexts via the dropdown menu or the Terminal: Select Default Profile command.[36]
Beyond basic command execution, VS Code's shell integration also contains clickable file links, working directory awareness, and error-detection markers in the scrollbar. These enhancements simplify tracing errors and navigating code paths by allowing direct jumps to source files, preserving the current working directory context, and highlighting problems inline within the terminal's scroll bar.
Extensibility and customization
[edit]Visual Studio Code can be extended via extensions.[37] Users may install extensions from the VS Code Marketplace to add language support,[33] editor,[38] themes, debuggers, and additional utilities. A notable feature is the ability to create extensions that add support for new languages, themes, debuggers, time travel debuggers, perform static code analysis, and add code linters using the Language Server Protocol.[39]
Source control
[edit]Source control is a built-in feature of Visual Studio Code. It has a dedicated tab inside the menu bar where users can access version control settings and view changes made to the current project. To use the feature, Visual Studio Code must be linked to any supported version control system (Git, Apache Subversion, Perforce, etc.). This allows users to create repositories and to make push and pull requests directly from the Visual Studio Code program.
Visual Studio Code collects usage data and sends it to Microsoft to help improve the product. This telemetry feature can be disabled.[40] The information contained in this telemetry data can be inspected by the public, since the product is open source.[41]
Remote development and web-based access
[edit]VS Code supports remote development through extensions such as Remote–SSH, Remote–Containers, and Remote–WSL. These tools enable users to connect to and develop within remote environments, including servers and containers.
Visual Studio Code for the Web (accessible at vscode.dev) allows users to edit files directly in a web browser without the need to install the desktop application.[42] This version supports basic editing tasks and integration with remote repositories.
Insiders
[edit]
VS Code Insiders is a nightly build version of this code editor, providing users with the opportunity to experience new features, bug fixes, and improvements ahead of their official release. It is compiled every night based on the latest changes from the development team, allowing users to test and provide feedback before these updates are officially released in the stable version. [43]
This version is completely independent of the standard version, meaning users can install and run both simultaneously without any interference between their settings, extensions, or themes. This design enables developers to explore and experiment with the latest features of the code editor without affecting their primary development environment.
Reception
[edit]In the 2016 Stack Overflow Developer Survey, Visual Studio Code ranked 13th among the top popular development tools, with only 7% of the 47,000 respondents using it.[44] Two years later, Visual Studio Code rose to the no. 1 spot, with 35% of the 75,000 respondents using it.[45] Since then Visual Studio Code has retained the no. 1 spot, with the percentage of respondents reporting using it increasing to 50% in 2019,[46] 74.5% in 2021,[47] 74.48% in 2022,[48] 73.71% in 2023,[49] 73.6% in 2024,[50] and 75.9% in 2025.[51] (The 2020 Developers Survey did not cover integrated development environments.[52])
See also
[edit]References
[edit]- ^ "September 2025 (version 1.105)". Retrieved 20 October 2025.
- ^ "September 2025 Recovery 1". Retrieved 20 October 2025.
- ^ "Visual Studio Code Insiders (Install) 1.105.0.20250911". Retrieved 20 October 2025.
- ^ GitHub repository microsoft/vscode, Microsoft, 2020-12-20, archived from the original on 2015-11-23, retrieved 2020-12-20
- ^ "Visual Studio Code Display Language (Locale)". Visual Studio Code. Microsoft. Archived from the original on 2023-11-08. Retrieved 2025-06-08.
- ^ a b c "Microsoft Learn". Microsoft Learn. Archived from the original on September 24, 2025. Retrieved 2025-10-09.
Microsoft Visual Studio Code is a free, powerful, lightweight code editor for Windows, macOS and Linux. Based on open source, it is highly customizable with over 25,000 extensions, for every developer and every programming language.
- ^ a b c "GitHub - microsoft/vscode: Visual Studio Code". GitHub. Archived from the original on March 15, 2025. Retrieved October 9, 2025.
Visual Studio Code combines the simplicity of a code editor with what developers need for their core edit-build-debug cycle. It provides comprehensive code editing, navigation, and understanding support along with lightweight debugging, a rich extensibility model, and lightweight integration with existing tools.
- ^ "Download Visual Studio Code". Visual Studio Code. Microsoft. Archived from the original on 17 August 2016. Retrieved 16 August 2016.
- ^ a b "Microsoft Software License Terms". Visual Studio Code. Microsoft. Archived from the original on 21 October 2017. Retrieved 16 August 2016.
- ^ "LICENSE.txt". github.com/Microsoft/vscode. Microsoft. 17 November 2015. Archived from the original on 27 March 2021. Retrieved 17 April 2021.
- ^ "The best parts of Visual Studio Code are proprietary". Underjord. Archived from the original on 2021-02-06. Retrieved 2021-02-10.
- ^ Stanton, Lee (2021-08-17). "How to Run Code in VS Code". Alphr. Archived from the original on 2022-06-02. Retrieved 2022-04-03.
- ^ Lardinois, Frederic (April 29, 2015). "Microsoft Launches Visual Studio Code, A Free Cross-Platform Code Editor For OS X, Linux And Windows". TechCrunch. Archived from the original on October 28, 2017. Retrieved April 15, 2018.
- ^ Devine, Richard (22 December 2022). "How to use Visual Studio Code in a web browser". Windows Central. Archived from the original on 15 April 2024. Retrieved 11 April 2024.
- ^ "Extending Visual Studio Code". Visual Studio Code. October 10, 2016. Archived from the original on 2016-10-18. Retrieved 2016-10-12.
- ^ "Language Support in Visual Studio Code". Visual Studio Code. October 10, 2016. Archived from the original on 2017-05-11. Retrieved 2016-10-12.
- ^ a b Dias, Chris (4 December 2015). "Issue: Menu license links to non Open Source license". Microsoft/vscode repo. Microsoft. Response #161792005. Archived from the original on 4 September 2022. Retrieved 21 February 2019 – via GitHub.com.
We wanted to deliver a Microsoft branded product, built on top of an open source code base that the community could explore and contribute to.
- ^ Stack Overflow (2025). "Technology | 2025 Stack Overflow Developer Survey". stackoverflow.com. Stack Overflow. Retrieved 2025-10-07.
- ^ McBreen, Sean (April 29, 2015). "Announcing Visual Studio Code – Preview". Archived from the original on 2015-10-09.
- ^ "Visual Studio now supports debugging Linux apps; Code editor now open source". Ars Technica. Archived from the original on 11 April 2019. Retrieved 18 November 2015.
- ^ "Visual Studio Code editor hits version 1, has half a million users". Ars Technica. Condé Nast. 15 April 2016. Archived from the original on 7 July 2017. Retrieved 15 June 2017.
- ^ Kanjilal, Joydip (2015-05-06). "Visual Studio Code: A fast, lightweight, cross-platform code editor". InfoWorld. Archived from the original on 2019-01-25. Retrieved 2019-01-25.
- ^ Bisson, Simon (2018-09-11). "It's gotten a little easier to develop PWAs in Windows". InfoWorld. Archived from the original on 2019-01-25. Retrieved 2019-01-25.
- ^ Krill, Paul (2018-02-24). "What's new in Microsoft Visual Studio Code". ChannelWorld. Archived from the original on 2019-01-25. Retrieved 2019-01-25.
- ^ Wanyoike, Michael (2018-06-06). "Debugging JavaScript Projects with VS Code & Chrome Debugger". SitePoint. Archived from the original on 2019-01-25. Retrieved 2019-01-25.
- ^ "Julia in Visual Studio Code". Visual Studio Code. Archived from the original on 2023-05-26. Retrieved 2023-05-26.
- ^ "Monaco Editor". microsoft.github.io/monaco-editor. Archived from the original on 2017-08-30. Retrieved 2016-11-03.
- ^ "Microsoft's new Code editor is built on Google's Chromium". Ars Technica. 29 April 2015. Archived from the original on 7 May 2015. Retrieved 18 November 2015.
- ^ "Visual Studio Code for the Web". code.visualstudio.com. Archived from the original on 9 April 2024. Retrieved 11 April 2024.
- ^ "Programming Languages, Hundreds of programming languages supported". Microsoft. Archived from the original on 2017-05-11. Retrieved 2016-10-11.
- ^ Reid, Julia (2021-07-28). "Visual Studio Code C++ July 2021 Update: Disassembly View, Macro Expansion and Windows ARM64 Debugging". C++ Team Blog. Retrieved 2025-02-27.
- ^ "Debug code with Visual Studio Code".
- ^ a b "Language Support in Visual Studio Code". Visual Studio Code. October 10, 2016. Archived from the original on 2017-05-11. Retrieved 2016-10-12.
- ^ "Visual Studio Code User Interface". code.visualstudio.com. Archived from the original on 2024-08-06. Retrieved 2024-04-06.
- ^ "Terminal Basics". Archived from the original on 2025-04-17. Retrieved 2025-04-25.
- ^ "Terminal Shell Integration". Archived from the original on 2025-04-23. Retrieved 2025-04-26.
- ^ "Extending Visual Studio Code". Visual Studio Code. October 10, 2016. Archived from the original on 2016-10-18. Retrieved 2016-10-12.
- ^ "Managing Extensions in Visual Studio Code". Visual Studio Code. October 10, 2016. Archived from the original on 2021-01-24. Retrieved 2016-10-12.
- ^ "Creating Language Servers for Visual Studio Code". Visual Studio Code. Archived from the original on 2017-09-01. Retrieved 2017-02-27.
- ^ "Visual Studio Code FAQ". Visual Studio Code. Microsoft. Archived from the original on 28 August 2016. Retrieved 4 November 2016.
VS Code collects usage data and sends it to Microsoft to help improve our products and services. Read our privacy statement to learn more. If you don't wish to send usage data to Microsoft, you can set the telemetry.enableTelemetry setting to false.
- ^ "vscode/src/vs/platform/telemetry at main branch". microsoft/vscode repo. Microsoft. Archived from the original on 25 November 2021. Retrieved 24 March 2020 – via GitHub.
- ^ "vscode.dev(!)". Archived from the original on 2025-02-11. Retrieved 2025-02-27.
- ^ Chris, Dias (February 1, 2016). "Introducing the Insiders Build".
- ^ "Developer Survey Results 2016". Stack Overflow Insights. Stack Exchange. Archived from the original on 18 March 2016. Retrieved 7 April 2018.
- ^ "Developer Survey Results 2018". StackOverflow Insights. Stack Exchange. Archived from the original on 6 March 2020. Retrieved 7 April 2018.
- ^ "Developer Survey Results 2019 – Most Popular Development Environments". Stack Overflow Insights. Stack Exchange. Archived from the original on 7 March 2020. Retrieved 10 April 2019.
- ^ "Stack Overflow Developer Survey 2021 – Integrated Development Environment". Stack Overflow Insights. Stack Exchange. Archived from the original on 13 April 2022. Retrieved 11 August 2021.
- ^ "Stack Overflow Developer Survey 2022 – Integrated development environment". Stack Overflow Insights. Stack Exchange. Archived from the original on 27 June 2022. Retrieved 28 June 2022.
- ^ "Stack Overflow Developer Survey 2023 – Integrated development environment". Stack Overflow Insights. Stack Exchange. Archived from the original on 4 November 2023. Retrieved 8 November 2023.
- ^ "Technology | 2024 Stack Overflow Developer Survey". Stack Overflow Insights. Stack Exchange. Retrieved 12 November 2024.
- ^ "Technology | 2025 Stack Overflow Developer Survey". Stack Overflow Insights. Stack Exchange. Retrieved 11 August 2025.
- ^ "Stack Overflow Developer Survey 2020 – Development Environments and Tools". Stack Overflow Insights. Stack Exchange. Archived from the original on 1 November 2023. Retrieved 8 November 2023.
External links
[edit]Visual Studio Code
View on GrokipediaHistory
Initial development and announcement
In 2015, Microsoft initiated the development of Visual Studio Code (VS Code) as a lightweight, cross-platform code editor to address the needs of developers working on web and cloud applications, drawing inspiration from the Monaco editor originally created for Azure's cloud-based development environment.[10][11] The project aimed to provide a streamlined alternative to the full-featured Visual Studio IDE, emphasizing speed, extensibility, and accessibility across operating systems without the resource intensity of traditional integrated development environments.[12] This decision reflected Microsoft's broader shift toward open web technologies and cross-platform tools to attract a wider developer audience.[13] VS Code was publicly announced on April 29, 2015, during the keynote at the Microsoft Build developer conference in San Francisco, where it was positioned as a free tool optimized for modern development workflows.[12][13] The announcement highlighted its role as an open-source (under development) editor that would support extensions and integrate seamlessly with Microsoft's ecosystem, including Azure and GitHub, while remaining lightweight enough for quick launches and efficient performance.[1] At launch, it was described as supporting core editing features like syntax highlighting and IntelliSense for languages such as JavaScript, TypeScript, and Node.js, with plans for broader language coverage.[12] The initial preview version of VS Code was made available for download immediately following the announcement on April 29, 2015, targeting developers on Windows, macOS, and Linux platforms.[13][1] Built using the Electron framework, the editor leveraged web technologies—including HTML, CSS, and JavaScript—for its user interface and Node.js for backend services, enabling a consistent experience across desktop environments while rendering code via the Monaco editor component.[2] This architecture allowed for rapid prototyping and deployment, with the preview focusing on essential editing capabilities and built-in support for debugging and terminal integration from the outset.[12] Early adoption was swift, as the tool's free availability and cross-platform nature appealed to web developers seeking an alternative to heavier IDEs.[14]Open-sourcing and key milestones
Visual Studio Code transitioned to a fully open-source project under the MIT License when Microsoft released its source code on GitHub on November 18, 2015. This move enabled community involvement from the outset, fostering rapid iteration and extensibility through contributions. By 2025, the repository had attracted over 10,000 contributors, reflecting its robust collaborative ecosystem.[15][16] The stable version 1.0 arrived on April 14, 2016, a pivotal milestone that signaled the editor's readiness for production use after initial beta phases. This release solidified VS Code's cross-platform foundation and extension support, drawing over 2 million installations in its first year. Subsequent updates built on this stability, with key enhancements shaping its evolution.[1] Notable milestones include the introduction of multi-root workspaces in version 1.18 (October 2017), allowing users to manage multiple project folders within a single instance for improved monorepo and multi-project workflows. Remote development features debuted in version 1.35 (May 2019), enabling seamless coding in containers, on remote machines, or via Windows Subsystem for Linux (WSL) directly from the local editor. In October 2021, the browser-based vscode.dev launched, providing a lightweight, extension-compatible version of VS Code accessible without installation.[17][18][19] More recent releases continued to emphasize performance and usability. Version 1.85 (November 2023) delivered substantial optimizations, including faster startup times and reduced memory usage for large workspaces. Version 1.105 (September 2025, released October 9, 2025) introduced accessibility improvements, such as better preservation of user position in the Accessible View. The October 2025 (version 1.106) release on November 12, 2025, open-sourced GitHub Copilot Chat, advancing VS Code's role as an open-source AI editor. These updates underscore VS Code's ongoing refinement.[20][21][22] The project's growth is highlighted by its GitHub repository surpassing 160,000 stars by 2025, underscoring widespread adoption among developers worldwide.[15]Core Editing Features
Text editing and syntax support
Visual Studio Code's core text editing functionality is powered by the Monaco Editor, a browser-based code editor developed by Microsoft that provides robust support for writing and navigating code.[23] This foundation enables essential features such as syntax highlighting, which colorizes code elements like keywords, strings, and comments to improve readability, along with bracket matching that highlights corresponding pairs (e.g., parentheses, curly braces) as the cursor approaches them, and code folding that allows users to collapse and expand sections of code based on indentation or syntax structures like functions and blocks.[24] These capabilities are available out-of-the-box for hundreds of languages, including JavaScript, TypeScript, HTML, CSS, Python, and C++, without requiring additional installations.[6] Syntax support in Visual Studio Code relies on TextMate grammars, a regex-based tokenization system originally from the TextMate editor, which parses code into scopes and applies thematic styling for accurate highlighting across diverse file types.[25] Since version 1.43, semantic tokens provided by language servers offer enhanced, more precise highlighting based on the language's semantic model, complementing TextMate grammars.[25] Language detection occurs automatically based on file extensions or content patterns, with users able to override it manually via the status bar or the "Change Language Mode" command (Ctrl+K M).[6] For instance, a.js file defaults to JavaScript mode, enabling immediate syntax coloring and folding for constructs like arrow functions or object literals.[6] This system ensures consistent visual aids even for embedded languages, such as CSS within HTML.[25]
Key editing mechanics include multi-cursor support, which lets users place multiple cursors simultaneously—via Alt+Click for arbitrary positions, Ctrl+D to select successive occurrences of a word, or Shift+Alt+Down to add cursors on consecutive lines—facilitating efficient simultaneous edits across repeated code patterns.[26] Find and replace operations support regular expressions, case sensitivity, and whole-word matching, accessible through Ctrl+F for in-file searches or Ctrl+Shift+F for workspace-wide queries, with options like Preserve Case for transformations.[26] Snippets provide reusable templates for boilerplate code; users can insert them via the IntelliSense suggestion list or the "Insert Snippet" command (Ctrl+Shift+P), and custom snippets can be defined in JSON files for language-specific needs, such as a basic HTML structure.[24] Visual Studio Code provides an instant toggle for word wrap using the keyboard shortcut Alt + Z on Windows and Linux or Option + Z on macOS, allowing users to quickly enable or disable text wrapping based on the editor's viewport width.[26][27][28]
For web development, Visual Studio Code integrates Emmet, a toolkit for expanding abbreviations into full HTML or CSS structures directly in the editor.[29] Typing an abbreviation like div.container>p and pressing Tab expands it to <div class="container"><p></p></div>, with support in files like HTML, JSX, CSS, and SCSS by default; custom extensions can enable it for other languages via settings like emmet.includeLanguages.[29] Filters such as BEM or comment wrapping further customize output, streamlining markup creation.[29] While core features suffice for basic editing, extensions from the marketplace can extend syntax support for niche languages or advanced tokenization.
IntelliSense and code completion
IntelliSense in Visual Studio Code provides intelligent code editing assistance, including auto-completions, parameter information, and quick info tooltips, to enhance developer productivity across various programming languages.[30] These features are triggered automatically by typing or via keyboard shortcuts like Ctrl+Space, offering context-aware suggestions based on semantic analysis of the code.[30] For languages such as JavaScript, Python, and TypeScript, IntelliSense relies on the Language Server Protocol (LSP), a standardized communication method between the editor and external language servers that deliver completions, diagnostics, and other language-specific services.[31] Out-of-the-box support includes JavaScript and TypeScript through built-in language services, while extensions from the Visual Studio Marketplace enable richer IntelliSense for Python and other languages via dedicated LSP implementations.[30] Beyond basic completions, IntelliSense supports navigation features like finding symbols, definitions, and references across files and workspaces, allowing developers to jump to declarations or locate usages efficiently.[31] In TypeScript projects, it integrates deeply with the TypeScript language service for real-time type checking, displaying type information (such as inferring 'any' types in JavaScript) and suggesting refactorings through code actions.[30] This integration ensures accurate suggestions that respect type safety and project configurations, such as tsconfig.json files.[30] Parameter info appears as inline tooltips showing function signatures and current argument positions, while quick info provides hover-based documentation and type details on symbols.[31] To handle large codebases effectively, IntelliSense incorporates performance optimizations, including running language servers in separate processes to isolate them from the editor's main thread and using incremental text document synchronization to minimize data transfer during edits.[31] Settings likeeditor.quickSuggestionsDelay (defaulting to 10 milliseconds) allow fine-tuning of suggestion timing, reducing latency in expansive projects.[30] These mechanisms ensure responsive behavior even in monorepos or multi-root workspaces, though extensions may vary in optimization quality.[31]
Development Tools
Debugging capabilities
Visual Studio Code offers comprehensive debugging support through its integrated debugger, which includes built-in functionality for JavaScript, TypeScript, and Node.js applications, as well as direct integration for debugging in Chrome browsers.[32] For additional runtimes such as Python, C++, PHP, Ruby, Go, C#, and PowerShell, debugging is facilitated via extensions from the Marketplace that leverage the Debug Adapter Protocol (DAP).[32] The DAP serves as a standardized, JSON-based protocol for communication between Visual Studio Code and separate debug adapter processes or libraries, enabling consistent debugging experiences across diverse languages and environments without requiring custom UI implementations.[33][34] Core debugging features encompass a range of tools for precise code inspection and control. Breakpoints can be set by clicking the editor gutter or pressing F9, supporting types such as conditional breakpoints (triggered by expressions or hit counts), function breakpoints, data breakpoints, inline breakpoints, and logpoints that log messages without halting execution.[32] The call stack is displayed in the Run and Debug view, allowing navigation through execution frames, while the Variables pane enables real-time inspection, editing, and watching of local, global, and closure variables.[32] Variable values can also be evaluated interactively in the Debug Console, which functions as a read-eval-print loop (REPL) during sessions.[32] Launch configurations provide flexible setup for debugging sessions and are defined in a workspace-specificlaunch.json file within the .vscode folder.[35] These configurations specify essential attributes like the debugger type (e.g., "node" for Node.js), request type ("launch" to start a program or "attach" to connect to a running process), program entry point, arguments, environment variables, and pre-launch tasks.[35] For multi-target scenarios, such as debugging interdependent client-server applications, compound configurations in launch.json allow simultaneous execution of multiple setups, streamlining complex workflows.[35]
For simple web projects involving HTML, CSS, and JavaScript, the launch.json file defines debug configurations but does not directly list or include project files such as index.html, script.js, or style.css within its content. These files are part of the workspace, and a typical configuration launches a browser (e.g., Chrome) to load index.html as the entry point. This setup enables breakpoints and debugging in associated JavaScript files through source maps, although CSS files are not directly debuggable in the same manner as JavaScript. An example configuration is:
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch index.html",
"file": "${workspaceFolder}/index.html"
}
]
}
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch index.html",
"file": "${workspaceFolder}/index.html"
}
]
}
onDidChangeActiveStackItem.[38] These updates build on the extensible DAP architecture to enhance overall debugger reliability and integration.[34]
IntelliSense assists in authoring launch.json by offering autocompletion for configuration attributes, reducing setup errors.[35]
Integrated terminal
Visual Studio Code includes a built-in integrated terminal that allows developers to execute command-line operations directly within the editor environment, eliminating the need to switch to external applications.[39] This terminal supports multiple shells across platforms, including PowerShell, Bash, and Command Prompt on Windows, as well as system-default shells like those from WSL or Git Bash, which can be configured through customizable terminal profiles.[39] Users can create multiple terminal instances and arrange them in split panes using shortcuts such as ⌘\ on macOS or Ctrl+Shift+5 on Windows, with options to inherit or set working directories independently for each pane.[39] The terminal integrates seamlessly with VS Code's task system via the.vscode/tasks.json file, enabling automated build and run processes by executing shell commands in dedicated or shared terminal panels. For instance, tasks can specify commands like TypeScript compilation with arguments and control terminal visibility through properties such as "reveal": "always" and "panel": "new". Additionally, problem matchers in tasks.json parse terminal output to identify errors and warnings—using predefined patterns for tools like ESLint or GCC—displaying them as diagnostic icons in the editor and problems panel for quick navigation.
Key features enhance usability, including searchable command history that draws from the current session, previous sessions, or shell history files, accessible via the "Terminal: Run Recent Command" action with fuzzy search support. Cursor navigation is improved through shell integration, allowing reliable movement between commands with Ctrl/Cmd+Up/Down arrows and selection of output lines via Shift modifiers, while direct file opening from terminal output is facilitated by clickable links for paths and URLs, detected via current working directory awareness. The terminal also maintains a scrollback buffer of up to 1000 lines by default, with Alt+click for cursor repositioning.[39]
Cross-platform compatibility ensures consistent behavior on Windows, macOS, and Linux, with platform-specific shell detection and shortcuts.[39] Rendering performance benefits from GPU acceleration, enabled by default in recent Electron-based versions of VS Code for smoother terminal output, though it can be disabled via the "terminal.integrated.gpuAcceleration": "off" setting if hardware issues arise.[40] In debugging sessions, the integrated terminal can display program output and accept input for interactive runs, complementing breakpoint-based inspection.[39]
The integrated terminal is particularly useful for running Python web applications with live preview capabilities. For Streamlit apps, developers can execute streamlit run app.py in the terminal, which starts a local server with built-in re-execution on file saves for hot-reload and automatically opens the application in the default web browser.[41] Similarly, for Flask frameworks, running python -m flask run launches the development server with auto-reload functionality, allowing code changes to be reflected without manual restarts.[42] For Django projects, the command python manage.py runserver initiates the server, which includes a StatReloader that automatically reloads upon detecting file changes.[43]
In 2025, terminal features saw further improvements. Version 1.99 (March 2025) enhanced reliability of command execution in agent mode and introduced preview Terminal IntelliSense for code CLI subcommands, global command auto-refresh, and completions for fish shell.[44] By version 1.106 (October 2025), Terminal IntelliSense became the default, offering completions for PowerShell, bash, zsh, and fish shells, including support for CLI tools like Copilot and azd, along with a consolidated shell integration timeout setting and experimental controls for chat tool interactions.[45]
Source control integration
Visual Studio Code provides built-in support for Git as its primary source control management (SCM) system, requiring Git version 2.0.0 or later to be installed on the user's machine.[5] This integration allows developers to perform common Git operations directly within the editor without needing external tools.[5] The Source Control view, accessible via the Activity Bar icon or the keyboard shortcut Ctrl+Shift+G (Cmd+Shift+G on macOS), serves as the central interface for Git workflows.[5] It displays sections for Changes, Staged Changes, and Merge Changes, enabling users to stage and unstage files through contextual menus, drag-and-drop actions, or a dedicated "Stage All Changes" button.[5] Committing is facilitated by entering a message in the input box above the changes list, followed by Ctrl+Enter (Cmd+Enter on macOS), with support for AI-generated commit messages via extensions like GitHub Copilot.[5] Branching and merging are handled through the Command Palette, where commands such as "Git: Create Branch" and "Git: Checkout to" allow creation and switching of branches, while merge conflicts are resolved inline or via a three-way merge editor.[5] VS Code has built-in support for Git worktrees, which enable working on multiple branches simultaneously in separate directories for parallel development. Users can create, open, and manage worktrees using commands available in the Command Palette, such as "Git: Create Worktree from..." and "Git: Open Worktree...", or through the Source Control Repositories view. This feature was introduced in version 1.108 (December 2025).[46] Additional Git features enhance visibility and history tracking. The visual diff viewer displays changes in the editor with options to stage or revert hunks, using a unified patch format for side-by-side comparisons.[5] Blame annotations can be toggled inline within the editor or shown in the Status Bar via the "Git: Toggle Git Blame" command, attributing lines to their committing authors.[5] The Timeline view, located at the bottom of the Explorer pane, provides a chronological history of file events, including Git commits, and was introduced in version 1.44 in March 2020; it extends to non-Git changes like file saves for broader version tracking.[47] VS Code's Git integration automatically respects .gitignore files, excluding specified patterns from staging and the Source Control view.[5] In 2025, source control received updates to improve multi-repository and reference handling. Version 1.99 (March 2025) added commit details and ahead/behind information to the reference picker (toggleable viagit.showReferenceDetails) and introduced a repository status bar item for active repositories in multi-repo workspaces.[44] Version 1.106 (October 2025) introduced folding support for Git commit messages (enabled with git.verboseCommit and git.useEditorAsCommitInput), graph views for incoming and outgoing changes (controlled by scm.graph.showIncomingChanges and scm.graph.showOutgoingChanges), a "Compare with..." command in the Source Control Graph context menu, and an experimental Repositories Explorer for branches and tags (toggleable via scm.repositories.explorer).[45]
While Git is the core focus, VS Code supports other version control systems through extensions available in the Visual Studio Marketplace. For example, the SVN extension by Johnston Code integrates Subversion (SVN) SCM, allowing staging, committing, and diff operations similar to Git.[48] Users can switch SCM providers via the overflow menu in the Source Control view if multiple extensions are installed.[5]
Workspace Management
File handling and multi-root workspaces
Visual Studio Code manages files and projects through workspaces, which represent a collection of one or more folders opened in a single editor instance, enabling scoped settings, tasks, and UI state for efficient project organization.[49] A single-folder workspace is created by opening a directory via the File menu or command line, while multi-root workspaces extend this to multiple independent folders, ideal for scenarios like monorepos or related projects such as a codebase alongside its documentation.[50] This structure supports seamless navigation and configuration without requiring nested folder arrangements on disk.[49] The Explorer view serves as the primary interface for file handling, presenting a tree-like navigation of workspace folders and files on the left sidebar, allowing users to expand, collapse, and manage resources directly.[8] Users can search across all files in the workspace using the integrated search panel (accessed via Ctrl+Shift+F on Windows/Linux or Cmd+Shift+F on macOS), which groups results by file and provides previews of matches, with options for regex patterns and case sensitivity to refine queries. Additionally, the Outline view, integrated at the bottom of the Explorer, displays a symbol tree for the active editor file, outlining functions, classes, and variables based on language support, facilitating quick jumps to specific code elements.[24] Multi-root workspaces were introduced to address the limitations of single-folder setups, particularly for large-scale projects like monorepos, and became stable in version 1.18 in October 2017.[51] These workspaces are defined in a.code-workspace JSON file, which lists folder paths—either absolute or relative to the file's location—in a "folders" array, along with optional workspace-specific settings and extensions; for example, {"folders": [{"path": "./project1"}, {"path": "./project2"}]}.[50] This file can be saved via the File > Save Workspace As command and reopened to restore the exact configuration, promoting reproducibility across machines.[49]
Settings in multi-root workspaces follow an inheritance model where user-level configurations apply globally unless overridden by workspace settings in the .code-workspace file, which in turn can be further customized per folder using .vscode/settings.[json](/page/JSON) files within each root directory.[50] Folder-specific configurations, such as debugging setups in launch.[json](/page/JSON) or tasks in tasks.[json](/page/JSON), remain isolated to their respective roots, ensuring that changes in one project do not affect others.[52] For large workspaces, VS Code optimizes performance through search exclusions defined in search.exclude settings, which use glob patterns to skip irrelevant files or directories like node_modules or build outputs, preventing slowdowns during indexing. While not employing a full virtual file system for local operations, this approach scales to handle extensive folder structures efficiently by scoping operations to opened roots.[49]
In multi-root setups, source control integration respects folder boundaries, displaying separate providers (e.g., Git repositories) for each root in the Source Control view.[50]
Command Palette and keybindings
The Command Palette serves as a central hub in Visual Studio Code for discovering and executing commands, accessible via the keyboard shortcut Ctrl+Shift+P on Windows and Linux or Cmd+Shift+P on macOS.[8] It features a searchable interface that allows users to quickly run editor commands, open files, search for symbols, or view outlines without navigating menus.[8] For instance, typing "Open Settings" invokes the workbench.action.openSettings command to launch the settings editor, while "Reload Window" executes workbench.action.reloadWindow to restart the application.[8] This palette encompasses a large set of built-in commands, enabling efficient workflow management across various development tasks.[53] Keybindings in Visual Studio Code can be customized through the keybindings.json file, which allows users to remap default shortcuts to match personal preferences or other editors.[54] To edit this file, users access the Keyboard Shortcuts editor via the Command Palette and select the Open Keyboard Shortcuts (JSON) option, where entries follow a JSON array format specifying the key, command, and optional when clause.[54] For example, a binding like{ "key": "ctrl+d", "command": "editor.action.deleteLines", "when": "editorTextFocus" } deletes the current line when Ctrl+D is pressed in an editor.[54] Conflict resolution occurs by evaluating rules from bottom to top in the file, with the first matching rule taking precedence; users can detect overlaps by right-clicking a shortcut and selecting "Show Same Keybindings," and remove unwanted defaults using negative commands like { "key": "tab", "command": "-jumpToNextSnippetPlaceholder" }.[54]
The when clause in keybindings.json enables context-specific bindings using logical operators such as ==, !=, &&, and ||, ensuring shortcuts activate only under defined conditions like specific languages or UI states.[54] For example, { "key": "f5", "command": "workbench.action.debug.start", "when": "debuggersAvailable && !inDebugMode" } starts debugging only when debuggers are available and not already in debug mode.[54] This system supports workspace-specific keybindings, allowing overrides tailored to individual projects without affecting global settings.[54]
Commands contributed by extensions integrate seamlessly into the Command Palette and keybindings system, appearing alongside built-in options and respecting the same search and customization mechanisms.[53] Extensions register their commands via the contributes.commands section in their package.json, making them discoverable and executable in the same interface.[55]
Accessibility features in recent versions of Visual Studio Code include voice command support through the VS Code Speech extension, introduced in version 1.86 (January 2024), which enables activation via the "Hey Code" keyword for tasks like starting chat sessions.[56] This local voice recognition system, configurable via settings like accessibility.voice.keywordActivation, supports options such as chatInView or inlineChat and displays a microphone icon in the status bar when listening.[56] Version 1.95 (October 2024) enhanced this with improved speech-to-text accuracy for integrations like Copilot Chat, using the updated Azure Speech SDK.[57]
Extensibility and Customization
Extensions marketplace
The Visual Studio Code Extensions Marketplace serves as the central hub for discovering and distributing add-ons that enhance the editor's capabilities, ranging from language support to productivity tools. Hosted officially at marketplace.visualstudio.com/vscode, it enables developers to browse, install, and manage extensions seamlessly integrated into VS Code. As of 2025, the marketplace hosts over 60,000 extensions, fostering a vibrant ecosystem where individuals and organizations contribute specialized functionality.[58][59] Extensions are installed directly through the Extensions view in VS Code, which provides search functionality, detailed previews, and one-click installation from the marketplace. Once installed, extensions receive automatic updates by default, ensuring users benefit from the latest features and fixes without manual intervention. Additionally, VS Code intelligently recommends extensions based on the programming languages and file types detected in the active workspace, helping developers quickly adopt relevant tools for their projects.[60][61] Extensions can be enabled or disabled at different scopes: globally, per workspace, or temporarily for the current window. Enabling for the workspace persists the setting in the workspace configuration (e.g., .vscode/settings.json), ensuring the extension remains enabled across sessions. Enabling for the window is temporary and applies only to the current session, resetting upon closing the window. This distinction allows for persistent configuration in projects while providing flexibility for testing or multi-window workflows.[62] Among the most widely adopted extensions are Prettier, which automatically formats code according to configurable style rules for languages like JavaScript, TypeScript, and CSS, and Live Server, which starts a local HTTP server with live reload capabilities for efficient web development previews. Extensions are organized into categories such as themes for interface customization, linters for enforcing code standards and identifying errors, and debuggers for advanced runtime inspection and breakpoints. These categories allow users to tailor VS Code to specific workflows, from front-end development to data science.[63][64][61] Visual Studio Code is recommended for Flutter development due to its lightweight and fast performance, including quick startup times and low RAM usage, as well as its extensive community adoption. The official Flutter extension enhances VS Code with features such as code completion, hot reload and restart, live debugging, and device management. Its cross-platform support and straightforward setup via the Flutter and Dart extensions make it particularly suitable for beginners, solo developers, and tasks involving iteration on sensor code and user interfaces. For Flutter projects, enabling the extension for the workspace is recommended to ensure consistent access to features like hot reload, debugging, and widget inspector across sessions, while enabling for the window is temporary and better suited for troubleshooting or temporary use.[65] To mitigate risks from third-party code, the marketplace incorporates robust security measures, including automated virus and malware scans on every extension package before publication. Extension signing, which verifies the authenticity and integrity of extensions using digital signatures applied by the marketplace upon upload, was introduced in January 2023 to prevent tampering. Furthermore, ongoing vulnerability scanning detects potential security flaws in extension code, with proactive reviews removing malicious submissions; for instance, in the first half of 2025 alone, over 100 such extensions were identified and blocked.[66][67][68] Developers can create their own extensions using the official Yeoman generator. To get started, install Yeoman and the VS Code Extension generator globally withnpm install -g yo generator-code, then run yo code to scaffold a new extension project. Begin with a simple command implementation, and gradually add user interface elements as needed. Extensions can be tested locally by launching the Extension Development Host via F5 in VS Code. Once developed, extensions can be published to the Marketplace for distribution. For inspiration, developers can study open-source extensions such as GitLens and Better Comments, particularly focusing on niches within specific programming languages or technology stacks.[69]
Themes, settings, and AI integrations
Visual Studio Code allows users to personalize the editor through a comprehensive settings system, primarily configured via thesettings.json file. This file enables tweaks to user interface elements such as font size, zoom levels, and editor behaviors like word wrap or bracket matching, with both global user settings and workspace-specific overrides supported.[52] Users can access and edit settings.json directly using the Command Palette command "Preferences: Open User Settings (JSON)," facilitating precise customization without relying on the graphical Settings Editor.[52]
To maintain consistency across multiple machines, VS Code includes a built-in Settings Sync feature that shares configurations, including settings.json contents, keyboard shortcuts, and installed extensions, via a Microsoft or GitHub account.[70] This eliminates the need for third-party extensions for basic synchronization, though advanced users may still employ extensions for additional syncing options like GitHub Gists.[70]
For visual customization, VS Code supports a wide array of color themes that alter the editor's interface and syntax highlighting, with options for light, dark, and high-contrast modes to suit different environments and accessibility needs.[71] Icon themes, available through the Extensions view, replace default file and folder icons with stylized packs, enhancing visual navigation in the Explorer sidebar.[71] Semantic highlighting further refines code presentation by leveraging Language Server Protocol (LSP) data to apply context-aware colors to symbols, overriding basic syntax highlighting for improved readability in supported languages.[72]
AI integrations in VS Code have evolved to include built-in support for code generation and assistance tools. GitHub Copilot, introduced as an extension in 2021, provides inline code suggestions, autocompletions, and natural language-based implementations directly within the editor, powered by large language models.[73] Other AI tools like the Cursor editor (a VS Code fork) and Codeium integrate via extensions, offering similar autocomplete and chat functionalities for code explanation and generation without requiring a full editor switch.[74] Examples of Agent modes in VS Code include Continue.dev, an open-source extension providing flexible Agent mode with sidebar and inline integration for autonomous coding tasks using tools and permissions; Cursor, featuring strong Agent and Composer modes as a proprietary, premium-focused fork with cloud-based autonomous editing; and Copilot Agent, a guided, interactive mode tied to the Microsoft and GitHub ecosystem for local, background, or cloud operations.[75][76][77] These Agent modes share characteristics such as native editor integration with sidebar chat, inline autocomplete, code highlighting, and visual diffs, along with polished UI elements like icons and themes, though model flexibility varies by tool and provider.[75][76][77] In version 1.100 (April 2025), VS Code enhanced the Copilot Chat with support for custom instructions and reusable prompts, enabling users to request code explanations, refactoring suggestions, and tailored AI responses within the editor sidebar for more seamless workflows.[78] In November 2025, Microsoft announced the second milestone toward making VS Code an open source AI editor, further integrating AI tools natively.[79]
Remote and Variant Access
Remote development options
Visual Studio Code supports remote development through a collection of extensions that enable editing, running, and debugging code in remote environments, containers, or the Windows Subsystem for Linux (WSL) while maintaining a seamless, local-like interface.[80] These tools install a lightweight VS Code Server on the target environment, which handles extension execution, terminal interactions, and file operations remotely, while forwarding the full user interface—including IntelliSense, themes, and keybindings—to the local client for responsive performance.[80] The Remote - SSH extension facilitates development on distant servers or virtual machines by establishing a secure connection over SSH, allowing users to open folders, install extensions, and execute commands directly on the remote host without needing to sync files locally.[81] This setup supports port forwarding for accessing remote services, such as web servers, as if they were running locally, and ensures that resource-intensive tasks like compilation occur on the server to optimize local machine usage.[81] For container-based workflows, the Remote - Containers extension integrates with Docker to provide isolated development environments, leveraging the open Dev Containers specification to define reproducible setups.[82] Originally spearheaded by Microsoft and now governed by an open-source specification maintained by the community, Dev Containers allow developers to define their entire development environment as a container image using a declarative configuration. The specification uses a.devcontainer.json file in the project root or a .devcontainer folder to configure elements such as the base container image (e.g., from Microsoft’s devcontainer images registry), required extensions, runtime settings, and features like automatic port exposure or post-create commands for installing dependencies.[82][83] This approach ensures consistency across development teams by version-controlling the entire environment, including tools and libraries, and mounts the local workspace into the container for direct file editing.[82] The underlying principles emphasize reproducibility and isolation, enabling developers to specify exact versions of languages, runtimes, and tools, which significantly boosts productivity by reducing setup time, minimizing environment discrepancies, and facilitating easier onboarding for new team members. For example, it eliminates "it works on my machine" issues by providing identical environments across local, remote, and cloud setups.[82] Dev Containers also play a pivotal role as the backbone for cloud-based development environments, such as GitHub Codespaces, where the specification is used to provision and configure remote virtual machines with pre-defined development setups, allowing seamless transitions between local and cloud development.[84]
The Remote - WSL extension enables Windows users to develop Linux-native applications by connecting to a WSL distribution, where the VS Code Server runs inside Linux to provide full access to Unix toolchains, file systems, and binaries without compatibility issues or manual path translations.[85] Developers can open WSL folders via the Command Palette or terminal integration, supporting features like Git operations and package management native to Linux.[85]
These remote options extend core capabilities, such as basic debugging, to the target environment by executing debuggers remotely while displaying results in the local UI.[80] In version 1.85 (November 2023), updates enhanced integration with GitHub services by automatically installing extensions like GitHub Copilot in Dev Containers, streamlining workflows for cloud-based environments such as GitHub Codespaces.[20]