diff --git a/docs/cli/keyboard-shortcuts.md b/docs/cli/keyboard-shortcuts.md
index ffc0a39fda..ac2705f757 100644
--- a/docs/cli/keyboard-shortcuts.md
+++ b/docs/cli/keyboard-shortcuts.md
@@ -96,31 +96,31 @@ available combinations.
#### App Controls
-| Action | Keys |
-| ----------------------------------------------------------------------------------------------------- | -------------------------- |
-| Toggle detailed error information. | `F12` |
-| Toggle the full TODO list. | `Ctrl + T` |
-| Show IDE context details. | `Ctrl + G` |
-| Toggle Markdown rendering. | `Alt + M` |
-| Toggle copy mode when in alternate buffer mode. | `Ctrl + S` |
-| Toggle YOLO (auto-approval) mode for tool calls. | `Ctrl + Y` |
-| Cycle through approval modes: default (prompt), auto_edit (auto-approve edits), and plan (read-only). | `Shift + Tab` |
-| Expand a height-constrained response to show additional lines when not in alternate buffer mode. | `Ctrl + O`
`Ctrl + S` |
-| Expand or collapse a paste placeholder when cursor is over placeholder. | `Ctrl + O` |
-| Toggle current background shell visibility. | `Ctrl + B` |
-| Toggle background shell list. | `Ctrl + L` |
-| Kill the active background shell. | `Ctrl + K` |
-| Confirm selection in background shell list. | `Enter` |
-| Dismiss background shell list. | `Esc` |
-| Move focus from background shell to Gemini. | `Shift + Tab` |
-| Move focus from background shell list to Gemini. | `Tab (no Shift)` |
-| Show warning when trying to move focus away from background shell. | `Tab (no Shift)` |
-| Show warning when trying to move focus away from shell input. | `Tab (no Shift)` |
-| Move focus from Gemini to the active shell. | `Tab (no Shift)` |
-| Move focus from the shell back to Gemini. | `Shift + Tab` |
-| Clear the terminal screen and redraw the UI. | `Ctrl + L` |
-| Restart the application. | `R` |
-| Suspend the CLI and move it to the background. | `Ctrl + Z` |
+| Action | Keys |
+| ----------------------------------------------------------------------------------------------------- | ---------------- |
+| Toggle detailed error information. | `F12` |
+| Toggle the full TODO list. | `Ctrl + T` |
+| Show IDE context details. | `Ctrl + G` |
+| Toggle Markdown rendering. | `Alt + M` |
+| Toggle copy mode when in alternate buffer mode. | `Ctrl + S` |
+| Toggle YOLO (auto-approval) mode for tool calls. | `Ctrl + Y` |
+| Cycle through approval modes: default (prompt), auto_edit (auto-approve edits), and plan (read-only). | `Shift + Tab` |
+| Expand and collapse blocks of content when not in alternate buffer mode. | `Ctrl + O` |
+| Expand or collapse a paste placeholder when cursor is over placeholder. | `Ctrl + O` |
+| Toggle current background shell visibility. | `Ctrl + B` |
+| Toggle background shell list. | `Ctrl + L` |
+| Kill the active background shell. | `Ctrl + K` |
+| Confirm selection in background shell list. | `Enter` |
+| Dismiss background shell list. | `Esc` |
+| Move focus from background shell to Gemini. | `Shift + Tab` |
+| Move focus from background shell list to Gemini. | `Tab (no Shift)` |
+| Show warning when trying to move focus away from background shell. | `Tab (no Shift)` |
+| Show warning when trying to move focus away from shell input. | `Tab (no Shift)` |
+| Move focus from Gemini to the active shell. | `Tab (no Shift)` |
+| Move focus from the shell back to Gemini. | `Shift + Tab` |
+| Clear the terminal screen and redraw the UI. | `Ctrl + L` |
+| Restart the application. | `R` |
+| Suspend the CLI and move it to the background. | `Ctrl + Z` |
diff --git a/packages/cli/src/config/keyBindings.ts b/packages/cli/src/config/keyBindings.ts
index c3f1f70fbe..35e1bb8041 100644
--- a/packages/cli/src/config/keyBindings.ts
+++ b/packages/cli/src/config/keyBindings.ts
@@ -286,10 +286,7 @@ export const defaultKeyBindings: KeyBindingConfig = {
[Command.SHOW_SHELL_INPUT_UNFOCUS_WARNING]: [{ key: 'tab', shift: false }],
[Command.BACKGROUND_SHELL_SELECT]: [{ key: 'return' }],
[Command.BACKGROUND_SHELL_ESCAPE]: [{ key: 'escape' }],
- [Command.SHOW_MORE_LINES]: [
- { key: 'o', ctrl: true },
- { key: 's', ctrl: true },
- ],
+ [Command.SHOW_MORE_LINES]: [{ key: 'o', ctrl: true }],
[Command.EXPAND_PASTE]: [{ key: 'o', ctrl: true }],
[Command.FOCUS_SHELL_INPUT]: [{ key: 'tab', shift: false }],
[Command.UNFOCUS_SHELL_INPUT]: [{ key: 'tab', shift: true }],
@@ -501,7 +498,7 @@ export const commandDescriptions: Readonly> = {
[Command.CYCLE_APPROVAL_MODE]:
'Cycle through approval modes: default (prompt), auto_edit (auto-approve edits), and plan (read-only).',
[Command.SHOW_MORE_LINES]:
- 'Expand a height-constrained response to show additional lines when not in alternate buffer mode.',
+ 'Expand and collapse blocks of content when not in alternate buffer mode.',
[Command.EXPAND_PASTE]:
'Expand or collapse a paste placeholder when cursor is over placeholder.',
[Command.BACKGROUND_SHELL_SELECT]:
diff --git a/packages/cli/src/ui/AppContainer.tsx b/packages/cli/src/ui/AppContainer.tsx
index 17e54f4771..1d91d44256 100644
--- a/packages/cli/src/ui/AppContainer.tsx
+++ b/packages/cli/src/ui/AppContainer.tsx
@@ -1620,6 +1620,14 @@ Logging in with Google... Restarting Gemini CLI to continue.
return true;
} else if (keyMatchers[Command.SUSPEND_APP](key)) {
handleSuspend();
+ } else if (
+ keyMatchers[Command.TOGGLE_COPY_MODE](key) &&
+ !isAlternateBuffer
+ ) {
+ showTransientMessage({
+ text: 'Use Ctrl+O to expand and collapse blocks of content.',
+ type: TransientMessageType.Warning,
+ });
return true;
}
diff --git a/packages/cli/src/ui/keyMatchers.test.ts b/packages/cli/src/ui/keyMatchers.test.ts
index 329549c08d..7a3a077994 100644
--- a/packages/cli/src/ui/keyMatchers.test.ts
+++ b/packages/cli/src/ui/keyMatchers.test.ts
@@ -344,11 +344,12 @@ describe('keyMatchers', () => {
},
{
command: Command.SHOW_MORE_LINES,
- positive: [
+ positive: [createKey('o', { ctrl: true })],
+ negative: [
createKey('s', { ctrl: true }),
- createKey('o', { ctrl: true }),
+ createKey('s'),
+ createKey('l', { ctrl: true }),
],
- negative: [createKey('s'), createKey('l', { ctrl: true })],
},
// Shell commands