Visual Studio 2020

Apr 19, 2021 Visual Studio has intellisense and has nice support for plug-ins, but is bulky. While, Visual Studio Code is a fast, powerful multi-language IDE with out of the box front-end development, but is a resource hog at times. Visual Studio Community 2019 – Free IDE and Developer Tools 2020-12-14T11:03:28-08:00 Visual Studio Community A fully-featured, extensible, free IDE for creating modern applications for Android, iOS, Windows, as well as web applications and cloud services.

The whole idea of taking advantage of these Visual Studio hotkeys is to increase productivity and save time. With these 20 Visual Studio keyboard shortcuts, developers have easy ways to get more done without lifting a finger off the keyboard. these hotkeys work for Visual Studio 2015 to the latest Visual studio 2019.

Visual Studio Preview gives you early access to the latest features and improvements not yet available in the main release. By trying Preview, you can take advantage of new builds and updates that ship on a frequent cadence. Sep 29, 2020 10 Best Themes for Visual Studio Code 2020. Whether you're a night owl or an early bird, choose your weapon.

1. CTRL+Q for Quick Launch

CTRL+Q opens the quick launch so you can search an indexed list of every feature available in Visual Studio. For example, If you want to do add a new item, use the quick launch with that as your search term and receive guidance on how to do that.

In Visual Studio, users can apply Quick Launch to instantly explore and complete activities for IDE as elements like templates, options, and menus. One thing to remember is that users can’t apply Quick Launch to explore for code and figures.

2. CTRL+ ] Finds Closing Braces

With a lot of nested statements, it can be tough to keep track of opening and closing braces which, if missing, can cause compiler errors. Use CTRL+ ] to find the matching closing brace of a function or class and reduce the chance of falling prey to annoying error messages.

3. CTRL+K+F Formats Sloppy Code

Sometimes making code work comes at the expense of making it look good. Proper indentation and spacing make code readable and that’s how CTRL+K+F works. Just highlight the section you need to format and it cleans up sloppy coding like magic.

4. TAB Automates Tedious Typing

For loops and if-then conditions have a standard structure that’s tedious to type over and over. To automate that process, you just need to type the beginning of your condition. For example, type ‘Try,’ hit the TAB key twice, and you get access to the snippets that complete the condition for you down to the braces. All you have to do is modify the parameters and you’re good to go.

5. CTRL+SHIFT+F5 to Stop and Re-Build

This shortcut combines three debugging Visual Studio code commands in one. CTRL+SHIFT+F5 lets you end the debugging session, rebuild it, and create a new debugging session.

6. Hot Keys: CTRL+K+C for Bulk Comment & CTRL+K+C for Uncomment

Manually adding and removing ‘//’ is tedious especially, if you have a long piece of code you want to deactivate. CTRL+K+C is a quicker way to bulk comment. Just highlight the block and type the Visual Studio shortcuts. When you need to make those lines active again, highlight the block and use CTRL+K+U to uncomment.

You can also use Ctrl+Shift+/ for toggling. The toggling can be used for block comments because Ctrl+/ is a shortcut for toggling line comments and block comments. To execute this, click on the settings and then click ‘Keyboard Shortcuts’. Here you will see a “toggle block.” Now, click and enter your combination.

7. ALT+SHIFT+ENTER for Improved Full Screen

Having multiple screens open helps you multitask. But if you want to focus on one section, going full screen used to mean losing important panels like the menu bar. ALT+SHIFT+ENTER lets you go full screen, but you retain access to your menu and panels. Another benefit is that you gain access to another four to 10 extra lines of code, depending on your screen resolution.

8. Ctrl+K+S Automatically Adds Code To Your Conditions

You’ve got your TRY-CATCH or IF loop structure but still need some code to put inside. Use Ctrl+K+S to open up a contextual menu from which you can choose the snippets you need to populate your condition.

9. Bookmarking Code Hot Keys: CTRL+K+K, CTRL+K+N & CTRL+K+P

Bookmarks help you keep track of the special markers in your code. For example, if there’s a function that you’re constantly referring to, CTRL+K+K marks that line with a little dot at the left. Additionally, use CTRL+K+N to cycle to the next bookmark in the list and CTRL+K+P for previous bookmarks. Just remember that the bookmark tags the line of the code, not the code itself.

10. CTRL+SHIFT+V for the Clipboard Ring

The Clipboard Ring is a Visual Studio feature that allows copying multiple code blocks and pasting them. Users can copy various lines of code and put them in the clipboard. These lines of code can then be pasted when required. This improves development productivity. The copied code is stored in a memory, and users can use them in IDE.

CTRL+C allows you to keep the last 15 copied pieces of content in the clipboard. CTRL+SHIFT+V gives you access to this clipboard ring where you can scroll through the list of copied lines until you find the one you want to paste.

