From 8b456c5fdc47fb40446981c9a438c2704a5168f5 Mon Sep 17 00:00:00 2001 From: Koutian Wu Date: Fri, 15 May 2026 01:32:00 -0500 Subject: [PATCH] feat(shell): add Shift+Enter as newline shortcut alongside Ctrl-J and Alt-Enter Closes #2254 --- docs/en/guides/interaction.md | 2 +- docs/en/reference/keyboard.md | 8 +++++--- docs/zh/guides/interaction.md | 2 +- docs/zh/reference/keyboard.md | 8 +++++--- src/kimi_cli/ui/shell/prompt.py | 5 +++-- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/docs/en/guides/interaction.md b/docs/en/guides/interaction.md index 8e78655f1..f68097f90 100644 --- a/docs/en/guides/interaction.md +++ b/docs/en/guides/interaction.md @@ -124,7 +124,7 @@ By default, up to 4 background tasks can run simultaneously. This can be adjuste ## Multi-line input -Sometimes you need to enter multiple lines, such as pasting a code snippet or error log. Press `Ctrl-J` or `Alt-Enter` to insert a newline instead of sending the message immediately. +Sometimes you need to enter multiple lines, such as pasting a code snippet or error log. Press `Shift-Enter`, `Ctrl-J`, or `Alt-Enter` to insert a newline instead of sending the message immediately. After finishing your input, press `Enter` to send the complete message. diff --git a/docs/en/reference/keyboard.md b/docs/en/reference/keyboard.md index a12f79738..2bbb48fa0 100644 --- a/docs/en/reference/keyboard.md +++ b/docs/en/reference/keyboard.md @@ -9,8 +9,9 @@ Kimi Code CLI shell mode supports the following keyboard shortcuts. | `Ctrl-X` | Toggle agent/shell mode | | `Shift-Tab` | Toggle plan mode (read-only research and planning) | | `Ctrl-O` | Edit in external editor (`$VISUAL`/`$EDITOR`) | -| `Ctrl-J` | Insert newline | -| `Alt-Enter` | Insert newline (same as `Ctrl-J`) | +| `Shift-Enter` | Insert newline | +| `Ctrl-J` | Insert newline (same as `Shift-Enter`) | +| `Alt-Enter` | Insert newline (same as `Shift-Enter`) | | `Ctrl-S` | Steer: inject input immediately into the running turn (during streaming) | | `Ctrl-V` | Paste (supports images and video files) | | `Ctrl-E` | Expand full approval request content | @@ -60,10 +61,11 @@ Useful for writing multi-line prompts, complex code snippets, etc. ## Multi-line input -### `Ctrl-J` / `Alt-Enter`: Insert newline +### `Shift-Enter` / `Ctrl-J` / `Alt-Enter`: Insert newline By default, pressing `Enter` submits the input. To enter multi-line content, use: +- `Shift-Enter`: Insert newline at any position - `Ctrl-J`: Insert newline at any position - `Alt-Enter`: Insert newline at any position diff --git a/docs/zh/guides/interaction.md b/docs/zh/guides/interaction.md index 158623bfe..f5444d73d 100644 --- a/docs/zh/guides/interaction.md +++ b/docs/zh/guides/interaction.md @@ -124,7 +124,7 @@ Thinking 模式需要当前模型支持。部分模型(如 `kimi-k2-thinking-t ## 多行输入 -有时你需要输入多行内容,比如贴入一段代码或错误日志。按 `Ctrl-J` 或 `Alt-Enter` 可以插入换行,而不是直接发送消息。 +有时你需要输入多行内容,比如贴入一段代码或错误日志。按 `Shift-Enter`、`Ctrl-J` 或 `Alt-Enter` 可以插入换行,而不是直接发送消息。 输入完成后,按 `Enter` 发送整条消息。 diff --git a/docs/zh/reference/keyboard.md b/docs/zh/reference/keyboard.md index 9eac0c2d8..145625ab0 100644 --- a/docs/zh/reference/keyboard.md +++ b/docs/zh/reference/keyboard.md @@ -9,8 +9,9 @@ Kimi Code CLI Shell 模式支持以下键盘快捷键。 | `Ctrl-X` | 切换 Agent/Shell 模式 | | `Shift-Tab` | 切换 Plan 模式(只读研究与规划) | | `Ctrl-O` | 在外部编辑器中编辑(`$VISUAL`/`$EDITOR`) | -| `Ctrl-J` | 插入换行 | -| `Alt-Enter` | 插入换行(同 `Ctrl-J`) | +| `Shift-Enter` | 插入换行 | +| `Ctrl-J` | 插入换行(同 `Shift-Enter`) | +| `Alt-Enter` | 插入换行(同 `Shift-Enter`) | | `Ctrl-S` | Steer:在 streaming 期间将输入立即注入到正在运行的轮次 | | `Ctrl-V` | 粘贴(支持图片和视频文件) | | `Ctrl-E` | 展开审批请求完整内容 | @@ -60,10 +61,11 @@ Kimi Code CLI Shell 模式支持以下键盘快捷键。 ## 多行输入 -### `Ctrl-J` / `Alt-Enter`:插入换行 +### `Shift-Enter` / `Ctrl-J` / `Alt-Enter`:插入换行 默认情况下,按 `Enter` 会提交输入。如需输入多行内容,可使用: +- `Shift-Enter`:在任意位置插入换行 - `Ctrl-J`:在任意位置插入换行 - `Alt-Enter`:在任意位置插入换行 diff --git a/src/kimi_cli/ui/shell/prompt.py b/src/kimi_cli/ui/shell/prompt.py index b820fe8a0..02bdef590 100644 --- a/src/kimi_cli/ui/shell/prompt.py +++ b/src/kimi_cli/ui/shell/prompt.py @@ -1164,7 +1164,7 @@ def _build_toolbar_tips(clipboard_available: bool) -> list[str]: "ctrl-x: toggle mode", "shift-tab: plan mode", "ctrl-o: editor", - "ctrl-j: newline", + "shift-enter / ctrl-j: newline", "/feedback: send feedback", "/theme: switch dark/light", ] @@ -1321,8 +1321,9 @@ async def _toggle() -> None: @_kb.add("escape", "enter", eager=True) @_kb.add("c-j", eager=True) + @_kb.add("s-enter", eager=True) def _(event: KeyPressEvent) -> None: - """Insert a newline when Alt-Enter or Ctrl-J is pressed.""" + """Insert a newline when Alt-Enter, Ctrl-J, or Shift-Enter is pressed.""" from kimi_cli.telemetry import track track("shortcut_newline")