Editor

Code Navigation & Refactoring

Move through a codebase by what a name means, and rename or refactor with every reference updated.

Getting around

ActionWindows / LinuxmacOS
Go to DefinitionF12F12
Peek Definition (inline, no navigation)Alt+F12Option+F12
Go to ReferencesShift+F12Shift+F12
Go to Symbol in FileCtrl+Shift+OCmd+Shift+O
Go to Symbol in WorkspaceCtrl+TCmd+T
Navigate back / forwardAlt+←/→Ctrl+-/Ctrl+Shift+-

Peek instead of jump

Peek Definition (Alt/Option + F12) opens the definition in a small panel. You stay in the current file, and you keep your place. It is a good way to check a function signature and then keep typing.

Renaming and refactoring

Press F2 on a symbol to rename it everywhere it is referenced in the workspace. This is a language-aware rename, so it understands scope. A local variable named data in one function is left alone when you rename a different data in another function.

The lightbulb next to a line (or Ctrl/Cmd + .) opens quick fixes and refactorings for that spot. Depending on what the language server supports, that can mean extracting a selection into its own function or variable, converting a function to an arrow function, adding a missing import, and more.

Multi-root workspaces and navigation

In a multi-root workspace, Go to Definition and Find All References search every root folder, including ones other than the folder the current file lives in. Jumping from an app package into a shared library in the same workspace feels like moving inside a single folder.

The trail just above the editor (toggle it with View → Appearance → Show Breadcrumbs) shows the current file's path and, for supported languages, where you are inside nested symbols. Click a segment to jump to a sibling file or symbol.