11. CTRL+M+M & CTRL+M+O Hot Keys to Collapse Code

If your code file is too long and you want to make it more manageable, consider minimizing it with CTRL+M+M Visual Studio code shortcut keys. Just select the whole file and use this hotkey to collapse all functions to the most basic view. You can re-expand a specific section to see what you want. You can also use CTRL+M+O to collapse to the definition level, which may be a more useful view.

12. ALT Hot Key for Block Modify

You have a code block and want to edit an event so that it’s reflected throughout the other lines in the block. Instead of changing each line individually, hold ALT then click and drag to highlight that block. Type the change you want and you’ll see all selected lines change at once.

13. Block Move VS Hot Keys: ALT+↑ & ALT+↓

In Microsoft, visual studio users can choose a block of text by pressing down the Alt key when choosing code and text with the mouse. This is particularly helpful for selecting a string of data or code as opposed to the whole line.

These Microsoft Visual Studio shortcuts are faster alternatives to copy-move-paste. To change the location of a certain block of code, highlight the lines then click ALT+↑(up arrow) to move all lines up at once or ALT+↓ (down arrow) to move all likes down.

14. F12 & SHIFT+F12 Visual Studio Shortcut Keys to Find References

In Visual Studio, users can use the Find All References to see where the required code details have referenced the codebase thoroughly. The Find All References is accessible on the context list or just press Shift + F12.

To see the instance of a class, hover over the name and hit F12. To see everywhere you’ve used that class, use SHIFT+F12.

15. CTRL+- & CTRL+SHIFT+- to Step Through History

These VS code hotkeys are absolutely necessary. Image, you’ve been scrolling down many lines of code and want to go back to some reference that’s 100 lines away. Instead of scrolling up or down to find that place, use CTRL+-(minus) to step backward through the navigation history, which shows everywhere, you’ve clicked and in the order, you clicked them. To go forward, use CTRL+SHIFT+-.

Check all Visual Studio hotkeys in this video tutorial:

16. CTRL+SHIFT+B to Build

The Build-in Microsoft visual studio means compile and connect only the root files that have been modified since the previous build. The Rebuild feature in Microsoft Visual studio means compile and connect all root files despite whether they changed or not.

CTRL+SHIFT+B is a quicker way to build a solution.

17. CTRL+. for Autocomplete

Use these Visual Studio keyboard shortcuts if you want to create a new task, for example. Type the word ‘task’ and use CTRL+. (dot) to see a menu. Press enter and you’ll see the namespace appear. Autocomplete helps with any coding issues, such as maintaining naming conventions.

18. CTRL+R+R Renames A Property

You do a build and find that you didn’t name a property properly. Instead of hunting for every reference, click on the variable and use CTRL+R+R. This hotkey will not only rename the property but also change the name wherever it’s referenced. When you click Apply, you’ll see all the references it will rename.

19. F11 Steps Into Constructor

These Visual Studio hotkeys can be useful when you’re debugging. If you want to step into a function as far as it can go and not just move to the next line, press F11 to jump into the constructor.

Always remember that it doesn’t work if you are debugging a static constructor. If not, then it works as usual. For this, the constructor is only called the once. So, before the class is accessed for the first time always make sure that the debugger is attached to it.

20. ALT+ENTER for Quick Action

When you see the light bulb, it means there’s an easier action to take. You can take advantage of the hotkey shortcuts. For example, if you have unused USING statements or if you want to add a clause, ALT+ ENTER will get rid of unnecessary statements as well as add that recommended snippet to your clause.

21. Ctrl+K for Removing Bookmarks


Visual Studio contains a characteristic that enables users to add a bookmark. This bookmark can be added to a line of code in a solution. As with a regular bookmark that instantly enables users to go back to the last place, the Visual Studio allows users to immediately find a labeled line in the code. Users can generate many bookmarks and they can instantly navigate between them. Now, to remove this bookmark we have a shortcut key Ctrl+K.

These Visual Studio code hotkeys are useful for removing the syntax of the comment from the prevailing line or currently marked lines of code. For example, if you are using the code editor and you want to remove the already written syntax of comments then Ctrl-K comes under the text manipulation Visual Studio keyboard shortcuts.

22. Ctrl+Shift+O for Opening a Project

This key is part of project-related shortcuts. For example, you are using Microsoft Visual Studio and you have developed a new project called “MyProject”. Now, if you want to open this project in the code editor then Ctrl+Shift+O can be used. The project Visual Studio code shortcut keys are very useful if you are working on a big project and repositories.

23. Ctrl+Alt+Insert to override the base class

This shortcut key is also part of project-related Visual Studio shortcut keys. For example, if you want to override base class methods. Now, you want to achieve this in an already derived class when an overridable method is called. To execute this in the Class View pane you can use the Ctrl+Alt+Insert key.

