Observed since 21 Oct, 09:00 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
@0xkahi/pi-vim-keys
Vim style input editor for Pi
A Vim modal input editor for Pi. Replaces Pi's default input editor with full normal, insert, visual, and visual-line modes, plus configurable leader keybindings and per-mode cursor shapes.
Supports: Insert, Normal, Visual and Visual-line modes

Custom LeaderKey Keybinds -> AppKeybinds

Install globally (writes to ~/.pi/agent/settings.json):
pi install npm:@0xkahi/pi-vim-keys
Or install into the current project only (writes to .pi/settings.json, shareable with your team):
pi install npm:@0xkahi/pi-vim-keys -l
pi.vimKeys.altScreenMode in keybinds to scroll and search Pi's fullscreen transcript with Vim-style keys, entered only from normal mode. There is no default binding. Its bottom-border label is ALT-S, colored by colors.altScreen (default #ED7892).r<char> and a persistent REPLACE mode (R) that overtypes until escape, recorded as a single undo step.escape by default, or configure sequences like jj or kj.<leader>e or <leader>oes (e.g. sab, siq).For custom extension keybind registration, see Extension Keybindings.
Example:
{
"keybinds": {
"ctrl+w": "pi.vimKeys.altScreenMode",
"<leader>oe": "app.editor.external",
"<leader>p": "app.clipboard.pasteImage",
"<leader>l": "app.session.resume",
"<leader>g": "app.session.tree",
"ctrl+t": "app.thinking.cycle"
}
}
| Doc | What it covers |
|---|---|
| Configuration | Config file locations, merge order, colors, insert-to-normal remaps, leader keybinds, extension keybinding registration, and schema usage |
| Normal Mode | Insert/visual mode entry, movement, word motions, find character, editing, and configured keybindings |
| Alt-Screen Mode | Fullscreen transcript navigation, search, entry and exit keys, and Pi keybinding limitations |
| Visual Mode | Character-range selections, mode switching, movement, word motions, find character, selection editing, and surround |
| Visual Line Mode | Whole-line selections, mode switching, movement, word motions, find character, line editing, and surround |
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
zodEnvironment{
"local_name": "zod",
"alias": false,
"peer_metadata": null
} | ^4.4.3 | runtime |
bun-typesEnvironment{
"local_name": "bun-types",
"alias": false,
"peer_metadata": null
} | latest | development |
@types/bunEnvironment{
"local_name": "@types/bun",
"alias": false,
"peer_metadata": null
} | latest | development |
typescriptEnvironment{
"local_name": "typescript",
"alias": false,
"peer_metadata": null
} | ^7 | development |
@types/nodeEnvironment{
"local_name": "@types/node",
"alias": false,
"peer_metadata": null
} | ^24.0.0 | development |
@biomejs/biomeEnvironment{
"local_name": "@biomejs/biome",
"alias": false,
"peer_metadata": null
} | ^2.4.15 | development |
@changesets/cliEnvironment{
"local_name": "@changesets/cli",
"alias": false,
"peer_metadata": null
} | ^2.31.0 | development |
@earendil-works/pi-aiEnvironment{
"local_name": "@earendil-works/pi-ai",
"alias": false,
"peer_metadata": null
} | ^0.87.0 | development |
@earendil-works/pi-tuiEnvironment{
"local_name": "@earendil-works/pi-tui",
"alias": false,
"peer_metadata": null
} | ^0.87.0 | development |
@earendil-works/pi-coding-agentEnvironment{
"local_name": "@earendil-works/pi-coding-agent",
"alias": false,
"peer_metadata": null
} | ^0.87.0 | development |
@earendil-works/pi-aiEnvironment{
"local_name": "@earendil-works/pi-ai",
"alias": false,
"peer_metadata": null
} | * | peer |
@earendil-works/pi-tuiEnvironment{
"local_name": "@earendil-works/pi-tui",
"alias": false,
"peer_metadata": null
} | * | peer |
@earendil-works/pi-coding-agentEnvironment{
"local_name": "@earendil-works/pi-coding-agent",
"alias": false,
"peer_metadata": null
} | * | peer |
Source distribution
{
"shasum": "82d55683c5d16b50ea3b42bbe4b7f1dff5b89e63",
"tarball": "https://registry.npmjs.org/@0xkahi/pi-vim-keys/-/pi-vim-keys-1.1.2.tgz",
"fileCount": 42,
"integrity": "sha512-+PpZER2ErrcqHeTHTPpVPTUrGICI6Nm1Y4oZSHECSsU4jpqdoK5rB2mDxY11M5KbanvJ/A/4SAJHn0N670YBwg==",
"signatures": [
{
"sig": "MEUCIGmmtfiBCARaRLpwHQZqvm09874JCTHUXFwruRkSuzcTAiEAncfIfXuTYPKPn6LU3t5makB0VgNuZA2/icstuY+eJvo=",
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
},
{
"sig": "MEUCIF1Dgj1XipOCdByH0/LMg9yN/uGU659V02b2ffVfsg2vAiEAwK65pyUriWSPSwInrJ5UNU5Ufk4WXkTPBEMhTk1hIDM=",
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
}
],
"unpackedSize": 1638410
}Shared repository data · GitHub
Public sponsor counts have not been collected. These signals belong to the repository owner.
github · 1 observations shown. Missing days are unknown.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-22 | 1 | 2026-10-22T16:31:25.9343490Z |
Observed since 21 Oct, 09:00 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:103f7253a1d7ba4bbf6c3af1d70f99d193ea3aa4d79bbb636d051feb82bab047