Refactor local variable name using Visual Studio Code - visual-studio-code

I have this simple situation. I'd like to refactor the name of the role variable:
It looks like Visual Studio Code is smart enough to know that "roles" in the URL should not be touched.
I just want to refactor the name of the variable in a single file, in a single scope, not the whole file and definitely not multiple files!
If I use Ctrl + H, it will bring me to a menu which by default refactors the name in multiple files or a whole single file, but I just want to refactor the name in a single function scope!

Use rename symbol instead of the standard find/replace. Rename is bound to F2 by default.
Rename symbol will know to only touch the local roles references in your example. Visual Studio Code ships with rename support for JavaScript and TypeScript. Other languages may require installing a language extension.

Use Rename Symbol. It is defined by default with Ctrl + F2.
However, keep in mind that the variable, definition, function, etc., that you're changing, will be changed in the file itself, not only the scope. Visual Studio Code for now doesn't have an implementation for renaming a variable in a scope (for example, a variable inside a function). So keep that in mind.
Visual Studio Code - change all occurrences

For macOS users: Use Fn + ⌘ + F2 to rename a variable inside a code block.

To open your user and workspace settings, use the following Visual Studio Code menu command:
On Windows/Linux: Menu File → Preferences → Settings. On macOS: Code → Preferences → Settings.
You can also open the Settings editor from the Command Palette (Ctrl + Shift + P) with Preferences, open Settings or use the keyboard shortcut (Ctrl + ,).
In the search bar, enter keybindings.json, and add this below code:
{
"command": "editor.action.changeAll",
"key": "ctrl+f2",
"when": "editorTextFocus && !editorReadonly"
}
and
{
"command": "editor.action.rename",
"key": "f2",
"when": "editorHasRenameProvider && editorTextFocus && !editorReadonly"
}
In the keybindings.
F2 appears to work across all files, and Ctrl + F2 in the current file only.

Related

Is there a way to add a keybinding shortcut that doesn't conflict with the existing ones (Visual Studio Code)

I'm trying to add a keyword shortcut that will close all the editors on the right side from the selected one. Somehow this is not by default in vscode on mac (or maybe just to me), I remember using it on window.
Anyway I created the shortcut based on cmd+w closing the selected editor. I thought using cmd + ->(right arrow) w. And it works perfectly for closing the editors. But it conflicts with the existing one cmd + -> that is used to go to the end of the line. How to make both to work.
I don't want to use other keybindings such as a unique one because these keys combination make sense to me. Well I tried also something like cmd+r w. Same problem, there is already a shortcut for cmd+r. And can't use it because it waits for the next key to be added.
There is already a command that does what you want (that is unound by default). Put this into your keybindings.json:
{
"key": "alt+right w", // choose your keybinding
"command": "workbench.action.closeEditorsToTheRight"
}
That's Alt+rightArrow and then a w (or whatever the Alt is on a mac. My guess is that Alt+rightArrow is not bound to anything on a mac.
Since there is no when clause to distinguish this command from Cmd+rightArrow or Cmd+R, using a unique keybinding like alt+right w (option+right w) is as close as you are going to get.

What is the shortcut for CTRL + CLICK in Visual Code?

What is the shortcut key to Ctrl+Click (Follow Link) in Visual Code? If it doesn't have one, is there any way to add it?
In Eclipse, if I press F3 I can open the file, like Ctrl+Click
In HTML files the command is "Open Link" (editor.action.openLink). This command does not have, by default, associated a key combination. You can assign one by using the Preferences -> Keyboard Shortcuts command from the menu (click on the gear on the bottom of the primary side bar).
In other contexts (source code in various programming languages), the combination Ctrl+click (or Cmd+click on macOS) when the cursor is on an identifier (constant name, variable name, function name, class name, etc.) is equivalent with command "Go to Definition" (editor.action.revealDefinition). This command has, by default, associated the key F12.
Do Command/Control P > keybindings.json and insert:
[
...,
{
"key": "ctrl+f12",
"command": "editor.action.openLink"
}
]
to set Ctrl F12 to open the link under the cursor.

How to go to next changes in VS Code side-by-side view?