24. Ctrl+I for incremental search

This shortcut key is the part of Search and replaces related Visual Studio hotkeys. This hotkey starts an incremental search. After pressing Ctrl+I, the user can insert the text. Once the text has been entered, this key will help in finding the text and the related pattern. The search and replace Visual Studio keyboard shortcuts are useful in finding various codes and comments from the code editor.

25. Alt+F3, R for Regular Expression

This shortcut key is also part of Search and replaces related Visual Studio code shortcuts. This key is used for selecting or clearing the Regular Expression option. With the help of Alt+F3, R the special characters can be used in the Find and Replace methods.

26. Ctrl+Alt+M,1 for Memory 1 window

This key is the part of Debugging related Visual Studio commands. This shortcut key displays the Memory 1 window to observe memory in the method being debugged. This is especially beneficial when you do not have debugging figures ready for the code. It is also important for studying at large buffers.

27. Ctrl+Alt+J for Object Browser

This key is part of Object browser-related Microsoft Visual Studio shortcuts. This displays the Object Browser to inspect the classes, attributes, processes, events, and constants specified either in the project or by elements and sample libraries referenced by the project.

28. Ctrl+Shift+M for the Tool window

In the visual studio, the Tool window is a child window of the integrated development environment. The IDE is used to display various information. Each view includes two tool window collections. These are known as primary, the secondary. In this, only one tool window from each collection or group can be active.

This shortcut key is part of Tool window-related commands. This switches the window inside or out of a method enabling text inside the window to be chosen.

29. Ctrl-Page down for Window manipulation

This key is part of Windows manipulation-related Visual Studio code shortcut keys. It allows moving to the next tab in the document or window. For example, if you can switch the HTML editor from its design view to HTML view.

30. Shift+F8 for the cursor

Visual Studio enables users to create cursors. In Visual Studio, users can create a cursor file. This File is a bitmap file. cur extension. For creating this file, just right-click on the selected project and select Add New Item. Now, select Cursor File and this will create a .cur file.

This shortcut key is part of General Visual Studio code commands. This key moves the cursor to the preceding item, for instance in the TaskList window or Find Results window.

31.Ctrl+Alt+L for Solution Explorer

This hotkey displays the Solution Explorer. The solution explorer is responsible for listing the projects and files in the current solution of the project. The solution explorer is a window that allows users to explore and maintain all projects.

32. Ctrl+Alt+X for Toolbox

This hotkey displays the Toolbox. The toolbox is an important component of VS. It includes controls and other objects that can be moved into editor window and designer windows. Many controls can be easily added to the projects with the help of a toolbox.

33. Shift+F4

This hotkey displays the property pages for the objects and controls currently selected. For instance, one can use Shift+F4 to display a project’s settings and many other such properties. Users can modify and see the configuration by using this hotkey.

34. Ctrl+Alt+R

This hotkey is used to display the web browser window in the Visual Studio. The Ctrl+Alt+R enables users to view or monitor various web pages on the Internet.

35. Alt+F8

This hotkey is used to display the Macro Explorer window. It lists all available macros. Macros allow users to automate repetitive tasks in the IDE. The Alt+F8 is one of the important hotkeys in Visual Studio.

36. Ctrl+Shift+G

The Ctrl+Shift+G is used to define the elements to be adjusted by utilizing a hidden grid. The grid spacing can be configured on the Design pane of HTML designer and the grid will automatically adjust itself the next time users open a document.

37. Ctrl+Shift+L

This Visual Studio hotkey is used to display the bookmark dialogue. Users can use bookmarks to identify or point to particular code lines to comment on important messages or to quickly return to a particular location. The Ctrl+K shortcut is used to add a bookmark.

38. Ctrl+F9

The Ctrl+F9 enables or disables the breakpoint. It is used to define the breakpoint on the current line of code. It is one of the handy hotkeys of Visual Studio.

39. F5

The F5 hotkey is used to debug the application. It is used to run the application in the debugger mode and it displays what the code is doing when it runs. On the other hand, the ctrl + F5 hotkey is used to execute the application without the debugger.

40. Ctrl+Alt+I

This Visual Studio shortcut comes under window management hotkeys. It is used to open the immediate window. The immediate windowenables communication with parameters and variables when the written program is in debug mode. It allows the modification and inspection of the variables or parameters of the written code.

41. Ctrl+Shift+1

This hotkey is widely used by developers for checking things. This hotkey allows developers to navigate to the subsequent description, information, or reference of an object. It is accessible in the object browser and Class View window. It is also accessible in source editing windows with the Shift+F12 shortcut.

It is one of the most widely used hotkeys. This hotkey is also used to invoke the View.BrowseNext. It comes under the View section of Visual Studio hotkeys. The hotkey Ctrl+Shift+2 is used to invoke the View.BrowsePrevious. In short, it comes under the View class and also called a navigation shortcut.

