Catalog npm
Back to packageRELEASE DETAILS

1.0.0

npm

@0xkahi/pi-vim-keys

Vim style input editor for Pi

pi-extensionpi-packagevim-key-bindings
Published9 Jun 2026
Direct dependencies10
Transitive dependenciesNot calculated

README

Current package documentation

@0xkahi/pi-vim-keys

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

Demo

Custom LeaderKey Keybinds -> AppKeybinds

KeybindDemo

Install

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

✨ Features

  • Vim modes: insert, normal, visual, visual-line, and replace modes.
  • Alt-screen mode: bind 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).
  • Replace in place: single-character replace with r<char> and a persistent REPLACE mode (R) that overtypes until escape, recorded as a single undo step.
  • Mode-aware cursor and colors: configurable mode label colors, plus block cursor in normal/visual/alt-screen modes, bar cursor in insert mode, and underline cursor in replace mode when terminal hardware cursor is enabled.
  • Configurable insert-to-normal mapping: use escape by default, or configure sequences like jj or kj.
  • Normal-mode leader keybindings: bind leader mappings to built-in editor actions, Pi app actions, or external extension commands.
  • supports both single char and multichar sequence: keybinds can be <leader>e or <leader>oe
  • Surround in visual modes: wrap a selection with brackets or quotes via s (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"
  }
}

📚 Documentation

DocWhat it covers
ConfigurationConfig file locations, merge order, colors, insert-to-normal remaps, leader keybinds, extension keybinding registration, and schema usage
Normal ModeInsert/visual mode entry, movement, word motions, find character, editing, and configured keybindings
Alt-Screen ModeFullscreen transcript navigation, search, entry and exit keys, and Pi keybinding limitations
Visual ModeCharacter-range selections, mode switching, movement, word motions, find character, selection editing, and surround
Visual Line ModeWhole-line selections, mode switching, movement, word motions, find character, line editing, and surround

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 13

Native requirements
10 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
zod
Environment
{
  "local_name": "zod",
  "alias": false,
  "peer_metadata": null
}
^4.4.3runtime
bun-types
Environment
{
  "local_name": "bun-types",
  "alias": false,
  "peer_metadata": null
}
latestdevelopment
@types/bun
Environment
{
  "local_name": "@types/bun",
  "alias": false,
  "peer_metadata": null
}
latestdevelopment
typescript
Environment
{
  "local_name": "typescript",
  "alias": false,
  "peer_metadata": null
}
^5development
@types/node
Environment
{
  "local_name": "@types/node",
  "alias": false,
  "peer_metadata": null
}
^24.0.0development
@biomejs/biome
Environment
{
  "local_name": "@biomejs/biome",
  "alias": false,
  "peer_metadata": null
}
^2.4.15development
@changesets/cli
Environment
{
  "local_name": "@changesets/cli",
  "alias": false,
  "peer_metadata": null
}
^2.31.0development
@earendil-works/pi-ai
Environment
{
  "local_name": "@earendil-works/pi-ai",
  "alias": false,
  "peer_metadata": null
}
^0.79.0development
@earendil-works/pi-tui
Environment
{
  "local_name": "@earendil-works/pi-tui",
  "alias": false,
  "peer_metadata": null
}
^0.79.0development
@earendil-works/pi-coding-agent
Environment
{
  "local_name": "@earendil-works/pi-coding-agent",
  "alias": false,
  "peer_metadata": null
}
^0.79.0development
@earendil-works/pi-ai
Environment
{
  "local_name": "@earendil-works/pi-ai",
  "alias": false,
  "peer_metadata": null
}
*peer
@earendil-works/pi-tui
Environment
{
  "local_name": "@earendil-works/pi-tui",
  "alias": false,
  "peer_metadata": null
}
*peer
@earendil-works/pi-coding-agent
Environment
{
  "local_name": "@earendil-works/pi-coding-agent",
  "alias": false,
  "peer_metadata": null
}
*peer

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "shasum": "62a4b86307c89bf64c86deae49f121a17b3829a8",
  "tarball": "https://registry.npmjs.org/@0xkahi/pi-vim-keys/-/pi-vim-keys-1.0.0.tgz",
  "fileCount": 33,
  "integrity": "sha512-ud+sudxIWsJfD9/IHfHg9gB8+gL/jZTLvg3Tl8zmQ+RVJx52ubk7SsgCkUe8xEFerTOEVsVFOfoO7hoF3N9krA==",
  "signatures": [
    {
      "sig": "MEYCIQCmthD7j4cYlfd6qF62SFd7ULGXYl3pYpvV+Sn8WmwoeAIhANKJbpHfByj3UaXkHOHxNAcLPJrKeKP/PV5A+wYGz3M1",
      "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
    }
  ],
  "unpackedSize": 1569536
}

Repository

ACCESSIBLE
0xkahi/pi-vim-keys

Shared repository data · GitHub

License detected in repository
MIT
License branch / ref
main
Last push
13 Oct 2026
Archived
No
Contributor identities
— · partial collection

Public sponsor counts have not been collected. These signals belong to the repository owner.

Downloads & popularity

1count
Gauge · observed snapshots22 Oct 2026
10.50
2026-10-22: 1 · observed 2026-10-22T16:31:25.9343490Z
22 Oct22 Oct

github · 1 observations shown. Missing days are unknown.

View observed values
Date / source periodValueObserved at
2026-10-2212026-10-22T16:31:25.9343490Z

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 09:00 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:b7a79c9c5e268c8b59fd40668d4e99570dcc3a9a98e00e648ba374becb8ca9cc

Other collected versions

1.2.013 Oct1.1.222 Sept1.1.121 Sept1.1.015 Sept1.0.710 Sept1.0.622 JulView all collected versions →