JetBrains Rider 2023.1 Help

Navigation and Search in C++

JetBrains Rider can bring you to any code item or file in a few keystrokes. The scope of the navigation includes symbols and files in your entire solution as well as all symbols and files in standard and libraries and external dependencies.

Find code items in your solution by name

  1. To use the unified access to all search results, press Ctrl+N, G or press Shift twice to display a popup where you can start typing and find code items in your solution that matches your input.

  2. If you want to limit your search to types (classes, interfaces, structs or enums), choose Navigate | Go to Class....

  3. If you want to search symbols (types, methods, properties, fields, and so on) - press Ctrl+Alt+Shift+N.

  4. You can also only search for files by pressing Ctrl+Shift+N.

  5. JetBrains Rider also lets you jump to types and type members in the current file by typing their names after pressing Ctrl+F12.

  6. After invoking any of the above commands, start typing the target item, its CamelHumps abbreviation, and/or wildcards. The list of matched items will narrow down as you type and the most probable candidates are shown closer to the top of the list.

Go to declaration

Use this command to navigate to the declaration of a symbol from any symbol usage. You can invoke this command from the Solution Explorer, from Structure and other tool windows.

To navigate in the opposite direction (symbol usages) you can use the Go to Usages of Symbol command.

To go to symbol declaration, press Ctrl+B, choose Navigate | Go to Declaration or Usages in the main menu, or click the symbol holding down the Ctrl key.

Go to declaration works on non-dependent decltype specifiers and lambdas (jumping to the lambda body). You can jump from a declaration to a definition with unmatched signature (for example, from a changed declaration of a member function to its definition with old signature), and also vice-versa. Go to declaration also works during the initial project indexing.

Go to declaration also works on unresolved identifiers, in comments and macro bodies. JetBrains Rider will find all symbols with the matching name and let you navigate to them.

In unsupported C++ files (for example, C++/CX) Go to declaration automatically falls back to the corresponding Visual Studio navigation action.

Go to file member

Use this command to quickly navigate to a particular class, function, or field in the current document.

To navigate to a file member, Press Ctrl+F12 or choose Navigate | File Member from the main menu .

Go to type of symbol

While the Go to Declaration command navigates you to the place where a symbol is declared, the Type Declaration command navigates to the declaration of the type of the currently selected symbol. For example, if you have a variable Foo myVar = new Foo(); and invoke this command on a usage of myVar, it will bring you to the declaration of the class Foo. If you invoke this command on a function, it navigates to the function's return type.

This command also works for typedefs. You can invoke this command from the Solution Explorer, from Structure and other tool windows.

To navigate to the type of the symbol, Press Ctrl+Shift+B or choose Navigate | Go to Type Declaration from the main menu .

Go to usages of symbol

This command allows you quickly navigate to a specific usage of a symbol from its declaration or any other usage. You can invoke this command from the Solution Explorer, from Structure and other tool windows. The opposite navigation is available with the Go to Declaration command.

The list of usages that you get with this command is the same as that of Find Usages. But this command is more convenient for symbols with a limited number of usages, in cases when you are looking for a specific usage and want to get to this usage without opening the Find window.

To go to usages of symbol, Press Ctrl+Alt+F7 or choose Edit | Find Usages | Show Usages from the main menu .

Go to base symbols

This command allows you to navigate up the inheritance hierarchy to a base type or method of the current symbol. You can invoke this command from the Solution Explorer, from Structure and other tool windows.

Navigation in the opposite direction is available with the Go to Derived Symbols and Go to Implementation commands.

To navigate to base symbols, Press Ctrl+U or choose Navigate | Base Symbols from the main menu .

For types that inherit from other types or implement interfaces and for members that override, implement, or hide members from base types, JetBrains Rider displays special gutter icons (for example, Themed icon overrides screen gray). Hover the mouse over the icon to see the base symbols and to navigate up the inheritance hierarchy.

Go to implementation

This command helps you find actual implementations of types and members — in other words, to locate the source code they execute. For example, from a base type or member, you can jump to any of its end implementations bypassing intermediate steps in the inheritance chain; from a usage of an interface member, you can get to all places where the member is implemented.

You can invoke this command from the Solution Explorer, from Structure and other tool windows. If necessary, you can navigate in the opposite direction with the Go to Base Symbols command.

To navigate to implementations, Press Ctrl+N, K or choose Navigate | Implementation(s) from the main menu .

Go to derived symbols

This command gets the list of all derived symbols for a type or a member and lets you navigate directly to one of them, down the inheritance hierarchy. If you are looking for actual implementations and not interested in intermediate steps of the inheritance chain, use Go to Implementation.

To navigate to derived symbols, Press Ctrl+Alt+B or choose Navigate | Go to Implementation(s) from the main menu .

Switching between header and source

For all symbols that have separate declarations and definitions, JetBrains Rider displays the Navigate to declaration/definition Themed icon switch screen gray action indicator on the left. You can click this indicator or press Alt+Enter to quickly switch between declaration and definition of the symbol.

There are more ways to switch between a header and the corresponding source file and vice versa:

  • Press Alt+O.

  • Press Ctrl+Shift+G or choose Navigate | Navigate To… from the main menu , and then select Switch Header/Source in the Navigate To popup.

  • Ctrl - click the symbol name.