I can view side-by-side comparison to current and previous file version in VS Code Source Control/Git View. Are there any hotkey's to navigate on my changes i.e. go to next/prev changes from the keyboard just as if I clicked the Next Change button?
Unfortunately I haven't found anything about it in the key binding documentation page
To go to the next difference use Alt + F5.
To go to the previous difference use Shift + Alt + F5.
You are looking for workbench.action.compareEditor.nextChange/previousChange.
I have it bound to ctrl + down like this:
{
"key": "ctrl+down",
"command": "workbench.action.compareEditor.nextChange",
"when": "textCompareEditorVisible"
}
If anyone here for Visual Studio 2019:
You will go on changes directly in file (In Visual Studio 2019).
Next Change in current file:
You can simply press F8 Key for go to Next Change.
Previous Change in current file:
You can simply press Shift + F8 Key for go to Previous Change.
"when": "textCompareEditorVisible" works perfectly in most cases. But when there is any conflict on the keybinding, && isInDiffEditor is a way, which makes the keybinding work only in diff editor.
{
"key": "cmd+up",
"command": "workbench.action.compareEditor.previousChange",
"when": "textCompareEditorVisible && isInDiffEditor"
},
{
"key": "cmd+down",
"command": "workbench.action.compareEditor.nextChange",
"when": "textCompareEditorVisible && isInDiffEditor"
}
In my case, my keybindings in integrated terminal will be broken if I don't append the condition
The default on OSX/mac is alt + F5 for next and alt + shift + F5 for previous.
Note:
Make sure you have deactivated your fn keys on mac, so you can fully use VS-Codes shortcuts.

How to show uses of function in Visual Studio Code?

I am used from Pycharm to be able to press ctrl + click on a function definition and see the uses. Is there an equivalent in VSC?
you can use shift+f12 for get better view of usage
https://github.com/Microsoft/vscode-tips-and-tricks
read this and you can get better idea
2020-03-05 update
You can CTRL+CLICK (Windows) or CMD+CLICK (Mac) on the function name and look on the right column.
Right-click and select "Go to References" or "Find All References" from context menu:
There is, but VSCode doesn't support key bindings with mouse buttons. The relevant issue is #3130. That means that it will not work the same way as it works in PyCharm.
What You can do though is to use - I believe - ShiftF12 or set some key combination to show all usages of function.
To do this You can press CtrlK, then CtrlS and click on 'keybinding.json' link in the sentence: "For advanced customization open and edit keybinding.json".
After getting keybinding.json open, add the following entry there.
{
"key": "ctrl+shift+d",
"command": "editor.action.referenceSearch.trigger",
"when": "editorHasReferenceProvider && editorTextFocus && !inReferenceSearchEditor"
}
It should let You show usages of function by pressing CtrlShiftD. Obviously, You can customize it however You like.
I also recommend adding the following entry to close the dialog with the same key combination.
{
"key": "ctrl+shift+d",
"command": "closeReferenceSearch",
"when": "referenceSearchVisible && !config.editor.stablePeek"
}

Make selected block of text uppercase