42. C+R

This hotkey is used to invoke the CrossAppDomainDelegate. It is used to executes the code in a different application domain that is recognized by the named delegate. It is used in the system namespace and it is a part of mscorlib.dll assembly. This hotkey is also used to invoke the AppDomain.DoCallBack(CrossAppDomainDelegate) method. Every application domain has app domain variable.

In this, a constructor is launched when an attachment is packed into an application domain, and the destructor is launched when the application domain is relieved. The app domain variable describes an application domain, which is a private setting where applications perform. This class cannot be derived.

43. S

The hotkey “S” is used to invoke Stackalloc. It is used to allocate a block of memory on the stack. A block built through the method execution is implicitly abandoned when that method echoes. Users cannot explicitly release the memory designated with stackalloc. A stack-allocated memory block is not related to garbage collection and doesn’t have to be bound with a fixed statement.

The method of stackalloc implicitly allows buffer overrun discovery characteristics in the typical (common) language runtime (CLR). If a buffer overrun is identified, the method is stopped as promptly as possible to reduce the risk that malicious code is performed.

44. A+B

The A+B hotkey is used to invoke the AccessViolationException. An access violation happens in unmanaged or insecure code when the code tries to write to memory that has not been designated, or to which it does not have a path.

This normally happens because a pointer has the wrong value. Not all writes within wrong pointers point to access infractions, so an access violation normally means that some reads or writes have transpired into bad pointers, and that memory might be damaged. Thus, access violations almost invariably mean severe coding errors. An AccessViolationException explicitly recognizes these grave errors.

45. C+W

This hotkey is used to invoke the Console.WriteLine Method. It is used to write the defined data, supported by the prevailing line terminator, to the regular output stream. It can be used with various parameters. It is also used to write the text descript ion of the defined objects, supported by the prevailing line terminator, to the regular output utilizing the designated format data.

The default line terminator is a line whose purpose is a position return accompanied by a line feed. You can adjust the line terminator by placing the TextWriter.NewLine section of the Out section to a different string.

About the Author

ByteScout Team of WritersByteScout has a team of professional writers proficient in different technical topics. We select the best writers to cover interesting and trending topics for our readers. We love developers and we hope our articles help you learn about programming and programmers.

Update 1.50.1: The update addresses these issues.

Downloads: Windows: UserSystemARM Mac: 64 bit Linux: snapdebrpmtarballARM

Welcome to the September 2020 release of Visual Studio Code. There are a number of updates in this version that we hope you will like, some of the key highlights include:

  • Accessible settings editor - Interact with the settings list like any other list in VS Code.
  • Pinned tabs improvements - Resize pinned tabs, unpin with one click, and more.
  • Linux ARM builds - VS Code is now available for both Linux ARMv7 and ARM64.
  • Improved debugging experience - Improved hover and filtering in debug console.
  • New JS debugger features - Toggle auto attach flows and see performance in real-time.
  • Panel layout improvements - New panel maximization settings and bottom panel size.
  • Webview Views support - Build extensions with webview views in the sidebar and panel.
  • Updated 'Create a Dev Container' tutorial - Get started with Development Containers.

If you'd like to read these release notes online, go to Updates on

Join us live at the VS Code team's livestream on Tuesday, October 13 at 8am Pacific (4pm London), to see a demo of what's new in this release and ask us questions live.

Insiders: Want to try new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available.

macOS: Keychain access moved to a different process

Some changes in this release around how the macOS Keychain is accessed from VS Code will require you to acknowledge the following prompt for keychain access on macOS, even if you've previously allowed keychain access:

Details: VS Code previously accessed the macOS keychain from the window process itself, but now accesses it from the main process. As such, for macOS it prompts for approval like a new application is requesting access, because the process is a different one from before.


Settings editor

Back in July, we mentioned in the 1.48 release notes that we were investigating ways to improve the accessibility of the settings editor. After a few months of talking to screen reader users, experimenting, prototyping, and gathering feedback from the community, we are shipping the new experience, which we believe is an improvement for all keyboard-heavy users, whether using a screen reader or not.

In this new interaction model, interacting with the settings list works more like interacting with any other list in VS Code. With focus in the search bar, you can press the down arrow to focus a setting row. Then you can use the arrow keys to move focus around the settings list. To edit a setting, you can press enter to set focus on the control in the setting row.

If you would like to read more about the motivation and thinking behind this approach, please see GitHub issue #108006.


Pinned tabs improvements

Pinned tabs were introduced in our May 2020 release. Since then, we've received valuable feedback on how to improve this experience further, and for this milestone there are a couple of changes worth mentioning.

A new setting workbench.editor.pinnedTabSizing allows you to configure how large a pinned tab should appear:

  • normal: a pinned tab inherits the look of other tabs (new default)
  • shrink: a pinned tab shrinks to a fixed size showing parts of the editor label
  • compact: a pinned tab will only show as icon or first letter of the editor label

