# Source code navigation

You can quickly navigate through your code in the editor using different actions and popups.

Procedure: Navigate with the caret

* To see the previous caret position, select `Navigate | Back` from the main menu  or press `Ctrl+Alt+Left` (Windows), `⌘ [` (macOS), `⌘ ⌥ ←` (IntelliJ IDEA Classic (macOS)), `⌘ [` (macOS System Shortcuts), `Ctrl+Alt+Left` (XWin), `Alt+Shift+Left` (GNOME), `Ctrl+Alt+Left` (KDE), `Ctrl+Alt+Left` (Emacs), `Alt+NumPad -` (Sublime Text), `⌃ NumPad -` (Sublime Text (macOS)), `⌘ ⌃ ←` (Xcode), `Ctrl+Minus` (Visual Studio), `⌘ Minus` (Visual Studio (macOS)), `Ctrl+Minus` (ReSharper), `⌘ Minus` (ReSharper (macOS)), `Alt+Left` (QtCreator), `⌘ ⌥ ←` (QtCreator (macOS)), `Alt+Left` (NetBeans), `Alt+Left` (Eclipse), `⌘ [` (Eclipse (macOS)). To move forward, select `Navigate | Forward`  or press `Ctrl+Alt+Right` (Windows), `⌘ ]` (macOS), `⌘ ⌥ →` (IntelliJ IDEA Classic (macOS)), `⌘ ]` (macOS System Shortcuts), `Ctrl+Alt+Right` (XWin), `Alt+Shift+Right` (GNOME), `Ctrl+Alt+Right` (KDE), `Ctrl+Alt+Right` (Emacs), `Alt+Shift+NumPad -` (Sublime Text), `⌃ ⇧ NumPad -` (Sublime Text (macOS)), `⌘ ⌃ →` (Xcode), `Ctrl+Shift+Minus` (Visual Studio), `⌘ ⇧ Minus` (Visual Studio (macOS)), `Ctrl+Shift+Minus` (ReSharper), `⌘ ⇧ Minus` (ReSharper (macOS)), `Alt+Right` (QtCreator), `⌘ ⌥ →` (QtCreator (macOS)), `Alt+Right` (NetBeans), `Alt+Right` (Eclipse), `⌘ ]` (Eclipse (macOS)).

* To quickly move to the top of the editor, press `Ctrl+Page Up` (Windows), `⌘ Page ↑` (macOS), `⌘ Page ↑` (IntelliJ IDEA Classic (macOS)), `⌘ Page ↑` (macOS System Shortcuts), `Ctrl+Page Up` (XWin), `Ctrl+Page Up` (GNOME), `Ctrl+Page Up` (KDE), `Ctrl+Page Up` (Emacs), `Ctrl+Page Up` (Sublime Text), `⌘ Page ↑` (Sublime Text (macOS)), `⌘ Page ↑` (Xcode), `Ctrl+Page Up` (Visual Studio), `⌘ Page ↑` (Visual Studio (macOS)), `Ctrl+Page Up` (ReSharper), `⌘ Page ↑` (ReSharper (macOS)), `Ctrl+Page Up` (QtCreator), `⌘ Page ↑` (QtCreator (macOS)), `Alt+Shift+Home` (NetBeans), `Ctrl+Page Up` (Eclipse), `Ctrl+Page Up` (Eclipse (macOS)). To move the caret to the bottom of your editor, press `Ctrl+Page Down` (Windows), `⌘ Page ↓` (macOS), `⌘ Page ↓` (IntelliJ IDEA Classic (macOS)), `⌘ Page ↓` (macOS System Shortcuts), `Ctrl+Page Down` (XWin), `Ctrl+Page Down` (GNOME), `Ctrl+Page Down` (KDE), `Ctrl+Page Down` (Emacs), `Ctrl+Page Down` (Sublime Text), `⌘ Page ↓` (Sublime Text (macOS)), `⌘ Page ↓` (Xcode), `Ctrl+Page Down` (Visual Studio), `⌘ Page ↓` (Visual Studio (macOS)), `Ctrl+Page Down` (ReSharper), `⌘ Page ↓` (ReSharper (macOS)), `Ctrl+Page Down` (QtCreator), `⌘ Page ↓` (QtCreator (macOS)), `Alt+Shift+End` (NetBeans), `Ctrl+Page Down` (Eclipse), `Ctrl+Page Down` (Eclipse (macOS)).

