Skip to content

Use an external editor (VS Code, SlickEdit, Emacs, Vi)

Prefer the editor you already live in? You have two options: point Understand at any external editor so files open there instead of the built-in editor, or use the dedicated Understand extension for VS Code.

Option 1 — point Understand at your editor

Open the settings — Understand → Preferences → Tools on macOS, or Tools → Options → Tools on Windows/Linux — and turn on Use External Editor. Then fill in:

  • Editor: the path to your editor executable (use the ... button to browse).
  • Parameters: the command-line template your editor expects. Use the placeholders $file, $line, and $col — Understand substitutes them with the file path, line, and column when it launches the editor.

There is no preset list of editors — the fields are free-form, so any editor that accepts a file/line/column on its command line works. Put the editor executable in the Editor field and its argument template in Parameters. Understand substitutes $file, $line, and $col (case-insensitive) into the parameters before launching, and those are the only tokens it recognizes. Common starting points:

Editor Editor (executable) Parameters
VS Code code --goto $file:$line:$col
SlickEdit vs +$line $file
Emacs (emacsclient) emacsclient +$line:$col $file
Vi / Vim / gVim vim (or gvim) +$line $file
Visual Studio devenv /Edit $file

Exact flags vary by editor and version. If a template above doesn't work, run the editor with --help (or check its command-line reference) to find its "open file at line/column" option, then map the file, line, and column onto $file / $line / $col. Some editors — Visual Studio, for example — have no reliable command-line way to jump to a line, so the file opens but the cursor stays at the top.

Once enabled, this replaces the built-in editor everywhere a file would normally open — double-click, go-to-definition, search results, and so on. The setting is stored per application (not per project).

Get Understand's context menu inside your editor

You can wire your editor's own key binding to shell out to understand -contextmenu <file> -line <N> -col <N> -text <symbol>, which pops up Understand's right-click menu for that location — so you keep Understand's navigation and analysis without leaving your editor. This is how the SlickEdit, Emacs, Vi, and Visual Studio integrations work: each binds an editor key to that command.

Electron editors

Understand clears ELECTRON_RUN_AS_NODE from the launch environment so Electron-based editors (like VS Code launched this way) start correctly.

Option 2 — the Understand extension for VS Code

For VS Code specifically, there's a dedicated extension (installed from the VS Code Marketplace, not bundled in the Understand install) — covered in full in Understand for VS Code. It connects to userver, the Understand language server that ships with Understand, and surfaces Understand's analysis inside VS Code — including code navigation and CodeCheck violations.

To set it up:

  1. Install Understand (it includes userver).
  2. Make userver reachable on your PATH (on macOS/Linux, a symlink into /usr/local/bin works; Node.js ignores the shell PATH set by the installer).
  3. Install Understand for Visual Studio Code from the Marketplace, then open a folder that has a .und project alongside it — the extension starts automatically for supported languages.

The extension also provides an Explore in Understand command that opens the desktop app at the current file and position (it launches understand -visit), so you can jump from VS Code into a full Understand graph or the Information Browser when you need more.

VS Code is a licensed feature

The VS Code integration is a separately licensed capability. If it doesn't activate, confirm your license includes it — see Which license do I have?.

Opening a file at a line from the command line

Any tool or script can open a location in Understand's editor directly:

understand -db <project>.und -visit <file> <line> <col>

For the full CLI, see Run Understand from the command line. To connect an AI agent to the same analysis, see Connect an AI agent via MCP.