If you liked how pinned tabs looked prior to this release, make sure to configure 'workbench.editor.pinnedTabSizing': 'compact'.

Pinned tabs also show a new 'pinned' icon to allow you to unpin with one click. This icon will also appear in the 'Open Editors' view.

Theme: GitHub Light

Some other improvements include:

  • Editors can now be pinned even when tabs are disabled.
  • Cmd+W (Ctrl+W) no longer closes a pinned editor, but selects the next non-pinned editor.
  • A new command workbench.action.closeActivePinnedEditor can be assigned to close a pinned editor.
  • A new tab.lastPinnedBorder color can be assigned to draw a border to the right of the last pinned tab.

Renamed some editor-related context keys

A few new editor context keys have been introduced, deprecating some of the existing ones. If you are using these in your keybinding settings, please update them:

  • groupActiveEditorDirty was renamed to activeEditorIsDirty
  • editorPinned was renamed to activeEditorIsNotPreview
  • editorSticky was renamed to activeEditorIsPinned

Added new resource (explorer-related) context keys

Two new context keys have been added for resources.

  • resourceDirname for the folder path of the resource, equivalent to dirname(uri.fsPath)
  • resourcePath for the full path of the resource, equivalent to uri.fsPath

Extensions: Simplified recommendation notifications

In this release, we improved the experience of recommending extensions using notifications by making them smarter and less noisy to users.

  • Recommendations notifications are not shown again after you tried them or went through them.
  • Only one recommendation notification is shown at any time in VS Code window. You can access already recommended notifications under the notification manager, the bell icon in the status bar.

Theme: GitHub Sharp Dark

  • Recommendation notifications supporting installations, like WSL, Docker etc., on your system, are made less noisy by showing only one such notification once per VS Code session - a session begins when you open VS Code and ends when you quit.

Panel layout improvements

Visual Studio 2020

New panel maximization setting

For those who prefer to work with the panel maximized, you no longer have to maximize the panel each time after toggling it open. For those that don't, the old panel behavior isn't going away.

Instead, a new setting, panel.opensMaximized, allows users to adjust to their own preference whether or not the panel always opens maximized when toggled with Toggle Panel. The options are always, never, and the default value preserve. The preserve option opens the panel maximized if it was maximized before being closed, and opens it non-maximized otherwise.

Additionally, if the panel is hidden, Toggle Maximized Panel will now always open the panel maximized.

Decreased minimum window width when panel is on the bottom

When the panel is on the bottom rather than on the side, the minimum window width is 400px instead of 600px. This way, developers who want a narrower editor-only or panel-only window can now move the panel to the bottom, optionally hide or maximize it, and then resize the window to the new narrower minimum width.

Linux ARM builds

VS Code is now available for both Linux ARMv7 and ARM64 architectures. This means you can now officially use VS Code on a Raspberry Pi, Chromebook, and other ARM-based devices! On these devices, you can also leverage the VS Code extensions for Remote Development to get access to more powerful development environments when you need them.

Download it now! Also available for Insiders.


Trigger IntelliSense

For years, Ctrl+Space has been the predominant keybinding to trigger IntelliSense. However, on macOS and Windows, the same keybinding is used to toggle between keyboard layouts. To minimize confusion, we added another keybinding to trigger IntelliSense: on Windows and Linux it's Ctrl+I, and on macOS it's Cmd+I.


Debug hover improvements

  • Language hover now available while debugging

    While debugging, the debug hover takes precedence over the language hover, making it impossible to see the language hover. Starting with this release, you can switch from the debug hover back to the language hover by holding down the Alt modifier key. As long as Alt is pressed, the language hover is shown instead of the debug hover. This makes it much easier to read Javadoc while debugging.

  • Auto sizing debug hover

    In order to minimize the need for scrolling, the debug hover width and height now automatically adapts to the size of the hover contents. This not only helps you the full strings, but you can also drill down into object structures, and the hover grows as needed.

Debug console filter improvements

The Debug Console now supports filtering, making it easier for users to find the output they are looking for, or to hide irrelevant logging output. We've added a badge to make it clear how many items are filtered away.

JavaScript debugging

Consolidated auto attach flows

Last month, we introduced new auto attach modes as an experimental feature. This month, they have left the experimental state. The previous debug.autoAttach setting is deprecated in favor of the debug.javascript.autoAttachFilter option. The auto attach badge in the status bar now shows the current mode and allows you to toggle between modes.

Real-time performance view

The flame chart extension will now show a real-time view of performance metrics while debugging JavaScript code. CPU and memory usage are shown for Node.js programs and extension debugging. Debugging Chrome or Edge will additionally show metrics for DOM nodes, relayouts, and restyles.

