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:
- Install Understand (it includes
userver). - Make
userverreachable on yourPATH(on macOS/Linux, a symlink into/usr/local/binworks; Node.js ignores the shellPATHset by the installer). - Install Understand for Visual Studio Code from the Marketplace, then open a folder that has a
.undproject 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.