Can I make a multi-line selection of text all capitals in Visual Studio Code?
In full Visual Studio it's CTRL+SHIFT+U to do this.
The extension that exists that I have seen only do non-multi-line blocks.
NOTE: THE UI OF VISUAL STUDIO CODE WHEN THIS QUESTION WAS ASKED (5 OR MORE YEARS AGO) HAS CHANGED.
The question is about how to make CTRL+SHIFT+U work in Visual Studio Code. Here is how to do it in version 1.57.1 or above.
Steps:
Open Visual Studio Code.
Press CTRL+SHIFT+P.
Type
open keyboard shortcuts
Select
Open keyboard shortcuts (json)
An editor will appear with keybindings.json file.
Place the following JSON in there and save:
[
{
"key": "ctrl+shift+u",
"command": "editor.action.transformToUppercase",
"when": "editorTextFocus"
},
{
"key": "ctrl+shift+l",
"command": "editor.action.transformToLowercase",
"when": "editorTextFocus"
}
]
Now CTRL+SHIFT+U will capitalise selected text, even if multi line. In the same way, CTRL+SHIFT+L will make selected text lowercase.
These commands are built into VS Code and no extensions are required to make them work.
Update August 2021
There is a UI to see and update keyboard shortcuts:
File-> Preferences -> Keyboard Shortcuts.
Find "Transform to Uppercase":
Click the + icon.
In the popup, press the desired key combination and hit enter:
Do the same for lower case.
Note
In the new versions (eg 1.57.x) of VS Code, Ctrl+Shift+L is a shortcut for bulk selecting all selected text occurrences. So you can use another combination, like Ctrl+Shift+/ etc.
Whenever you want to do something in VS Code and don't know how, it's a good idea to bring up the command palette with CTRL+SHIFT+P (CMD+SHIFT+P on mac), and try typing in a keyword for you want. Oftentimes the command will show up there so you don't have to go searching the net for how to do something.
Highlight the text you want to uppercase. Then hit CTRL+SHIFT+P to bring up the command palette. Then start typing the word "uppercase", and you'll see the Transform to Uppercase command. Click that and it will make your text uppercase.
Creator of the change-case extension here. I've updated the extension to support spanning lines.
To map the upper case command to a keybinding (e.g. CTRL+T+U), click File -> Preferences -> Keyboard shortcuts, and insert the following into the json config:
{
"key": "ctrl+t ctrl+u",
"command": "extension.changeCase.upper",
"when": "editorTextFocus"
}
EDIT:
With the November 2016 (release notes) update of VSCode, there is built-in support for converting to upper case and lower case via the commands editor.action.transformToUppercase and editor.action.transformToLowercase. These don't have default keybindings. They also work with multi-line blocks.
The change-case extension is still useful for other text transformations, e.g. camelCase, PascalCase, snake_case, kebab-case, etc.
Update on March 8, 2018 with Visual Studio Code 1.20.1 (mac)
It has been simplified quite a lot lately.
Very easy and straight forward now.
From "Code" -> "Preferences" -> "Keyboard shortcuts"
From the search box just search for "editor.action.transformTo",
You will see the screen like:
Click the "plus" sign at the left of each item,
it will prompt dialog for your to [press] you desired key-bindings,
after it showing that on the screen, just hit [Enter] to save.
In Linux and Mac there are not default shortcuts, so try to set your custom shortcut and be careful about don't choose a hotkey used (For example,
CTRL+U is taken for uncomment)
File-> Preferences -> Keyboard Shortcuts.
Type 'transfrom' in the search input to find transform shortcuts.
Edit your key combination.
In my case I have CTRL+U CTRL+U for transform to uppercase and CTRL+L CTRL+L for transform to lowercase
Just in case, for Mac instead of CTRL I used ⌘
Change letter case in Visual Studio Code
Updated answer
Show All Commands: Ctrl+Shift+P
and start typing "upper" or "lower" whichever command is highlighted, press Enter:
Note 1. The next time you use the function, it is usually enough to type the first letter of "upper" or "lower" words.
Note 2. You can also assign your own shortcut to these functions as they currently don't have any by default:
Original answer from 2017 (no longer valid for newer VSC versions)
To upper case: Ctrl+K, Ctrl+U
and to lower case: Ctrl+K, Ctrl+L.
Mnemonics:
K like the Keyboard
U like the Upper case
L like the Lower case
I think you can use
Select text
Ctrl+Shift+P
Enter Transform to Uppercase
Without defining keyboard shortcuts
Select the text you want capitalized
Open View->Command Palette (or Shift+Command+P)
Start typing "Transform to uppercase" and select that option
Voila!
At Sep 19 2018, these lines worked for me:
File-> Preferences -> Keyboard Shortcuts.
An editor will appear with keybindings.json file. Place the following JSON in there and save.
// Place your key bindings in this file to overwrite the defaults
[
{
"key": "ctrl+shift+u",
"command": "editor.action.transformToUppercase",
"when": "editorTextFocus"
},
{
"key": "ctrl+shift+l",
"command": "editor.action.transformToLowercase",
"when": "editorTextFocus"
},
]
I'm using the change-case extension and it works fine.
I defined the shortcuts:
{
"key": "ctrl+shift+u",
"command": "extension.changeCase.upper",
"when": "editorTextFocus"
},
{
"key": "ctrl+u",
"command": "extension.changeCase.lower",
"when": "editorTextFocus"
},
Standard keybinding for VS Code on macOS:
Selection to upper case ⌘+K, ⌘+U
and to lower case: ⌘+K, ⌘+L.
All key combinations can be opened with ⌘+K ⌘+S (like Keyboard Settings), where you can also search for specific key combinations.
Select the text to transform.
Use Ctrl + L to selected the whole line
Open Show all commands.
Linux and Windows: Ctrl + Shift + P, Mac: ⇧⌘P
Type in the command, e.g. lower, upper, title
Hit Enter
On a Mac, in Visual Studio Code, its very easy to add a key binding to perform this action, it is not linked to a hotkey combo as a default though.
In the menu bar, navigate to: Code > Preferences > Keyboard Shortcuts
In the search bar that comes up, type: Uppercase
A entry will come up called "Transform to Uppercase"
Hover your mouse over that entry and click the plus sign just to the left of the words "Transform to Uppercase"
In the box that comes up push the keys you want to bind that action to (Cmd +Shift + U is taken so I chose Ctrl + Shift + U) then press enter and you're good to go.
Note this is working at the time of this writing in May of 2021