Skip to content

Integrated Terminal

VMark includes a built-in terminal panel so you can run commands without leaving the editor.

Press Ctrl + ` to toggle the terminal panel.

Sessions

The terminal supports up to 5 concurrent sessions, each with its own shell process. A vertical tab bar on the right side shows numbered session tabs.

ActionHow
New sessionClick the + button
Switch sessionClick a tab number
Close sessionClick the trash icon
Restart shellClick the restart icon

When you close the last session the panel hides but the session stays alive — reopen with Ctrl + ` and you are back where you left off. If a shell process exits, press any key to restart it.

Keyboard Shortcuts

These shortcuts work when the terminal panel is focused:

ActionShortcut
CopyMod + C (with selection)
PasteMod + V
ClearMod + K
SearchMod + F
Toggle TerminalCtrl + `

TIP

Mod + C without a text selection sends SIGINT to the running process — the same as pressing Ctrl+C in a regular terminal.

Press Mod + F to open the search bar. Type to search incrementally through the terminal buffer.

ActionShortcut
Next matchEnter
Previous matchShift + Enter
Close searchEscape

Context Menu

Right-click inside the terminal to access:

  • Copy — copy selected text (disabled when nothing is selected)
  • Paste — paste from clipboard into the shell
  • Select All — select the entire terminal buffer
  • Clear — clear visible output
  • Reset Display — re-paint the terminal and reset its rendering cache. Use this if characters start to overlap, mix cases, or render garbled after a long session — most often seen when running heavily styled CLIs (e.g. Claude Code) for hours.

The terminal detects two kinds of links in command output:

  • Web URLs — click to open in your default browser
  • File paths — click to open the file in the editor (supports :line:col suffixes and relative paths resolved against the workspace root)

Shell Environment

VMark sets these environment variables in every terminal session:

VariableValue
TERM_PROGRAMvmark
EDITORvmark
VMARK_WORKSPACEWorkspace root path (when a folder is open)
PATHFull login shell PATH (same as your system terminal)

The integrated terminal inherits your login shell's PATH, so CLI tools like node, claude, and other user-installed binaries are discoverable — just as they would be in a regular terminal window.

The shell is read from $SHELL (falls back to /bin/sh). The working directory starts at the workspace root, or the active file's parent directory, or $HOME.

Standard shell shortcuts like Ctrl+R (reverse history search in zsh/bash) work when the terminal is focused — they are not intercepted by the editor.

When you open a workspace or file after the terminal is already running, all sessions automatically cd to the new workspace root.

Pause / Resume

For long-running processes producing verbose output, you can suspend the underlying shell process from VMark to free CPU without killing the session. Resuming continues the process from where it left off.

ActionHow
Pause the active sessionRight-click the session tab → Pause
Resume the paused sessionRight-click the paused tab → Resume

While paused:

  • The session tab shows a dimmed indicator
  • The shell receives SIGSTOP (POSIX); the OS suspends scheduling for the process
  • Buffered output that was already written to the terminal is preserved on screen, but no new output appears until you resume
  • The kill / clear / restart controls remain available

Pause/Resume is a macOS/Linux feature only — Windows process control doesn't expose an equivalent suspend signal, so the menu items are hidden on Windows builds.

Settings

Open Settings → Terminal to configure:

SettingRangeDefaultPlatforms
Font Size10 – 24 px13 pxAll
Line Height1.0 – 2.01.2All
Copy on SelectOn / OffOffAll
Mac Option as MetaOn / OffOffmacOS

Changes apply immediately to all open sessions. Mac Option as Meta routes the macOS Option key as Meta in the integrated terminal so emacs, tmux, and similar tools see Alt-prefixed shortcuts.

Persistence

Terminal panel visibility and height are saved and restored across hot-exit restarts. Shell processes themselves cannot be preserved — a fresh shell is spawned for each session on restart, and any paused session loses its SIGSTOP state along with the process itself.