* To navigate to the last edited location, press `Ctrl+Shift+Backspace` (Windows), `⌘ ⇧ ⌫` (macOS), `⌘ ⇧ ⌫` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ ⌫` (macOS System Shortcuts), `Ctrl+Shift+Backspace` (XWin), `Ctrl+Shift+Backspace` (GNOME), `Ctrl+Shift+Backspace` (KDE), `Ctrl+Shift+Backspace` (Emacs), `Ctrl+Shift+Backspace` (Sublime Text), `⌘ ⇧ ⌫` (Sublime Text (macOS)), `⌘ ⇧ ⌫` (Xcode), `Ctrl+Shift+Backspace` (Visual Studio), `⌘ ⇧ ⌫` (Visual Studio (macOS)), `Ctrl+Shift+Backspace` (ReSharper), `⌘ ⇧ ⌫` (ReSharper (macOS)), `Ctrl+Shift+Backspace` (QtCreator), `⌘ ⇧ ⌫` (QtCreator (macOS)), `Ctrl+Shift+Backspace` (NetBeans), `Ctrl+Q` (Eclipse), `⌃ Q` (Eclipse (macOS)).

* To find the current caret location in the editor, press `Ctrl+M`. This action might be helpful if you do not want to scroll through a large file.

Alternatively, you can press `Up` (Windows), `↑` (macOS), `↑` (IntelliJ IDEA Classic (macOS)), `↑` (macOS System Shortcuts), `Up` (XWin), `Up` (GNOME), `Up` (KDE), `Up` (Emacs), `Up` (Sublime Text), `↑` (Sublime Text (macOS)), `↑` (Xcode), `Up` (Visual Studio), `↑` (Visual Studio (macOS)), `Up` (ReSharper), `↑` (ReSharper (macOS)), `Up` (QtCreator), `↑` (QtCreator (macOS)), `Up` (NetBeans), `Up` (Eclipse), `↑` (Eclipse (macOS)) and `Down` (Windows), `↓` (macOS), `↓` (IntelliJ IDEA Classic (macOS)), `↓` (macOS System Shortcuts), `Down` (XWin), `Down` (GNOME), `Down` (KDE), `Down` (Emacs), `Down` (Sublime Text), `↓` (Sublime Text (macOS)), `↓` (Xcode), `Down` (Visual Studio), `↓` (Visual Studio (macOS)), `Down` (ReSharper), `↓` (ReSharper (macOS)), `Down` (QtCreator), `↓` (QtCreator (macOS)), `Down` (NetBeans), `Down` (Eclipse), `↓` (Eclipse (macOS)) arrow keys to achieve the same result.

* To highlight a word at the caret you are trying to locate, select `Edit | Find | Next Occurrence of the Word at Caret` from the main menu. If you are using Windows, you can also press `Ctrl+F3`.

* To see on what element the caret is currently positioned, press `Alt+Q` (Windows), `⌃ ⇧ Q` (macOS), `⌃ ⇧ Q` (IntelliJ IDEA Classic (macOS)), `⌃ ⇧ Q` (macOS System Shortcuts), `Alt+Q` (XWin), `Alt+Q` (GNOME), `Alt+Q` (KDE), `Alt+Q` (Emacs), `Alt+Q` (Sublime Text), `Alt+Q` (Sublime Text (macOS)), `⌃ ⇧ Q` (Xcode), `Alt+Q` (Visual Studio), `⌃ ⇧ Q` (Visual Studio (macOS)), `Alt+Q` (ReSharper), `⌃ ⇧ Q` (ReSharper (macOS)), `Alt+Q` (QtCreator), `⌃ ⇧ Q` (QtCreator (macOS)), `Alt+Q` (NetBeans), `Alt+Q` (Eclipse), `⌃ ⇧ Q` (Eclipse (macOS)).

* To move caret between matching code block braces, press `Ctrl+Shift+M` (Windows), `⌃ M` (macOS), `⌘ ⇧ M` (IntelliJ IDEA Classic (macOS)), `⌃ M` (macOS System Shortcuts), `Ctrl+Shift+M` (XWin), `Ctrl+Shift+M` (GNOME), `Ctrl+Shift+M` (KDE), `Ctrl+Shift+M` (Emacs), `Ctrl+M` (Sublime Text), `⌃ M` (Sublime Text (macOS)), `⌃ M` (Xcode), `Ctrl+]` (Visual Studio), `⌘ ]` (Visual Studio (macOS)), `Ctrl+]` (ReSharper), `⌘ ]` (ReSharper (macOS)), `Ctrl+Shift+M` (QtCreator), `Ctrl+Shift+M` (QtCreator (macOS)), `Ctrl+Shift+M` (NetBeans), `Ctrl+Shift+P` (Eclipse), `⌃ M` (Eclipse (macOS)).

* To navigate between code blocks, press `Ctrl+[` (Windows), `⌘ ⌥ [` (macOS), `⌘ [` (IntelliJ IDEA Classic (macOS)), `⌘ ⌥ [` (macOS System Shortcuts), `Ctrl+[` (XWin), `Ctrl+[` (GNOME), `Ctrl+[` (KDE), `Ctrl+[` (Emacs), `Ctrl+[` (Sublime Text), `Ctrl+[` (Sublime Text (macOS)), `⌃ [` (Xcode), `Alt+Shift+[` (Visual Studio), `⌘ ⌥ [` (Visual Studio (macOS)), `Alt+Shift+[` (ReSharper), `⌘ ⌥ [` (ReSharper (macOS)), `Ctrl+[` (QtCreator), `⌘ [` (QtCreator (macOS)), `Ctrl+[` (NetBeans), `Ctrl+[` (Eclipse), `⌘ ⌥ [` (Eclipse (macOS)) or `Ctrl+]` (Windows), `⌘ ⌥ ]` (macOS), `⌘ ]` (IntelliJ IDEA Classic (macOS)), `⌘ ⌥ ]` (macOS System Shortcuts), `Ctrl+]` (XWin), `Ctrl+]` (GNOME), `Ctrl+]` (KDE), `Ctrl+]` (Emacs), `Ctrl+]` (Sublime Text), `Ctrl+]` (Sublime Text (macOS)), `⌃ ]` (Xcode), `Ctrl+]` (Visual Studio), `⌘ ⌥ ]` (Visual Studio (macOS)), `Ctrl+]` (ReSharper), `⌘ ⌥ ]` (ReSharper (macOS)), `Ctrl+]` (QtCreator), `⌘ ]` (QtCreator (macOS)), `Ctrl+]` (NetBeans), `Ctrl+]` (Eclipse), `⌃ ]` (Eclipse (macOS)).

Procedure: Move the caret

You can use different actions to move the caret through code. You can also configure where the caret should stop when moved by words and on line breaks.

* To move the caret to the next word or the previous word, press `Ctrl+Right` (Windows), `⌥ →` (macOS), `⌥ →` (IntelliJ IDEA Classic (macOS)), `⌥ →` (macOS System Shortcuts), `Ctrl+Right` (XWin), `Ctrl+Right` (GNOME), `Ctrl+Right` (KDE), `Ctrl+Right` (Emacs), `Ctrl+Right` (Sublime Text), `⌥ →` (Sublime Text (macOS)), `⌥ →` (Xcode), `Ctrl+Right` (Visual Studio), `⌥ →` (Visual Studio (macOS)), `Ctrl+Right` (ReSharper), `⌥ →` (ReSharper (macOS)), `Ctrl+Right` (QtCreator), `⌥ →` (QtCreator (macOS)), `Ctrl+Right` (NetBeans), `Ctrl+Right` (Eclipse), `⌥ →` (Eclipse (macOS)) or `Ctrl+Left` (Windows), `⌥ ←` (macOS), `⌥ ←` (IntelliJ IDEA Classic (macOS)), `⌥ ←` (macOS System Shortcuts), `Ctrl+Left` (XWin), `Ctrl+Left` (GNOME), `Ctrl+Left` (KDE), `Ctrl+Left` (Emacs), `Ctrl+Left` (Sublime Text), `⌥ ←` (Sublime Text (macOS)), `⌥ ←` (Xcode), `Ctrl+Left` (Visual Studio), `⌥ ←` (Visual Studio (macOS)), `Ctrl+Left` (ReSharper), `⌥ ←` (ReSharper (macOS)), `Ctrl+Left` (QtCreator), `⌥ ←` (QtCreator (macOS)), `Ctrl+Left` (NetBeans), `Ctrl+Left` (Eclipse), `⌥ ←` (Eclipse (macOS)).

By default, CLion moves the caret to the end of the current word. When you move the caret to the previous word, it is placed at the beginning of the current word.

You can customize the caret position for these actions.   In the Settings dialog (`Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `⌘ Comma` (Xcode), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (ReSharper), `⌘ Comma` (ReSharper (macOS)), `Ctrl+Alt+S` (QtCreator), `⌘ Comma` (QtCreator (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS))), go to `Editor | General`. In the [Caret Movement](settings-editor-general.html#move_caret) section, use the When moving by words and Upon line break options to configure the caret's behavior.

* To move the caret forward to the next paragraph or backward to the previous one, press `Ctrl+Shift+A` (Windows), `⌘ ⇧ A` (macOS), `⌘ ⇧ A` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ P` (macOS System Shortcuts), `Ctrl+Shift+A` (XWin), `Ctrl+Shift+A` (GNOME), `Ctrl+Shift+A` (KDE), `Escape, X` (Emacs), `Ctrl+Shift+P` (Sublime Text), `⌘ ⇧ P` (Sublime Text (macOS)), `⌘ ⇧ A` (Xcode), `Ctrl+Shift+A` (Visual Studio), `⌘ ⇧ A` (Visual Studio (macOS)), `Ctrl+Shift+A` (ReSharper), `⌘ ⇧ A` (ReSharper (macOS)), `Ctrl+Shift+A` (QtCreator), `⌘ ⇧ A` (QtCreator (macOS)), `Ctrl+I` (NetBeans), `Ctrl+Shift+A` (Eclipse), `⌘ 3` (Eclipse (macOS)) and search for the Move Caret Forward a Paragraph or Move Caret Backward a Paragraph action.

You can also select a text and then move the caret forward or backward to a paragraph. Press `Ctrl+Shift+A` (Windows), `⌘ ⇧ A` (macOS), `⌘ ⇧ A` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ P` (macOS System Shortcuts), `Ctrl+Shift+A` (XWin), `Ctrl+Shift+A` (GNOME), `Ctrl+Shift+A` (KDE), `Escape, X` (Emacs), `Ctrl+Shift+P` (Sublime Text), `⌘ ⇧ P` (Sublime Text (macOS)), `⌘ ⇧ A` (Xcode), `Ctrl+Shift+A` (Visual Studio), `⌘ ⇧ A` (Visual Studio (macOS)), `Ctrl+Shift+A` (ReSharper), `⌘ ⇧ A` (ReSharper (macOS)), `Ctrl+Shift+A` (QtCreator), `⌘ ⇧ A` (QtCreator (macOS)), `Ctrl+I` (NetBeans), `Ctrl+Shift+A` (Eclipse), `⌘ 3` (Eclipse (macOS)) and search for the Move Caret Forward a Paragraph with Selection or Move Caret Backward a Paragraph with Selection action.

> **Tip:**
> You can assign shortcuts to these actions. For more information, refer to [Keyboard shortcuts](configuring-keyboard-and-mouse-shortcuts.html).

Procedure: Find a line or column

1. In the editor, press `Ctrl+G` (Windows), `⌘ L` (macOS), `⌘ G` (IntelliJ IDEA Classic (macOS)), `⌘ L` (macOS System Shortcuts), `Ctrl+G` (XWin), `Ctrl+G` (GNOME), `Ctrl+G` (KDE), `Alt+G` (Emacs), `Ctrl+G` (Sublime Text), `⌃ G` (Sublime Text (macOS)), `⌘ L` (Xcode), `Ctrl+G` (Visual Studio), `⌘ G` (Visual Studio (macOS)), `Ctrl+G` (ReSharper), `⌘ G` (ReSharper (macOS)), `Ctrl+L` (QtCreator), `⌘ L` (QtCreator (macOS)), `Ctrl+G` (NetBeans), `Ctrl+L` (Eclipse), `⌘ L` (Eclipse (macOS)).

2. In the Go to Line/Column dialog, specify a line or column number, or both, separating them with : and click OK.

![Go to line/column dialog](https://resources.jetbrains.com/help/img/idea/2026.2/go_to_line_column.png)

3. If you do not want to see the line numbers in the editor,   in the Settings dialog (`Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `⌘ Comma` (Xcode), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (ReSharper), `⌘ Comma` (ReSharper (macOS)), `Ctrl+Alt+S` (QtCreator), `⌘ Comma` (QtCreator (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS))), go to `Editor | General | Appearance` and clear the Show line numbers checkbox.

> **Tip:**
> For quicker access,  [assign a shortcut](configuring-keyboard-and-mouse-shortcuts.html#add-keyboard-shortcut) to the Show line numbers action.

Procedure: Locate a code element with the Structure view popup

You can use the [structure view](file-structure.html) popup to locate a code element in the file you are working on.

1. To open the structure view popup, press `Ctrl+F12` (Windows), `⌘ F12` (macOS), `⌘ F12` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ 7` (macOS System Shortcuts), `Ctrl+F12` (XWin), `Ctrl+F12` (GNOME), `Ctrl+0` (KDE), `Ctrl+F12` (Emacs), `Ctrl+R` (Sublime Text), `⌘ R` (Sublime Text (macOS)), `⌃ 6` (Xcode), `Alt+\` (Visual Studio), `⌥ \` (Visual Studio (macOS)), `Ctrl+F12` (ReSharper), `⌘ F12` (ReSharper (macOS)), `Ctrl+F12` (QtCreator), `⌘ F12` (QtCreator (macOS)), `Ctrl+F12` (NetBeans), `Ctrl+F3` (Eclipse), `⌘ O` (Eclipse (macOS)).

2. In the popup, locate an item you need. You can start typing a name of the element for CLion to narrow down the search. Press `Enter` (Windows), `⏎` (macOS), `⏎` (IntelliJ IDEA Classic (macOS)), `⏎` (macOS System Shortcuts), `Enter` (XWin), `Enter` (GNOME), `Enter` (KDE), `Enter` (Emacs), `Enter` (Sublime Text), `⏎` (Sublime Text (macOS)), `⏎` (Xcode), `Enter` (Visual Studio), `⏎` (Visual Studio (macOS)), `Enter` (ReSharper), `⏎` (ReSharper (macOS)), `Enter` (QtCreator), `⏎` (QtCreator (macOS)), `Enter` (NetBeans), `Enter` (Eclipse), `⏎` (Eclipse (macOS)) to return to the editor and the corresponding element.

## Navigate between code elements

Procedure: Go to Declaration or Usages

You can navigate to the declaration of a variable, function, class, or type from its usage:

* Place a caret at a symbol and press `Ctrl+B` (Windows), `⌘ B` (macOS), `⌘ B` (IntelliJ IDEA Classic (macOS)), `⌘ B` (macOS System Shortcuts), `Ctrl+B` (XWin), `Ctrl+B` (GNOME), `Ctrl+B` (KDE), `Ctrl+Alt+G` (Emacs), `F12` (Sublime Text), `F12` (Sublime Text (macOS)), `⌘ Click` (Xcode), `F12` (Visual Studio), `F12` (Visual Studio (macOS)), `Ctrl+B` (ReSharper), `⌘ B` (ReSharper (macOS)), `F2` (QtCreator), `F2` (QtCreator (macOS)), `Ctrl+B` (NetBeans), `F3` (Eclipse), `F3` (Eclipse (macOS)).

* For a type declaration, press `Ctrl+Shift+B` (Windows), `⌘ ⇧ B` (macOS), `⌃ ⇧ B` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ B` (macOS System Shortcuts), `Ctrl+Shift+B` (XWin), `Ctrl+Shift+B` (GNOME), `Ctrl+Shift+B` (KDE), `Ctrl+Shift+B` (Emacs), `Ctrl+Shift+B` (Sublime Text), `Ctrl+Shift+B` (Sublime Text (macOS)), `⌥ ⇧ B` (Xcode), `Ctrl+Shift+F11` (Visual Studio), `⌘ ⇧ F11` (Visual Studio (macOS)), `Ctrl+Shift+T` (ReSharper), `⌘ ⇧ T` (ReSharper (macOS)), `Ctrl+Shift+B` (QtCreator), `Ctrl+Shift+B` (QtCreator (macOS)), `Ctrl+Shift+B` (NetBeans), `Ctrl+Shift+B` (Eclipse), `Ctrl+Shift+B` (Eclipse (macOS)).

* You can also point to the symbol keeping `Ctrl` (Windows), `Ctrl` (macOS), `Ctrl` (IntelliJ IDEA Classic (macOS)), `Ctrl` (macOS System Shortcuts), `Ctrl` (XWin), `Ctrl` (GNOME), `Ctrl` (KDE), `Ctrl` (Emacs), `Ctrl` (Sublime Text), `Ctrl` (Sublime Text (macOS)), `Ctrl` (Xcode), `Ctrl` (Visual Studio), `Ctrl` (Visual Studio (macOS)), `Ctrl` (ReSharper), `Ctrl` (ReSharper (macOS)), `Ctrl` (QtCreator), `Ctrl` (QtCreator (macOS)), `Ctrl` (NetBeans), `Ctrl` (Eclipse), `Ctrl` (Eclipse (macOS)) pressed, and click, when it turns to a hyperlink. The popup message will show the declaration information. Click once again to navigate to the declaration.

![Go to definition](https://resources.jetbrains.com/help/img/idea/2026.2/cl_navigate_to_definition2.png)

The Go to Declaration or Usages action (`Ctrl+Shift+B` (Windows), `⌘ ⇧ B` (macOS), `⌃ ⇧ B` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ B` (macOS System Shortcuts), `Ctrl+Shift+B` (XWin), `Ctrl+Shift+B` (GNOME), `Ctrl+Shift+B` (KDE), `Ctrl+Shift+B` (Emacs), `Ctrl+Shift+B` (Sublime Text), `Ctrl+Shift+B` (Sublime Text (macOS)), `⌥ ⇧ B` (Xcode), `Ctrl+Shift+F11` (Visual Studio), `⌘ ⇧ F11` (Visual Studio (macOS)), `Ctrl+Shift+T` (ReSharper), `⌘ ⇧ T` (ReSharper (macOS)), `Ctrl+Shift+B` (QtCreator), `Ctrl+Shift+B` (QtCreator (macOS)), `Ctrl+Shift+B` (NetBeans), `Ctrl+Shift+B` (Eclipse), `Ctrl+Shift+B` (Eclipse (macOS))) works differently for different cases:

1. When invoked on a symbol usage, it navigates to that usage’s declaration.

2. When invoked on a declaration, it shows the list of that declaration’s usages.

3. When invoked on a definition, it shows the associated declaration.

You can choose between the first two options using the switcher in `Settings | Editor | General`:

![Go to Declaration or Usages behavior](https://resources.jetbrains.com/help/img/idea/2026.2/cl_goto_decl_setting.png)

The default option is Show usages popup:

![Go to Declaration showing usages](https://resources.jetbrains.com/help/img/idea/2026.2/cl_goto_decl_showusages.png)

If you select Jump to predeclaration, the action navigates you to the declaration if it exists:

![Go to Declaration](https://resources.jetbrains.com/help/img/idea/2026.2/cl_goto_decl_def.animated.gif)

Procedure: Go to definitions

* You can keep track of class implementations and overriding functions using either the ![the Implemented method icon](https://resources.jetbrains.com/help/img/idea/2026.2/app.gutter.implementedMethod.svg) /  ![the Implementing method icon](https://resources.jetbrains.com/help/img/idea/2026.2/app.gutter.implementingMethod.svg), ![the Overridden method icon](https://resources.jetbrains.com/help/img/idea/2026.2/app.gutter.overridenMethod.svg) / ![the Overriding method icon](https://resources.jetbrains.com/help/img/idea/2026.2/app.gutter.overridingMethod.svg) gutter icons or the appropriate shortcuts.

* Press `Ctrl+Alt+B` (Windows), `⌘ ⌥ B` (macOS), `⌘ ⌥ B` (IntelliJ IDEA Classic (macOS)), `⌘ ⌥ B` (macOS System Shortcuts), `Ctrl+Alt+B` (XWin), `Ctrl+Alt+B` (GNOME), `Ctrl+Alt+B` (KDE), `Ctrl+Alt+B` (Emacs), `Ctrl+Alt+B` (Sublime Text), `⌘ ⌥ B` (Sublime Text (macOS)), `⌘ ⌥ Click` (Xcode), `Alt+End` (Visual Studio), `⌘ ⌥ Click` (Visual Studio (macOS)), `Ctrl+Alt+B` (ReSharper), `⌘ ⌥ B` (ReSharper (macOS)), `Ctrl+Alt+B` (QtCreator), `Ctrl+Alt+B` (QtCreator (macOS)), `Ctrl+Alt+B` (NetBeans), `Ctrl+T` (Eclipse), `Ctrl+Alt+B` (Eclipse (macOS)) to navigate to the definition of a code entity at the caret (variable, function, class).

* Press `Ctrl+U` (Windows), `⌘ U` (macOS), `⌘ U` (IntelliJ IDEA Classic (macOS)), `⌘ U` (macOS System Shortcuts), `Ctrl+U` (XWin), `Ctrl+U` (GNOME), `Ctrl+U` (KDE), `Ctrl+U` (Emacs), `Ctrl+U` (Sublime Text), `⌘ U` (Sublime Text (macOS)), `⌃ U` (Xcode), `Alt+Home` (Visual Studio), `⌃ ⌥ ←` (Visual Studio (macOS)), `Ctrl+U` (ReSharper), `⌘ U` (ReSharper (macOS)), `Ctrl+U` (QtCreator), `Ctrl+U` (QtCreator (macOS)), `Ctrl+Shift+P` (NetBeans), `Ctrl+U` (Eclipse), `Ctrl+U` (Eclipse (macOS)) to navigate to the super definition.

![go to definition](https://resources.jetbrains.com/help/img/idea/2026.2/cl_navigate_to_definition.png)

Procedure: Go to Header/Source

To switch between source and header files, you can use the dedicated Go to Header/Source action instead of Go to Related Symbol.

* To invoke Go to Header/Source, press `F10` or call `Navigate | Header/Source` from the main menu.

The action either opens a file in the editor right away or shows the popup with the available options:

![Switching header/source](https://resources.jetbrains.com/help/img/idea/2026.2/cl_switch_header_source.animated.gif)

While searching for the target file, Go to Header/Source uses a few heuristics:

* The most recent switched file is always at the top of the list.

* Next goes the file with the matching name from the same directory, if any (for example, `myfile.h` / `myfile.cpp`).

* Then, a definition/declaration-based search is performed in the background, and new items are added to the popup.

* If no single destination is found within 500 ms, CLion shows an interactive popup where new items are added, and you can select where you want to navigate to.

> **Note:**
> Currently, the search is limited to direct includers/includees to avoid interference from the same symbols from different targets.

* If you are accustomed to Go to Related Symbol for switching between header and source files, you can remap its shortcut to Go to Header/Source.

Once per installation, CLion will prompt you to do that when you invoke Go to Related Symbol via the shortcut in a C/C++ file (if the non-default shortcut is not yet set for Go to Header/Source):

![Remap Go to Related Symbol to Switch Heafer/Source](https://resources.jetbrains.com/help/img/idea/2026.2/cl_remap_gotorelated.png)

You can also [configure the desired shortcuts](configuring-keyboard-and-mouse-shortcuts.html) in `Settings | Keymap`.

Procedure: Browse through methods

* Press `Alt+Down` (Windows), `⌃ ⇧ ↓` (macOS), `⌃ ↓` (IntelliJ IDEA Classic (macOS)), `⌃ ⌥ ↓` (macOS System Shortcuts), `Alt+Down` (XWin), `Alt+Down` (GNOME), `Alt+Down` (KDE), `Alt+Down` (Emacs), `Alt+Down` (Sublime Text), `Alt+Down` (Sublime Text (macOS)), `⌥ ↓` (Xcode), `Alt+Down` (Visual Studio), `⌃ ⇧ ↓` (Visual Studio (macOS)), `Alt+Down` (ReSharper), `⌃ ⇧ ↓` (ReSharper (macOS)), `Alt+Down` (QtCreator), `⌃ ⇧ ↓` (QtCreator (macOS)), `Ctrl+Alt+Down` (NetBeans), `Ctrl+Shift+Down` (Eclipse), `⌃ ⌥ ↓` (Eclipse (macOS)) or `Alt+Up` (Windows), `⌃ ⇧ ↑` (macOS), `⌃ ↑` (IntelliJ IDEA Classic (macOS)), `⌃ ⌥ ↑` (macOS System Shortcuts), `Alt+Up` (XWin), `Alt+Up` (GNOME), `Alt+Up` (KDE), `Alt+Up` (Emacs), `Alt+Up` (Sublime Text), `Alt+Up` (Sublime Text (macOS)), `⌥ ↑` (Xcode), `Alt+Up` (Visual Studio), `⌃ ⇧ ↑` (Visual Studio (macOS)), `Alt+Up` (ReSharper), `⌃ ⇧ ↑` (ReSharper (macOS)), `Alt+Up` (QtCreator), `⌃ ⇧ ↑` (QtCreator (macOS)), `Ctrl+Alt+Up` (NetBeans), `Ctrl+Shift+Up` (Eclipse), `⌃ ⌥ ↑` (Eclipse (macOS)).

* To visually separate methods in code,   in the Settings dialog (`Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `⌘ Comma` (Xcode), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (ReSharper), `⌘ Comma` (ReSharper (macOS)), `Ctrl+Alt+S` (QtCreator), `⌘ Comma` (QtCreator (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS))), go to `Editor | General | Appearance` and select the Show method separators option.

![Method Separators in Editor](https://resources.jetbrains.com/help/img/idea/2026.2/cl_methodseparators.png)

* To open the Structure tool window, press `Alt+7` (Windows), `⌘ 7` (macOS), `⌘ 7` (IntelliJ IDEA Classic (macOS)), `⌘ 7` (macOS System Shortcuts), `Alt+7` (XWin), `Alt+7` (GNOME), `Alt+7` (KDE), `Alt+7` (Emacs), `Alt+7` (Sublime Text), `⌘ 7` (Sublime Text (macOS)), `⌘ 3` (Xcode), `Ctrl+Alt+F` (Visual Studio), `⌃ ⌥ F` (Visual Studio (macOS)), `Ctrl+F11` (ReSharper), `⌃ F11` (ReSharper (macOS)), `Alt+7` (QtCreator), `⌘ 7` (QtCreator (macOS)), `Ctrl+7` (NetBeans), `Alt+7` (Eclipse), `⌘ 7` (Eclipse (macOS)).

## Navigation in SQL code and files

> **Note:**
> This functionality relies on the [Database Tools and SQL](https://plugins.jetbrains.com/plugin/10925-database-tools-and-sql-for-webstorm--rustrover)  plugin, which   you need to install and enable.   For more information, refer to [Open plugin settings](managing-plugins.html#open-plugin-settings).

Procedure: Go from a reference to an object in the Database tool window

* To go to the definition of a column, table or any other object, select the object name in your code and press `Alt+Shift+B` (Windows), `Alt+Shift+B` (macOS), `Alt+Shift+B` (IntelliJ IDEA Classic (macOS)), `Alt+Shift+B` (macOS System Shortcuts), `Alt+Shift+B` (XWin), `Alt+Shift+B` (GNOME), `Alt+Shift+B` (KDE), `Alt+Shift+B` (Emacs), `Alt+Shift+B` (Sublime Text), `Alt+Shift+B` (Sublime Text (macOS)), `Alt+Shift+B` (Xcode), `Alt+Shift+B` (Visual Studio), `Alt+Shift+B` (Visual Studio (macOS)), `Alt+Shift+B` (ReSharper), `Alt+Shift+B` (ReSharper (macOS)), `Alt+Shift+B` (QtCreator), `Alt+Shift+B` (QtCreator (macOS)), `Alt+Shift+B` (NetBeans), `Alt+Shift+B` (Eclipse), `Alt+Shift+B` (Eclipse (macOS)).

[Video](https://resources.jetbrains.com/help/img/idea/2026.2/highlight_object_in_the_db_tool_window.mp4)

Procedure: Open a DDL definition of an object

In CLion, you can open and [edit the source code of a database object](modifying-source-code-of-database-objects.html#edit_source_code_of_an_object) directly in the editor. The source code can be opened from the editor or   Database   tool window .

* In the editor, click an object and select `Go To | Declaration or Usages`. Alternatively, press `Ctrl+B` (Windows), `⌘ B` (macOS), `⌘ B` (IntelliJ IDEA Classic (macOS)), `⌘ B` (macOS System Shortcuts), `Ctrl+B` (XWin), `Ctrl+B` (GNOME), `Ctrl+B` (KDE), `Ctrl+Alt+G` (Emacs), `F12` (Sublime Text), `F12` (Sublime Text (macOS)), `⌘ Click` (Xcode), `F12` (Visual Studio), `F12` (Visual Studio (macOS)), `Ctrl+B` (ReSharper), `⌘ B` (ReSharper (macOS)), `F2` (QtCreator), `F2` (QtCreator (macOS)), `Ctrl+B` (NetBeans), `F3` (Eclipse), `F3` (Eclipse (macOS)).

[Video](https://resources.jetbrains.com/help/img/idea/2026.2/db_goto_declaration.mp4)

* In the   Database   tool window , do one of the following:

1. Click the DDL button on the toolbar.

2. Click an object and select `Navigation | Go to DDL`.

3. Press `Ctrl+B` (Windows), `⌘ B` (macOS), `⌘ B` (IntelliJ IDEA Classic (macOS)), `⌘ B` (macOS System Shortcuts), `Ctrl+B` (XWin), `Ctrl+B` (GNOME), `Ctrl+B` (KDE), `Ctrl+Alt+G` (Emacs), `F12` (Sublime Text), `F12` (Sublime Text (macOS)), `⌘ Click` (Xcode), `F12` (Visual Studio), `F12` (Visual Studio (macOS)), `Ctrl+B` (ReSharper), `⌘ B` (ReSharper (macOS)), `F2` (QtCreator), `F2` (QtCreator (macOS)), `Ctrl+B` (NetBeans), `F3` (Eclipse), `F3` (Eclipse (macOS)).

[Video](https://resources.jetbrains.com/help/img/idea/2026.2/view_ddl_definition_of_db_object.mp4)

Procedure: Switch between files using the switcher

* With the switcher, you can switch between open files, query consoles, and tool windows.

To open the Switcher window, press `Ctrl+Tab` (Windows), `⌃ ⇥` (macOS), `⌃ ⇥` (IntelliJ IDEA Classic (macOS)), `⌃ ⇥` (macOS System Shortcuts), `Ctrl+Tab` (XWin), `Ctrl+Tab` (GNOME), `Ctrl+Tab` (KDE), `Ctrl+X, B` (Emacs), `Ctrl+Tab` (Sublime Text), `⌃ ⇥` (Sublime Text (macOS)), `⌃ ⇥` (Xcode), `Ctrl+Tab` (Visual Studio), `⌃ ⇥` (Visual Studio (macOS)), `Ctrl+Tab` (ReSharper), `⌃ ⇥` (ReSharper (macOS)), `Ctrl+Tab` (QtCreator), `⌃ ⇥` (QtCreator (macOS)), `Ctrl+Tab` (NetBeans), `Ctrl+Tab` (Eclipse), `⌃ ⇥` (Eclipse (macOS)). Do not release the `Ctrl` key. Use arrow keys to move in the Switcher window. When you release the `Ctrl` (Windows), `Ctrl` (macOS), `Ctrl` (IntelliJ IDEA Classic (macOS)), `Ctrl` (macOS System Shortcuts), `Ctrl` (XWin), `Ctrl` (GNOME), `Ctrl` (KDE), `Ctrl` (Emacs), `Ctrl` (Sublime Text), `Ctrl` (Sublime Text (macOS)), `Ctrl` (Xcode), `Ctrl` (Visual Studio), `Ctrl` (Visual Studio (macOS)), `Ctrl` (ReSharper), `Ctrl` (ReSharper (macOS)), `Ctrl` (QtCreator), `Ctrl` (QtCreator (macOS)), `Ctrl` (NetBeans), `Ctrl` (Eclipse), `Ctrl` (Eclipse (macOS)) key, the selected item becomes active, and the switcher closes.

![the Switcher](https://resources.jetbrains.com/help/img/idea/2026.2/using_switcher.png)

> **Tip:**
> Also, you can use `Ctrl+Tab` (Windows), `⌃ ⇥` (macOS), `⌃ ⇥` (IntelliJ IDEA Classic (macOS)), `⌃ ⇥` (macOS System Shortcuts), `Ctrl+Tab` (XWin), `Ctrl+Tab` (GNOME), `Ctrl+Tab` (KDE), `Ctrl+X, B` (Emacs), `Ctrl+Tab` (Sublime Text), `⌃ ⇥` (Sublime Text (macOS)), `⌃ ⇥` (Xcode), `Ctrl+Tab` (Visual Studio), `⌃ ⇥` (Visual Studio (macOS)), `Ctrl+Tab` (ReSharper), `⌃ ⇥` (ReSharper (macOS)), `Ctrl+Tab` (QtCreator), `⌃ ⇥` (QtCreator (macOS)), `Ctrl+Tab` (NetBeans), `Ctrl+Tab` (Eclipse), `⌃ ⇥` (Eclipse (macOS)) to go down the list, and `Ctrl+Tab` (Windows), `⌃ ⇥` (macOS), `⌃ ⇥` (IntelliJ IDEA Classic (macOS)), `⌃ ⇥` (macOS System Shortcuts), `Ctrl+Tab` (XWin), `Ctrl+Tab` (GNOME), `Ctrl+Tab` (KDE), `Ctrl+X, B` (Emacs), `Ctrl+Tab` (Sublime Text), `⌃ ⇥` (Sublime Text (macOS)), `⌃ ⇥` (Xcode), `Ctrl+Tab` (Visual Studio), `⌃ ⇥` (Visual Studio (macOS)), `Ctrl+Tab` (ReSharper), `⌃ ⇥` (ReSharper (macOS)), `Ctrl+Tab` (QtCreator), `⌃ ⇥` (QtCreator (macOS)), `Ctrl+Tab` (NetBeans), `Ctrl+Tab` (Eclipse), `⌃ ⇥` (Eclipse (macOS)) with the additional `Shift` (Windows), `Shift` (macOS), `Shift` (IntelliJ IDEA Classic (macOS)), `Shift` (macOS System Shortcuts), `Shift` (XWin), `Shift` (GNOME), `Shift` (KDE), `Shift` (Emacs), `Shift` (Sublime Text), `Shift` (Sublime Text (macOS)), `Shift` (Xcode), `Shift` (Visual Studio), `Shift` (Visual Studio (macOS)), `Shift` (ReSharper), `Shift` (ReSharper (macOS)), `Shift` (QtCreator), `Shift` (QtCreator (macOS)), `Shift` (NetBeans), `Shift` (Eclipse), `Shift` (Eclipse (macOS)) to go up the list.

> **Note:**
> On macOS, a combination of `Ctrl` and arrow keys are shortcuts that are used for the Mission control functionality. To use the switcher, change the shortcuts in the macOS system settings.

## See also

