Appearance
Studio Keybinding Policy
This page records the current direction for Studio keybinding design.
Status
Accepted on 2026-06-15.
Decision
Studio should prefer a Vim-like mental model where it fits the product.
In particular:
- Prefer operator-style commands over unrelated mnemonic shortcuts.
- Reserve
cfor change-oriented structured edits. - Reserve
dfor delete-oriented behavior and delete prefixes. - Keep
xas a direct small-scope delete when it improves speed. - Treat duplication as distinct from delete.
- Move duplication toward a yank / paste style model (
y/p) instead of keeping it ond.
Rationale
The old D / d split made users translate between two meanings:
Dmeant delete prefixdmeant duplicate
That was harder to remember than a model where d consistently means delete.
Vim already gives many users a strong mental model:
dis deletexis a direct delete- duplication is usually expressed as copy/yank plus paste, not as a standalone duplicate command
Reusing that model should reduce keybinding surprise in Studio.
Studio distinguishes raw text editing from structured changes:
ienters Insert mode for direct source editing.cshould change an existing Loom structure while preserving that structure's role.aadds structures.ddeletes structures.gmoves to related structures.
Rename should follow that split. Name changes belong under the change prefix, not the goto prefix. The intended shape is c n for changing the name under the cursor, starting with local template rename before broader cross-file or manifest-aware rename workflows.
Consequences
- Future change-oriented Studio operations should prefer the
cprefix. - Rename workflows should start from
c nand operate on the named Loom structure under the cursor. - Future Studio keybinding changes should move toward
das the main delete operator. - Studio should use
y/psemantics for copy-like edits instead of a dedicated duplicate key. - Dedicated duplicate bindings should not return unless
y/pproves insufficient. - Help text and guide pages should stay aligned with whichever bindings are currently implemented.