diff options
| author | DeWitt Clinton <[email protected]> | 2025-05-20 10:12:07 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-05-20 10:12:07 -0700 |
| commit | ee702c3139a2fe966407379891cae0e3a148891e (patch) | |
| tree | 83e4e79ed663699ad1ceaf46f2508a4dc5f4133c /packages/cli/src/ui/components/shared/text-buffer.ts | |
| parent | 6ca446bdeda359339b20aaf024d5cce4234bfe9a (diff) | |
Implement additional readline-like keybindings, including alt-left arrow and alt-right arrow. (#443)
This change adds keybinding support for:
- `Ctrl+B`: Moves the cursor backward one character.
- `Ctrl+F`: Moves the cursor forward one character.
- `Alt+Left Arrow`: Moves the cursor backward one word.
- `Alt+Right Arrow`: Moves the cursor forward one word.
Closes b/411469305.
Diffstat (limited to 'packages/cli/src/ui/components/shared/text-buffer.ts')
| -rw-r--r-- | packages/cli/src/ui/components/shared/text-buffer.ts | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/packages/cli/src/ui/components/shared/text-buffer.ts b/packages/cli/src/ui/components/shared/text-buffer.ts index b13a57c6..f84d83bc 100644 --- a/packages/cli/src/ui/components/shared/text-buffer.ts +++ b/packages/cli/src/ui/components/shared/text-buffer.ts @@ -1104,16 +1104,22 @@ export function useTextBuffer({ if (key['return'] || input === '\r' || input === '\n') newline(); else if (key['leftArrow'] && !key['meta'] && !key['ctrl'] && !key['alt']) move('left'); + else if (key['ctrl'] && input === 'b') move('left'); else if (key['rightArrow'] && !key['meta'] && !key['ctrl'] && !key['alt']) move('right'); + else if (key['ctrl'] && input === 'f') move('right'); else if (key['upArrow']) move('up'); else if (key['downArrow']) move('down'); - else if ((key['meta'] || key['ctrl'] || key['alt']) && key['leftArrow']) + else if ((key['ctrl'] || key['alt']) && key['leftArrow']) move('wordLeft'); - else if ((key['meta'] || key['ctrl'] || key['alt']) && key['rightArrow']) + else if (key['meta'] && input === 'b') move('wordLeft'); + else if ((key['ctrl'] || key['alt']) && key['rightArrow']) move('wordRight'); + else if (key['meta'] && input === 'f') move('wordRight'); else if (key['home']) move('home'); + else if (key['ctrl'] && input === 'a') move('home'); else if (key['end']) move('end'); + else if (key['ctrl'] && input === 'e') move('end'); else if ( (key['meta'] || key['ctrl'] || key['alt']) && (key['backspace'] || input === '\x7f') |