Theme: Codesong

In addition to the controls in the view, there are a few settings you can use to control it:

  • debug.flameGraph.realtimePollInterval: how often stats are updated
  • debug.flameGraph.realtimeViewDuration: how much time should be displayed on the graph
  • debug.flameGraph.realtimeEasing: whether easing is enabled

Left-heavy flame chart view

Also new in the flame chart extension is a 'left heavy' view, toggled by clicking the button in the upper-right corner of the chart.

This view groups call stacks and orders them by time, creating a visual representation of the 'top down' table you might have used in other tools. This is especially useful if your profile has lots of thin call stacks (common with things like web servers) which are hard to get a sense of in the chronological view.

Here we have the same profile opened in the traditional chronological view on the right, and the left-heavy view on the left. With the left-heavy view, it's much easier to tell exactly where time is being spent.

Theme: Codesong

Step through missing code

Previously if you tried to debug a file that has a sourcemap, but for which the source was not available, you would get stuck on a 'could not load source' error and would be unable to view the compiled code. We now show a prompt allowing you to ignore the sourcemap and step through compiled code in these cases.

Theme: Codesong

Source Control

Git: Commit --no-verify commands

Git commit commands with the --no-verify flag are now available after enabling the git.allowNoVerifyCommit setting.

Git: Multiple git.path values

You can now specify a list of locations to look for the git executable via the same git.path setting, by using an array of strings.

Source Control view saves input on window reload

Addresses this request to save the Source Control view input on window reload.


Search the workspace by selecting text in the terminal

The standard shortcut for searching the workspace ⇧⌘F (Windows, Linux Ctrl+Shift+F) will now use the terminal's selection if it's focused.

Preview features

Preview features are not ready for release but are functional enough to use. We welcome your early feedback while they are under development.

Settings sync


You can now select which settings sync service to use (insiders or stable) while turning on Settings Sync. Note: This option is only available on Insiders.

TypeScript 4.1 beta support

VS Code supports the TypeScript 4.1 beta and nightly builds. The 4.1 update brings some new TypeScript language features, such as support for recursive conditional types, as well as tooling improvements. One focus area has been adding initial support for @see tags in JSDoc comments.

To start using the TypeScript 4.1 nightly builds, just install the TypeScript Nightly extension. Please share feedback and let us know if you run into any bugs with TypeScript 4.1.

Contributions to extensions

GitHub Pull Requests and Issues

Work continues on the GitHub Pull Requests and Issues extension, which allows you to work on, create, and manage pull requests and issues.

To learn about all the new features and updates, you can see the full changelog for the 0.21.0 release of the extension.

Remote Development

Work continues on the Remote Development extensions, which allow you to use a container, remote machine, or the Windows Subsystem for Linux (WSL) as a full-featured development environment.

Feature highlights in 1.50 include:

  • Improved log access and rendering for containers.
  • Better recovery support for cloning repositories in container volumes.
  • Ability to install an extension in a remote context (container, SSH, WSL) without having to reload VS Code.

You can learn about new extension features and bug fixes in the Remote Development release notes.


The approval flow to allow the execution of a ESLint library got reworked. The initial experience is now as follows:

  • No modal dialog is shown when the ESLint extension tries to load a ESLint library for the first time and an approval is necessary. Instead, the ESLint status bar item changes to indicating that the execution is currently blocked.
  • If the active text editor content can be validated using ESLint, a problem at the top of the file is shown in addition.

The execution of the ESLint library can be denied or approved using the following gestures:

  • Clicking on the Status Bar icon.
  • Using the quick fix for the corresponding ESLint problem.
  • Executing the command ESLint: Manage Library Execution from the command palette.

All gestures will open the following dialog:

The chosen action is then reflected in the ESLint Status Bar item in the following way:

  • Allow will prefix the status bar item with a check mark.
  • Allow Everywhere will prefix the status bar item with a double check mark.
  • Deny and Disable will prefix the status bar item with a blocked sign.

You can manage our decisions using the following commands:

  • ESLint: Manage Library Execution will reopen above dialog.
  • ESLint: Reset Library Decisions lets you reset previous decisions you have made.

Template string converter