Go to primary template/specializations

If a class or function template has multiple specializations, JetBrains Rider allows you to switch between the primary template/specializations.

When you caret is at the primary template or at one of the specializations, there are two ways of navigating between specializations:

  • Press Alt+Enter and choose Navigate to specializations Themed icon switch screen gray in the action list.

  • Press Ctrl+Shift+G or choose Navigate | Navigate To… from the main menu , and then select Specializations in the Navigate To popup.

In either way, a popup with all specializations appears where you can choose the desired one:

Navigating to specializations of a template

Find usages

This command allows finding all usages of one or more symbols in the solution and referenced assemblies. You can start the search from the declaration of the symbol or from any other usage. You can invoke this command from the Solution Explorer, from Structure and other tool windows.

If there are more than one usage, JetBrains Rider helps you analyze the results in the Find window.

To find usages of the current symbol, Press Alt+F7 or choose Edit | Find Usages | Find Usages from the main menu .

Highlight usages in file

The editor automatically highlights usages of a symbol at caret, which is very convenient in short files and for locals in small contexts. However, this kind of highlighting does not always work well in larger contexts because the selection is only there as long as the caret stays at the symbol.

There is also a caret-independent highlighting that stays until you press Esc and applies different configurable colors to read and write access usages. You can toggle this highlighting for a single item or for several different items simultaneously, and then use shortcuts to jump between the highlightings.

To find usages of the current symbol and related entities, Press Ctrl+Shift+F7 or choose Edit | Find Usages | Highlight Usages in File from the main menu .

Go to containing declaration

With a single shortcut, you can jump in the editor to the declaration of a type or a function from any position within its body.

To go to the containing declaration, press Alt+Shift+[.

Go to next/previous member

With the Next/Previous Member commands, you can quickly navigate between members and nested types in code files or between tags in markup files.

To invoke these commands, press Alt+Down / Alt+Up or choose Navigate | Next/Previous Member in the main menu.

Locate in Solution Explorer

This handy navigation feature lets you expand the tree in the Solution Explorer, auto-scroll and highlight the item corresponding to the current document. It is especially useful when you have a massive solution, or a limited screen area that forces you to shrink the Solution Explorer window to the limit.

To go to related files, press Ctrl+J, P.

JetBrains Rider keeps track of your actions and navigation history, and offers some commands that let you navigate to places where you have edited or just studied the code.

Navigating file structure

With JetBrains Rider, you can navigate the structure of the current document using the Structure window, which greatly simplifies navigation in large files. The window is synchronized with the editor: as you switch to another editor tab, the window displays the structure of the corresponding file. To navigate through the file easily, preprocessor directives are hidden by default.

Viewing file structure of a C++ file

Type hierarchy

With JetBrains Rider, you can investigate the inheritance hierarchy of types from your solution and from referenced libraries. You can see both base types and inheritors of the selected type and navigate to any of them with a mouse click. For more information, see Explore type hierarchy

Filtering members in type hierarchy

Hierarchy of includes

JetBrains Rider allows you to visually analyze the hierarchy of includes for a single include directive or for a file.

To build the hierarchy of includes, set the caret to an #include directive in a file or select a file in the Solution Explorer, and then press Ctrl+H or choose Navigate | Type Hierarchy from the menu.

Hierarchy of C++ includes

You can double-click any file in the hierarchy to open it in the editor.

By default, child nodes of each file represent files included in this file, which corresponds to the Includee Themed icon subtypes screen gray mode on the toolbar. You can switch to the Includers Themed icon supertypes screen gray mode. In this mode, child nodes of a file represent files in the current scope that include this file.

JetBrains Rider helps you quickly find and apply any of its actions, without digging through the menu. By an action, we mean an executable command available for the current caret position or any global command, for example, a command that opens a tool window.

You can also search for and navigate to JetBrains Rider preferences by name, and even change preferences with boolean values right in the popup menu.

To find and execute a JetBrains Rider action, Press Ctrl+Shift+A or choose Help | Find Action... from the main menu .

Bookmarks

If you want to return to some place in your code later, you can mark any code line in your solution or in library code with a bookmark.

There are two kinds of bookmarks that you can use:

  • Bookmarks with mnemonics — are most useful for marking code lines that you often refer to, like top 10 places in your current solution. You can have up to 10 numbered bookmarks simultaneously. They are indicated by the following icons on the left editor gutter: Themed icon bookmark3 screen gray

    Use dedicated shortcuts for this kind of bookmarks: Ctrl+Shift+[digit] toggles the bookmark with this digit; Ctrl+[digit] navigates to the bookmark with this digit.

  • Anonymous bookmarks— are allowed in unlimited numbers so you can mark any line, which you think is worth returning to at some time in the future. They are indicated by the following icon on the left editor gutter: Themed icon anonymous bookmark screen gray

    You can toggle bookmarks of this kind and navigate them from the bookmarks popup.

For more information, see Bookmarks

To-do explorer

JetBrains Rider provides an easy way to track tasks and technical debt in your code — code items (comments, string literals, or identifiers) matching a specific pattern can be easily located in the editor as well as in the whole solution using the TODO window.

For more information, see TODO lists

Last modified: 22 September 2022