Getting Started

Launching cvi, the dashboard, modal editing basics, the shell keymap.

Launch cvi and it opens a dashboard for the current directory. Give it a path or filenames instead to jump straight into editing.

shcvi                    # dashboard for the current directory
cvi src/               # dashboard for a directory
cvi a.rs b.rs          # open files, cursor in the first
cvi --help
cvi --version

cvi writes a starter configuration file to ~/.config/ctrlvim/config.toml the first time it runs, and never overwrites an existing one. See Configuration for what goes in it.

Normal, Insert, Visual, and Command line modes work the way Vim's do. Motions (w, b, e, <A-[>, <A-]>), operators (d, y, c), and text objects (iw, a", i() compose the way Vim's do, so 2d3w deletes six words. Insert mode is left with <Esc>.

Press ? inside ctrlvim at any time for the full, current keymap. See Keybindings for the complete reference and how the mapping layer works.

# The shell keymap

Outside a file buffer — on the dashboard, the plugin manager, or an overlay — a separate keymap applies: : opens the command palette, Ctrl+B opens the explorer, Tab / Shift+Tab cycle buffers, [ / ] cycle the dashboard section, w / s / a jump to a section directly, p opens the plugin manager, 2 / 3 switch layout, r / g / b expand panels, j / k move the current selection, Enter opens or toggles it, ? opens help, and Esc closes whatever overlay is open. Every list row, tab, pill, and toggle is also clickable, and the mouse wheel scrolls the editor view.

Inside a file buffer, keys go straight to the editing engine — Vim motions, operators, and Insert mode all work as described above. A handful of chords escape back to the shell from there: Ctrl+Left / Ctrl+Right cycle buffers, Ctrl+B opens the explorer, Ctrl+P or : opens the palette, and ? opens help, all from Normal mode. Esc returns to Normal mode, and Ctrl+C quits from anywhere.

# Where to next

  • Configuration is the full reference for config.toml — options, keymaps, autocommands, plugins.
  • Plugins covers the Lua API for writing your own.
  • Language Servers covers lsp.lua and attaching a language server to a project.

On this page