The Template String Converter extension converts quotes to backticks when a $ and { are entered within a string in JavaScript and TypeScript files.

Docs View

The Docs View extension uses the new Webview View API to show documentation for the symbol at the current cursor position in the sidebar or panel:

Extension authoring


The submenu API has been promoted out of proposed state. Extension authors can now define and use submenus across supported menu locations. Check out the syntax as well as the possibilities that this API enables.

Source Control Resource State context value

Instances of SourceControlResourceState now support an optional contextValue: string field, which allows defining a context value to match again when clauses in the scm/resourceState/context menu. The context key to use is scmResourceState. More details on the original feature request and respective pull request.

Asynchronously resolve code action

For code action providers, we have added an optional function (CodeActionProvider#resolveCodeAction) which allows you to defer the computation of the actual edits a code action is going to make. This should help reduce the time it takes to provide code actions.

References Viewlet API

The references viewlet now exports an API that allows its content to be defined by other extensions.

New theme colors

  • tab.lastPinnedBorder: Border on the right of the last pinned editor to separate from unpinned editors.
  • gitDecoration.stageDeletedResourceForeground: Foreground color for staged deletions git decorations.
  • gitDecoration.stageModifiedResourceForeground: Foreground color for staged modifications git decorations.
  •,, charts.yellow,,, charts.purple, charts.foreground, charts.lines: Colors intended to be used by data visualization extensions.

Webview Views

The Webview View API allows extensions to contribute webview based views to the sidebar or panel. These views can offer specialized presentations of data, more advanced user interfaces, and much more.

To get started with webview views, take a look at the webview view extension sample.

Updated Codicons

We've added the following new icons to our codicon library:

  • export
  • graph-left
  • magnet
  • notebook
  • redo
  • check-all
  • pinned

View title description

The TreeView now has an optional description property which can be used to show less prominent text next to a tree's title.

Proposed extension APIs

Every milestone comes with new proposed APIs and extension authors can try them out. As always, we want your feedback. This is what you have to do to try out a proposed API:

  • You must use Insiders because proposed APIs change frequently.
  • You must have this line in the package.json file of your extension: 'enableProposedApi': true.
  • Copy the latest version of the vscode.proposed.d.ts file into your project's source location.

You cannot publish an extension that uses a proposed API. There may be breaking changes in the next release and we never want to break existing extensions.

Notebook API

The following new and changed APIs are part of the notebooks API proposal:

  • NotebookCell#index - A notebook cell belongs to a notebook document and this new property indicates at which position in the notebook document a cell sits. This property changes when a cell is moved.
  • TextDocument#notebook - A property of a text document, which signals that it is part of a notebook, as a notebook cell document. This property is undefined for ordinary documents.
  • Strict Editing - Notebook documents can only be modified via declarative edits that are either part of a WorkspaceEdit and submitted via NotebookEditor#edit. This ensures data consistency between extension hosts and the UI.

Comments API

We have added a new property readOnly to CommentThread to allow hiding the reply button in a comment thread.

Debug Adapter Protocol

New invalidated event

A new invalidated event has been added to the protocol. This event signals that some state in the debug adapter has changed and requires that the client (frontend) needs to re-render the data previously requested. Debug adapters do not have to emit the event for runtime changes like 'stopped' or thread changes because in these cases the client refetches the new state anyway. However, the event can be used to refresh the UI after rendering formatting has changed in the debug adapter. Debug adapters should only send the event if a true supportsInvalidatedEvent capability was received from the client in the ‘initialize’ request. Mock debug has an example for how to use the event.

Proposal for Conditional Exception support

We are planning to support 'Conditional Exceptions' in a future version of VS Code. Since this requires support in the Debug Adapter Protocol (DAP) we've prepared a proposal for 'Conditional Exception' support. If you are a debug extension author and interested in this DAP protocol addition, we'd appreciate your feedback.


Building VS Code with TypeScript 4.1 beta

We now use the TypeScript 4.1 nightly builds to build VS Code. TypeScript 4.1 adds a few new strictness checks, including more strict types for resolve in promises. This improved type checking helped us to identify and fix potential bugs in our code.


Updated Create a Dev Container tutorial

We've updated the documentation to help you create a development container. The tutorial now clearly walks you through the steps to create a reusable Docker container to match your development environment. You'll learn how to:

  • Author a devcontainer.json to describe how VS Code will create and start your container.
  • Add additional software and frameworks through a Dockerfile.
  • Combine multiple Docker containers through Docker Compose.
  • Build and test your custom development container.

Notable fixes

  • 96293: Run menu does not remember dynamic launch configurations
  • 100924: Debug & variable inspector break if filename case in editor differs to project explorer
  • 106727: If I switch workspace, focus moves to different VS Code instance
  • 103185: Dropdown base font-size increased from Electron 9 update
  • 101952: Trigger 'Save As...' for virtual document editors when saving
  • 106668: Bash for Windows terminals wrapping over 80 characters, terminals aren't sized correctly

The 2017 Microsoft Product Roadmap -- Redmond Channel Partner

Partner extensions

Microsoft C++ extension

The Microsoft C/C++ extension is now out of preview and version 1.0 has lots of great features:

Update Visual Studio 2017 Microsoft Docs

  • Support for Linux on ARM and ARM 64 - complete with IntelliSense and remote build and debug support.
  • Code formatting - Use the same formatting settings as Visual Studio IDE, along with EditorConfig properties.

And check out this video tutorial for configuring C++ IntelliSense in VS Code.

Microsoft Edge Tools extension

The Microsoft Edge Tools for VS Code extension is out of preview and provides the Microsoft Edge dev tools directly in VS Code. You will be able to see your site's runtime HTML structure, alter its layout, fix styling issues as well as see your site's network requests.

You can read more about this release and the extension's powerful features in this recent blog post.

Azure Cognitive Search extension

Try out the new Microsoft Azure Cognitive Search extension for working with Azure Cognitive Search. The extension makes it easy to develop and manage your search service directly from VS Code and includes full IntelliSense and a rich set of snippets.

Thank you

Last but certainly not least, a big Thank You to the following people who contributed this month to VS Code:

Contributions to our issue tracking:

Contributions to vscode:

Visual Studio 2020 Mac

  • @Abhijith-S-D: Always trim trailing colon from word link provider links PR #104090
  • Alan Ren (@alanrenmsft): normalize EOL setting for build folder PR #106822
  • Caio (@amazingcaio): associate _.c++ & _.h++ files with c++ PR #104339
  • Cameron Little (@apexskier): Fix crash in JSON/HTML LSP servers when initializationOptions are not provided PR #107775
  • @brajkowski: Run Selected Text action should use the active code editor PR #104734
  • @ChaseKnowlden: Fix capitalization of GitHub org PR #106808
  • David Goldman (@DavidGoldman): Terminal: Support linking local file paths containing '+' PR #105108
  • Felipe Santos (@felipecrs): Fix detection in welcome page PR #107315
  • HiDeoo (@HiDeoo): Fix typos in vscode.d.ts / API documentation PR #107885
  • Andrii Dieiev (@IllusionMH): Add numeric values support for terminal.integrated.fontWeight PR #106072
  • ItzLevvie (@ItzLevvie): Fix two spelling mistakes PR #107073
  • Jean Pierre (@jeanp413)
    • Fixes SnippetString.appendChoice does not escape commas in choices PR #107348
    • Fixes settings editor scrolls slowly when workbench.list.smoothScrolling enabled PR #104284
    • Fixes outline: shift + tab needs to be pressed twice for focus to go to title actions PR #107339
    • Proper fix for #105202 PR #106293
  • Josh Bolduc (@joshbolduc): Detect Jenkinsfile as groovy PR #106813
  • Jiaxun Wei (@LeuisKen): Fix #106213 PR #106225
  • Luqman Aden (@luqmana): Register mimetype for *.code-workspace PR #95637
  • @mbassit: Increased height of proxy authentication dialog to prevent cutting confirmation buttons PR #83900
  • @MoQ93: [Git] Allow empty tag message PR #106751
  • Mosh Feu (@moshfeu): Add padding to space the x button of 'suggest' tooltip PR #106200
  • @msftwindowslinux: force .exe, .dll as binary to fix CRLF/LF problems PR #107862
  • Michael Wood (@mwood77): Added additional colour options for differing git staging statuses PR #107318
  • Nicholas Rayburn (@nrayburn-tech): Replace 'master' with branch head when publishing to github PR #105878
  • Nicolas Vuillamy (@nvuillam)
    • Add .nf to Groovy file extensions PR #106282
  • Pascal Fong Kye (@pfongkye): Show filtered stats PR #107067
  • Rafał Chłodnicki (@rchl): [json-language-features] Fix json/schemaAssociations parameters documentation PR #106061
  • @tomerstav: Implemented fix for first parameter being a substring of the second p… PR #106432
  • Vyacheslav Pukhanov (@vpukhanov)
    • Update gitignore decorations when .git/info/exclude file is edited PR #106270
    • Adds commands for --no-verify commit variants PR #106335
  • WhizSid (@whizsid): Multi git executable paths PR #85954
  • Wojciech Buczek (@Wowol): Add cursor change after revert or stage changes PR #85074

Contributions to vscode-references-view:

  • Babak K. Shandiz (@babakks): Extend removeRefCommand to support call hierarchy items PR #61

Contributions to vscode-vsce:

  • Ron Buckton (@rbuckton): Adds detection for yarn, and '--no-yarn' to suppress detection PR #492

Contributions to vscode-json-languageservice:

  • Sebastian Copei (@KosrenDQ): Add severity DocumentSetting PR #74

Contributions to vscode-css-languageservice:

Contributions to node-jsonc-parser:

  • Michael Bullington (@mbullington): Optimize parseLiteral for number-heavy JSON files (ala GeoJSON) PR #34

Contributions to vscode-js-debug:

  • niceSprite (@iFwu): Fix nodeVersionHint Option Description mispairing PR #770
  • Dan Čermák (@dcermak): await or no test coverage gets recorded PR #750

Contributions to vscode-codicons:

  • Piers Deseilligny (@piersdeseilligny): Add magnet icon PR #24