Skip to main content
Configuration and security

Interface and Shortcuts

Qoder CLI CN's themes, status line, keyboard shortcuts, Vim mode, and voice input

Qoder CLI CN's interactive interface (TUI) offers customizable options such as themes, the status line, keyboard shortcuts, Vim editing mode, and voice input. Configuring these interface options well makes the terminal experience smoother and better suited to personal habits. This page covers interface-related configuration and operations. For settings file layering and merge rules, see Settings Files and Precedence.

Themes

Themes control the interface color scheme. Switch via /theme in the interactive interface, or specify in settings:
{
  "ui": {
    "theme": "Tokyo Night",
    "autoThemeSwitching": true
  }
}

Built-in themes

Qoder CLI CN ships with multiple built-in themes: AyuDark, AyuLight, AtomOneDark, Dracula, DefaultLight, DefaultDark, GitHubDark, GitHubLight, GoogleCode, Holiday, ShadesOfPurple, SolarizedDark, SolarizedLight, XCode, TokyoNight, ANSI, ANSILight.

Automatic switching

ui.autoThemeSwitching (on by default) automatically switches between the default light and dark themes based on the terminal background color. The polling interval for the terminal background color is controlled by ui.terminalBackgroundPollingInterval (default 60 seconds).

Custom themes

Define your own color scheme via ui.customThemes, then reference its name in ui.theme.

Status line

The status line shows below the input box. The built-in default status line shows information such as model · workspace · +N -N (model name, working directory, code line additions/deletions), and elides lower-priority segments by priority when the terminal is too narrow.

Custom status line command

You can run a custom shell command to produce the status line content. The command receives session data as JSON via stdin (including session ID, working directory, model, context usage, Git branch, Vim mode, etc.), and its standard output (ANSI colors included) is displayed below the input box:
{
  "statusLine": {
    "type": "command",
    "command": "~/.qoder-cn/statusline-command.sh",
    "padding": 0
  }
}
Run /statusline in the interactive interface to use the built-in status line configuration capability, which reads your shell configuration and generates the script automatically.

Segment colors

For the built-in default status line, customize segment colors (such as model, branch, separator) via statusLine.colors. Color values can be hex (like #ff6600), ANSI names (like red, cyan), or natural-language color names (like ocean blue). Leaving a value empty uses the theme default. The context progress bar ignores custom colors and changes color automatically by usage (green/yellow/red).

Keyboard shortcuts

Run /shortcuts in the interactive interface to see the current shortcut list. Common shortcuts:
ShortcutPurpose
EnterSubmit the input.
Shift+Enter / Ctrl+JNew line (without submitting).
Ctrl+CInterrupt the current operation / clear the input.
Ctrl+DExit.
Ctrl+A / HomeMove to the beginning of the line.
Ctrl+E / EndMove to the end of the line.
Ctrl+Left / Alt+LeftMove one word left.
Ctrl+Right / Alt+RightMove one word right.
Ctrl+WDelete the word before the cursor.
Ctrl+KDelete to the end of the line.
Ctrl+UDelete to the beginning of the line.
Ctrl+P / Ctrl+NBrowse history (up/down).
Ctrl+RReverse-search history.
Shift+Up / Shift+DownScroll up / down.
Ctrl+XOpen the external editor to edit the input.
Ctrl+VPaste clipboard content.
Alt+VPaste a clipboard image.
Shift+TabSwitch permission mode.
Ctrl+YToggle bypass-permissions mode.
Ctrl+TExpand the full task list.
Ctrl+LClear the screen.
Exact keys may vary slightly across terminals and platforms; what /shortcuts shows is authoritative.

External editor

Run /editor to configure the external editor used for editing input. Once configured, pressing Ctrl+X opens the current input in that editor — handy for writing longer prompts.

Vim mode

Run /vim to toggle Vim editing mode. When enabled, the input box supports common Vim operations:
  • Movement: h / j / k / l (left/down/up/right).
  • Word movement: w (next word), b (previous word), e (end of word).
  • Line start/end: 0 (start of line), $ (end of line).
  • Entering edit: i (insert), a (append), o (new line).
  • Editing operations: d (delete), c (change), y (yank), x (delete character).
  • Undo/redo: u (undo), Ctrl+R (redo).
The status line shows the current Vim mode (INSERT / NORMAL).

Voice input

Run /voice to enable voice input, converting speech to text via speech recognition. The speech recognition service address can be specified with the QODER_ASR_URL environment variable.

Other interface options

The ui group has many more tunables; common ones include:
SettingDefaultDescription
ui.hideBannerfalseHide the startup banner.
ui.hideFooterfalseHide the footer.
ui.showLineNumberstrueShow line numbers in the conversation.
ui.loadingPhrasesoffWhat to show while loading: tips / witty / all / off.
ui.dynamicWindowTitletrueDynamically update the terminal window title with status icons.
ui.accessibility.screenReaderfalseScreen reader mode with plain-text output (restart required).
For all interface settings, see Settings, Environment Variables, and File Paths.

Next steps