@hnnazm/pi-vi
v0.1.4
Published
GNU Readline vi-mode prompt editor extension for Pi
Readme
Pi Vi
GNU Readline-style vi-mode prompt editing for Pi.
The extension preserves Pi's prompt editor, autocomplete, paste handling, and application actions while adding command, insert, and replace modes. It ships a Bash 5 / Readline 8 profile and resolves user bindings through Bash when $INPUTRC or ~/.inputrc exists.
Install
Install the published package:
pi install npm:@hnnazm/pi-viOr run/install from a checkout:
npm ci
npm run check
pi -e "$PWD/src/index.ts" # temporary smoke test
pi install "$PWD" # persistent local packageRollback with the same source used to install:
pi remove npm:@hnnazm/pi-vi
# or: pi remove "$PWD"You can also disable the package interactively with pi config.
The prompt border shows INSERT, COMMAND, or REPLACE. Press Escape to enter command mode.
Implemented command-mode editing
- Motions:
h,l,0,^,$,w,W,b,B,e,E,f,F,t,T,;,,,% - Modes:
i,I,a,A,R - Operators:
d,c,ywith character, word, search, delimiter, and line motions - Direct edits:
x,X,s,S,r,~,D,C,Y,p,P - State:
u,Ctrl-_,U,., marks viam,`, and' - History:
k,j,-,+,Ctrl-P,Ctrl-N,/,?,n,N - External editing:
vdelegates to Pi'sapp.editor.externalaction and therefore honors Pi's$VISUAL/$EDITORbehavior
Numeric counts are accepted before motions and editing commands.
Inputrc
The extension checks $INPUTRC first, then ~/.inputrc. If present, Bash resolves includes, conditionals, variables, and macros and emits canonical keymaps. Paths are passed as process arguments rather than interpolated into shell source. If loading fails, the extension warns and falls back to the bundled profile.
Inputrc bind -x shell-command bindings are never executed by default.
Development
npm run format
npm run lint
npm run typecheck
npm run test:unit
npm run test:integration
npm run checkCapture the default profile for a Bash executable (profile directories use major versions only):
READLINE_BASH=/opt/homebrew/bin/bash READLINE_VERSION=8.3.3 npm run capture:profile
npm run compatibility:reportSee COMPATIBILITY.md for implementation and profile details.
