docs/guides/editor_features/overview.md
This guide introduces some of marimo editor's features, including a variables panel, dependency graph viewer, table of contents, HTML export, GitHub copilot, code formatting, a feedback form, and more.
The editor exposes of a number of settings for the current notebook, as well as user-wide configuration that will apply to all your notebooks. These settings include the option to display the current notebook in full width, to use vim keybindings, to enable GitHub copilot, and more.
To access these settings, click the gear icon in the top-right of the editor:
<div align="center"> </div>A non-exhaustive list of settings:
marimo distinguishes between editing cell content and working with cells at the notebook level.
Command mode lets you navigate, select, and manipulate cells rather than editing their contents.
Enter/Exit:
Esc (from cell editor) or Ctrl+Esc/Cmd+Esc (when vim keybindings are enabled, Shift+Esc on Windows)Enter or click on a cellShortcuts:
↓/↑ - navigate cellsShift+↓/Shift+↑ - multi-select cellsEnter - edit selected cella/b - new cell above/belowc/v - copy/paste cellss - save notebookShift+Enter - run cell and move to nextCtrl/Cmd+↑ / Ctrl/Cmd+↓ - jump to top/bottom of notebookWhen vim keybindings are enabled, additional shortcuts are available.
marimo supports vim keybindings that extend to notebook editing. Within cells,
use standard vim modes. Press Ctrl+Esc (or Cmd+Esc on macOS, Shift+Esc on Windows) from normal mode to enter command
mode for notebook navigation.
Cell editing additions:
gd - go to definitiondd - delete empty cell:w - save notebookCustom vimrc:
You can customize your vim experience by adding a .vimrc configuration in the user settings or pyproject.toml
/// tab | User config
[keymap]
vimrc = "/User/absolute/path/to/.vimrc"
///
/// tab | pyproject.toml
[tool.marimo.keymap]
vimrc = "relative/path/.vimrc"
///
Command mode additions:
When vim keybindings are enabled, press Ctrl+Esc (or Cmd+Esc on macOS, Shift+Esc on Windows) from normal mode to enter
command mode with additional vim-specific keybindings:
j/k - navigate cellsgg/G - first/last cellShift+j/k - extend selectiondd - delete cellyy - copy cellp/P - paste below/aboveo/O - new cell below/aboveu - undo deletioni - edit cell (i.e., return to normal mode)Press i or Enter to return to cell editing.
marimo organizes editor tools into two areas: the sidebar on the left for everyday notebook tools (files, variables, packages, AI, documentation), and the developer panel at the bottom for debugging utilities (errors, logs, terminal, tracing).
You can customize both areas by dragging panels to reorder them or move them between sections. Toggle the sidebar with Cmd/Ctrl-Shift-S and the developer panel with Cmd/Ctrl-J.
See the Sidebar and Developer Panel guide for a complete list of available panels and customization options.
Click the three dots in the top right of a cell to pull up a context menu, letting you format code, hide code, send a cell to the top or bottom of the notebook, give the cell a name, and more.
Drag a cell using the vertical dots to the right of the cell.
marimo supports context-sensitive right-click menus in various locations of the editor. Right-click on a cell to open a context-sensitive menu; right click on the create-cell button (the plus icon) to get options for the cell type to create.
Cmd/Ctrl-Click on a variable to jump to its definitionSignature hints show a function’s docstring above your code as you type, making it easy to recall its arguments and usage. Enable this feature under the Editor section in the Settings panel.
<div align="center"> <figure> </figure> </div>We've kept some well-known keyboard
shortcuts for notebooks (Ctrl-Enter, Shift-Enter), dropped others, and added a few of our own. Hit Ctrl/Cmd-Shift-H to pull up the shortcuts.
We know keyboard shortcuts are very personal; you can remap them in the configuration.
Missing a shortcut? File a GitHub issue.
Hit Cmd/Ctrl+K to open the command palette.
Missing a command? File a GitHub issue.
You can set the width of the editor in the notebook settings:
Get a link to share your notebook via our online playground:
<div align="center"> <figure> <video autoplay muted loop playsinline width="100%" height="100%" align="center"> <source src="/_static/share-wasm-link.mp4" type="video/mp4"> <source src="/_static/share-wasm-link.webm" type="video/webm"> </video> </figure> </div>Our online playground uses WebAssembly. Most but not all packages on PyPI are supported. Local files are not synchronized to our playground.
Export the current view your notebook to static HTML via the notebook menu:
<div align="center"> <figure> <figcaption>Download as static HTML.</figcaption> </figure> </div>You can also export to HTML at the command-line:
marimo export html notebook.py -o notebook.html
The question mark icon in the panel tray opens a dialog to send anonymous feedback. We welcome any and all feedback, from the tiniest quibbles to the biggest blue-sky dreams.
<div align="center"> <figure> <figcaption>Send anonymous feedback with our feedback form.</figcaption> </figure> </div>If you'd like your feedback to start a conversation (we'd love to talk with you!), please consider posting in our GitHub issues or Discord. But if you're in a flow state and can't context switch out, the feedback form has your back.