summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/components/shared/text-buffer.ts
diff options
context:
space:
mode:
authorDeWitt Clinton <[email protected]>2025-05-20 10:12:07 -0700
committerGitHub <[email protected]>2025-05-20 10:12:07 -0700
commitee702c3139a2fe966407379891cae0e3a148891e (patch)
tree83e4e79ed663699ad1ceaf46f2508a4dc5f4133c /packages/cli/src/ui/components/shared/text-buffer.ts
parent6ca446bdeda359339b20aaf024d5cce4234bfe9a (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.ts10
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')