mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-08 08:52:12 +00:00
Built-in Vim emulation on @replit/codemirror-vim (approved dependency), modelled on IdeaVim: `vim.toggle` (Tools › Vim, status widget, Settings › Editor › Vim), mode widget (NORMAL / INSERT / VISUAL / V-LINE / V-BLOCK / REPLACE), IdeaVim-style shortcut conflict handlers (Vim / IDE per key) through a generic `registerKeyClaim()` in the keymap dispatcher, Escape closing popups first, a safe subset of ~/.openideavimrc / ~/.ideavimrc (set, map variants, mapleader, :action / <Action>()), Ex commands :w :wa :q :qa :wq :x :action. Covers file editors, diff editable side and merge result via a new `embeddedEditorExtensions` extension point. Verified in the app on macOS: motions/operators, i/Esc/V mode widget, :w saves, Ctrl+R redoes in Vim without running Run, toggling off restores plain editing. Not verified on Windows/Linux. Fixes #27 https://claude.ai/code/session_01VUYsdXA2nkF5v6zsC93dpn
69 lines
1.1 KiB
CSS
69 lines
1.1 KiB
CSS
.status {
|
|
min-width: 7ch;
|
|
justify-content: center;
|
|
font-weight: 600;
|
|
}
|
|
.status[data-mode="insert"] {
|
|
color: var(--success);
|
|
}
|
|
.status[data-mode="visual"] {
|
|
color: var(--info);
|
|
}
|
|
.status[data-mode="replace"] {
|
|
color: var(--warning);
|
|
}
|
|
.off {
|
|
color: var(--fg-subtle);
|
|
font-weight: normal;
|
|
}
|
|
|
|
.page {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 16px;
|
|
color: var(--fg);
|
|
font-size: var(--fs-ui);
|
|
}
|
|
.section {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
}
|
|
.header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
color: var(--fg-muted);
|
|
}
|
|
.hint {
|
|
margin: 0;
|
|
color: var(--fg-muted);
|
|
font-size: var(--fs-small);
|
|
}
|
|
.mono {
|
|
font-family: var(--font-mono);
|
|
font-size: var(--fs-small);
|
|
}
|
|
.ignored {
|
|
margin: 0;
|
|
padding-left: 16px;
|
|
color: var(--fg-muted);
|
|
font-size: var(--fs-small);
|
|
}
|
|
.table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
border: 1px solid var(--border-strong);
|
|
}
|
|
.table th {
|
|
text-align: left;
|
|
font-weight: normal;
|
|
color: var(--fg-muted);
|
|
padding: 4px 8px;
|
|
border-bottom: 1px solid var(--border-strong);
|
|
}
|
|
.table td {
|
|
padding: 2px 8px;
|
|
height: 28px;
|
|
}
|