Tips on navigating to the next or previous variable reference in VS Code

While using TypeScript in VS Code, is there a similar shortcut like in Visual Studio for easily navigating between variable references within the open script?

Answer №1

Instead of calling them references, which is a term typically used for other purposes in the editor, you have several options to choose from:


Options with No Specific Scope

editor.action.nextMatchFindAction
Default Shortcut: F3

editor.action.previousMatchFindAction
Default Shortcut: SHIFT + F3

If the criteria findInputFocussed is met (meaning you have focused on the find input using CTRL + F), you can simply use Enter to go to the next match and SHIFT + Enter for the previous match, or continue using the default F3 shortcuts.

You also have the option to remap the shortcuts to match your preferences.

One limitation is that the find input must be cleared for this to work if your word is not selected and there is an existing query that is different from the word. However, if your word is selected, it will automatically populate the find input box - similar to pressing CTRL + F with the cursor on a word.


Scope-Based Options

Similar to the previous method but without the find/replace widget and fewer constraints, this method is limited to a specific 'region'.

This method cycles indefinitely and is case sensitive.

editor.action.wordHighlight.next Default Shortcut: F7

editor.action.wordHighlight.prev Default Shortcut: SHIFT + F7


Language-Specific Options

You can customize the shortcuts to match your preferences and specify the language id in the when expression to only work in typescript. It's advisable to use consistent keybindings across workspaces for continuity.

Here's an example of a shortcut setting:

{
    "key": "ctrl+shift+down",
    "command": "editor.action.nextMatchFindAction",
    "when": "editorTextFocus && editorLangId == 'typescript'"
}

https://i.sstatic.net/KdcZu.png


Using Symbols

In Typescript, you can utilize symbols to search based on scope:

workbench.action.gotoSymbol Default Shortcut: Ctrl+Shift+O


Another method is to add the next find match to a selection using CTRL + D, which adds and selects the next found match for editing (similar to multiple cursors).

Command ID:

editor.action.addSelectionToNextFindMatch

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

The StreamingTextResponse feature is malfunctioning in the live environment

When I share my code, it's an API route in Next.js. In development mode, everything works as expected. However, in production, the response appears to be static instead of dynamic. It seems like only one part of the data is being sent. I'm puzzl ...

Extract and preserve elements from an ordered array by segregating them into separate arrays of objects using Angular 8

I have an array called arrayReceived containing 15 objects. My goal is to sort and store the first 6 objects with the lowest amount value in a new array called arraySorted. These objects are sorted based on their amount parameter. There may be multiple obj ...

Checking nested arrays recursively in Typescript

I'm facing difficulty in traversing through a nested array which may contain arrays of itself, representing a dynamic menu structure. Below is how the objects are structured: This is the Interface IMenuNode: Interface IMenuNode: export interface IM ...

What is the best way to showcase a collection of inherited objects in Angular?

How can I efficiently display a list of various objects that inherit from the same abstract class in an Angular application? What is considered optimal practice for accomplishing this task? Consider the following basic model: abstract class Vehicle { ...

Challenge encountered with TypeScript integration in the controller

I am currently in the process of converting a website from VB to C# and incorporating TypeScript. I have successfully managed to send the data to the controller. However, instead of redirecting to the next page, the controller redirects back to the same pa ...

Updated the application to Angular 6 but encountered errors when attempting to run npm run build --prod. However, running the command npm run build --env=prod was executed without any issues

Running the command npm run build -- --prod results in the following error messages: 'PropertyName1' is private and can only be accessed within the 'AppComponent' class 'PropertyName2' does not exist in type 'AppCompo ...

Issue: "Stumbled upon an unknown provider! This often implies the presence of circular dependencies"

Looking for help on a perplexing error in my Angular / TypeScript app. While we wait for an improved error message, what steps can we take to address this issue? What are the potential triggers for this error to occur? Uncaught Error: Encountered undefi ...

Configuring Jest with TypeScript: A guide to setting up and running tests across multiple files

Currently, I am diving into the world of TDD and attempting to create a basic test suite for my Node Express API. My project directory has the following structure: . └── root/ ├── src/ │ ├── services/ │ │ └─ ...

Generate detailed documentation for the functional tests conducted by Intern 4 with automated tools

I need to automatically generate documentation for my Intern 4 functional tests. I attempted using typedoc, which worked well when parsing my object page functions. However, it failed when working with functional test suites like the one below: /** * Thi ...

Typescript: The ConstructorParameters type does not support generics

Incorporating TypeScript 3.7, I created an interface featuring a property designed to accept a constructor function: interface IConstruct<T> { type: new (...args:ConstructorParameters<T>) => T; } I initially assumed that IConstruct<Us ...

How do I manage 'for' loops in TypeScript while using the 'import * as' syntax?

When working with TypeScript, I encountered an issue while trying to import and iterate over all modules from a file. The compiler throws an error at build time. Can anyone help me figure out the correct settings or syntax to resolve this? import * as depe ...

Is there a workaround in TypeScript to add extra details to a route?

Typically, I include some settings in my route. For instance: .when('Products', { templateUrl: 'App/Products.html', settings: { showbuy: true, showex ...

Incorporate a CSS class name with a TypeScript property in Angular version 7

Struggling with something seemingly simple... All I need is for my span tag to take on a class called "store" from a variable in my .ts file: <span [ngClass]="{'flag-icon': true, 'my_property_in_TS': true}"></span> I&apos ...

There is a lint error that is thrown when upgrading the typings file for JQuery version 3.2

I recently encountered an issue in my application where I used the following interface. It worked perfectly with jQuery 2.0: interface JQuery{ data(key: any): any; } However, upon upgrading to jQuery 3.2, the following lint errors were thrown: All decla ...

Encountering a Difficulty while attempting to Distinguish in Angular

I am currently working on a form where I need to dynamically add controls using reactiveForms. One specific task involves populating a dropdown menu. To achieve this, I am utilizing formArray as the fields are dynamic. Data: { "ruleName": "", "ruleD ...

arrange the elements in an array list alphabetically by name using the lodash library

Is there a way to alphabetically sort the names in an array list using JavaScript? I attempted to achieve this with the following code: const sample = [ { name: "AddMain", mesg: "test000" }, { name: "Ballside", ...

Manage both the return of an observable and the setting of a value within a single method using

I am in need of a service that can both return an observable and set a value to a field within the same method. The current implementation of my userService.getUserDetails() method is as follows: private requestUrl: string; private bic: string; private i ...

Setting default values on DTO in NestJS can be done by using the DefaultValue decorator provided

import { IsString, IsNumber, IsOptional, IsUUID, Min, Max } from 'class-validator'; import { Transform } from 'class-transformer'; export class QueryCollateralTypeDto { @Transform(({ value }) => parseInt(value)) @IsNumber() @I ...

Tips for saving metadata about properties within a class

I am looking to add metadata to properties within classes, specifically using abbreviations for property names. By using annotations like @shortName(abbreviated), you can label each property as follows: function shortName(shortName: string){ return fu ...

What is the best way to run tests on customized Material-UI components with withStyles using react-testing-library?

Creating a test with a styled Material-UI component using react-testing-library in typescript has proven to be challenging, particularly when trying to access the internal functions of the component for mocking and assertions. Form.tsx export const style ...