diff --git a/docs/cli/keyboard-shortcuts.md b/docs/cli/keyboard-shortcuts.md
index 96565a5cf3..b90954a31a 100644
--- a/docs/cli/keyboard-shortcuts.md
+++ b/docs/cli/keyboard-shortcuts.md
@@ -87,10 +87,10 @@ available combinations.
#### Text Input
-| Action | Keys |
-| ------------------------------------ | ------------------------------------------------------------------------------------------- |
-| Submit the current prompt. | `Enter (no Ctrl, no Shift, no Cmd, not Paste)` |
-| Insert a newline without submitting. | `Ctrl + Enter`
`Cmd + Enter`
`Paste + Enter`
`Shift + Enter`
`Ctrl + J` |
+| Action | Keys |
+| ------------------------------------ | ---------------------------------------------------------------------- |
+| Submit the current prompt. | `Enter (no Ctrl, no Shift, no Cmd)` |
+| Insert a newline without submitting. | `Ctrl + Enter`
`Cmd + Enter`
`Shift + Enter`
`Ctrl + J` |
#### External Tools
diff --git a/packages/cli/src/config/keyBindings.test.ts b/packages/cli/src/config/keyBindings.test.ts
index 2a4debd483..d8c83024f5 100644
--- a/packages/cli/src/config/keyBindings.test.ts
+++ b/packages/cli/src/config/keyBindings.test.ts
@@ -45,9 +45,6 @@ describe('keyBindings config', () => {
if (binding.command !== undefined) {
expect(typeof binding.command).toBe('boolean');
}
- if (binding.paste !== undefined) {
- expect(typeof binding.paste).toBe('boolean');
- }
}
}
});
diff --git a/packages/cli/src/config/keyBindings.ts b/packages/cli/src/config/keyBindings.ts
index 432d958489..d888c1046e 100644
--- a/packages/cli/src/config/keyBindings.ts
+++ b/packages/cli/src/config/keyBindings.ts
@@ -104,8 +104,6 @@ export interface KeyBinding {
shift?: boolean;
/** Command/meta key requirement: true=must be pressed, false=must not be pressed, undefined=ignore */
command?: boolean;
- /** Paste operation requirement: true=must be paste, false=must not be paste, undefined=ignore */
- paste?: boolean;
}
/**
@@ -211,7 +209,6 @@ export const defaultKeyBindings: KeyBindingConfig = {
key: 'return',
ctrl: false,
command: false,
- paste: false,
shift: false,
},
],
@@ -220,7 +217,6 @@ export const defaultKeyBindings: KeyBindingConfig = {
[Command.NEWLINE]: [
{ key: 'return', ctrl: true },
{ key: 'return', command: true },
- { key: 'return', paste: true },
{ key: 'return', shift: true },
{ key: 'j', ctrl: true },
],
diff --git a/packages/cli/src/ui/AppContainer.test.tsx b/packages/cli/src/ui/AppContainer.test.tsx
index dd648d1975..3dbf61c965 100644
--- a/packages/cli/src/ui/AppContainer.test.tsx
+++ b/packages/cli/src/ui/AppContainer.test.tsx
@@ -1858,7 +1858,6 @@ describe('AppContainer State Management', () => {
ctrl: true,
meta: false,
shift: false,
- paste: false,
insertable: false,
sequence: '\x13',
});
@@ -1885,7 +1884,6 @@ describe('AppContainer State Management', () => {
ctrl: true,
meta: false,
shift: false,
- paste: false,
insertable: false,
sequence: '\x13',
});
@@ -1900,7 +1898,6 @@ describe('AppContainer State Management', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: true,
sequence: 'a',
});
@@ -1921,7 +1918,6 @@ describe('AppContainer State Management', () => {
ctrl: true,
meta: false,
shift: false,
- paste: false,
insertable: false,
sequence: '\x13',
});
@@ -1937,7 +1933,6 @@ describe('AppContainer State Management', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: true,
sequence: 'a',
});
diff --git a/packages/cli/src/ui/auth/ApiAuthDialog.test.tsx b/packages/cli/src/ui/auth/ApiAuthDialog.test.tsx
index a17c2708bf..e752c616a0 100644
--- a/packages/cli/src/ui/auth/ApiAuthDialog.test.tsx
+++ b/packages/cli/src/ui/auth/ApiAuthDialog.test.tsx
@@ -112,7 +112,6 @@ describe('ApiAuthDialog', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
});
expect(expectedCall).toHaveBeenCalledWith(...args);
diff --git a/packages/cli/src/ui/auth/LoginWithGoogleRestartDialog.test.tsx b/packages/cli/src/ui/auth/LoginWithGoogleRestartDialog.test.tsx
index 5dd9d0c171..a7e857bd3b 100644
--- a/packages/cli/src/ui/auth/LoginWithGoogleRestartDialog.test.tsx
+++ b/packages/cli/src/ui/auth/LoginWithGoogleRestartDialog.test.tsx
@@ -52,7 +52,6 @@ describe('LoginWithGoogleRestartDialog', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
});
expect(onDismiss).toHaveBeenCalledTimes(1);
@@ -72,7 +71,6 @@ describe('LoginWithGoogleRestartDialog', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
});
// Advance timers to trigger the setTimeout callback
diff --git a/packages/cli/src/ui/components/InputPrompt.test.tsx b/packages/cli/src/ui/components/InputPrompt.test.tsx
index b9a3d2622d..0a801cba87 100644
--- a/packages/cli/src/ui/components/InputPrompt.test.tsx
+++ b/packages/cli/src/ui/components/InputPrompt.test.tsx
@@ -1465,7 +1465,7 @@ describe('InputPrompt', () => {
await waitFor(() => {
expect(mockBuffer.handleInput).toHaveBeenCalledWith(
expect.objectContaining({
- paste: true,
+ name: 'paste',
sequence: 'pasted text',
}),
);
@@ -1708,7 +1708,7 @@ describe('InputPrompt', () => {
expect(props.buffer.handleInput).toHaveBeenCalledTimes(1);
expect(props.buffer.handleInput).toHaveBeenCalledWith(
expect.objectContaining({
- paste: true,
+ name: 'paste',
sequence: pastedText,
}),
);
diff --git a/packages/cli/src/ui/components/InputPrompt.tsx b/packages/cli/src/ui/components/InputPrompt.tsx
index 762fc84b06..f2445d4061 100644
--- a/packages/cli/src/ui/components/InputPrompt.tsx
+++ b/packages/cli/src/ui/components/InputPrompt.tsx
@@ -396,11 +396,11 @@ export const InputPrompt: React.FC = ({
// We should probably stop supporting paste if the InputPrompt is not
// focused.
/// We want to handle paste even when not focused to support drag and drop.
- if (!focus && !key.paste) {
+ if (!focus && key.name !== 'paste') {
return;
}
- if (key.paste) {
+ if (key.name === 'paste') {
// Record paste time to prevent accidental auto-submission
if (!isTerminalPasteTrusted(kittyProtocol.enabled)) {
setRecentUnsafePasteTime(Date.now());
diff --git a/packages/cli/src/ui/components/MultiFolderTrustDialog.test.tsx b/packages/cli/src/ui/components/MultiFolderTrustDialog.test.tsx
index 64e992b06a..9ec91f53c4 100644
--- a/packages/cli/src/ui/components/MultiFolderTrustDialog.test.tsx
+++ b/packages/cli/src/ui/components/MultiFolderTrustDialog.test.tsx
@@ -94,7 +94,6 @@ describe('MultiFolderTrustDialog', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
sequence: '',
insertable: false,
});
diff --git a/packages/cli/src/ui/components/SessionBrowser.test.tsx b/packages/cli/src/ui/components/SessionBrowser.test.tsx
index 5668d21037..3fa4da896d 100644
--- a/packages/cli/src/ui/components/SessionBrowser.test.tsx
+++ b/packages/cli/src/ui/components/SessionBrowser.test.tsx
@@ -111,7 +111,6 @@ const triggerKey = (
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: false,
sequence: '',
...partialKey,
diff --git a/packages/cli/src/ui/components/SettingsDialog.tsx b/packages/cli/src/ui/components/SettingsDialog.tsx
index b0c40e2d2c..97ae3939fb 100644
--- a/packages/cli/src/ui/components/SettingsDialog.tsx
+++ b/packages/cli/src/ui/components/SettingsDialog.tsx
@@ -606,7 +606,7 @@ export function SettingsDialog({
const definition = getSettingDefinition(editingKey);
const type = definition?.type;
- if (key.paste && key.sequence) {
+ if (key.name === 'paste' && key.sequence) {
let pasted = key.sequence;
if (type === 'number') {
pasted = key.sequence.replace(/[^0-9\-+.]/g, '');
diff --git a/packages/cli/src/ui/components/shared/TextInput.test.tsx b/packages/cli/src/ui/components/shared/TextInput.test.tsx
index 7af09fe7a9..56c3edbd37 100644
--- a/packages/cli/src/ui/components/shared/TextInput.test.tsx
+++ b/packages/cli/src/ui/components/shared/TextInput.test.tsx
@@ -155,7 +155,6 @@ describe('TextInput', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
});
expect(mockBuffer.handleInput).toHaveBeenCalledWith({
@@ -164,7 +163,6 @@ describe('TextInput', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
});
expect(mockBuffer.text).toBe('a');
});
@@ -182,7 +180,6 @@ describe('TextInput', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
});
expect(mockBuffer.handleInput).toHaveBeenCalledWith({
@@ -191,7 +188,6 @@ describe('TextInput', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
});
expect(mockBuffer.text).toBe('tes');
});
@@ -209,7 +205,6 @@ describe('TextInput', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
});
// Cursor moves from end to before 't'
@@ -230,7 +225,6 @@ describe('TextInput', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
});
expect(mockBuffer.visualCursor[1]).toBe(3);
@@ -249,7 +243,6 @@ describe('TextInput', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
});
expect(onSubmit).toHaveBeenCalledWith('test');
@@ -268,7 +261,6 @@ describe('TextInput', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
});
await vi.runAllTimersAsync();
diff --git a/packages/cli/src/ui/components/shared/text-buffer.test.ts b/packages/cli/src/ui/components/shared/text-buffer.test.ts
index f127f28051..0cd7c7bfd2 100644
--- a/packages/cli/src/ui/components/shared/text-buffer.test.ts
+++ b/packages/cli/src/ui/components/shared/text-buffer.test.ts
@@ -1051,7 +1051,6 @@ describe('useTextBuffer', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: true,
sequence: 'h',
}),
@@ -1062,7 +1061,6 @@ describe('useTextBuffer', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: true,
sequence: 'i',
}),
@@ -1080,7 +1078,6 @@ describe('useTextBuffer', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: true,
sequence: '\r',
}),
@@ -1098,7 +1095,6 @@ describe('useTextBuffer', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: false,
sequence: '\t',
}),
@@ -1116,7 +1112,6 @@ describe('useTextBuffer', () => {
ctrl: false,
meta: false,
shift: true,
- paste: false,
insertable: false,
sequence: '\u001b[9;2u',
}),
@@ -1139,7 +1134,6 @@ describe('useTextBuffer', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: false,
sequence: '\x7f',
}),
@@ -1164,7 +1158,6 @@ describe('useTextBuffer', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: false,
sequence: '\x7f',
});
@@ -1173,7 +1166,6 @@ describe('useTextBuffer', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: false,
sequence: '\x7f',
});
@@ -1182,7 +1174,6 @@ describe('useTextBuffer', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: false,
sequence: '\x7f',
});
@@ -1242,7 +1233,6 @@ describe('useTextBuffer', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: false,
sequence: '\x1b[D',
}),
@@ -1254,7 +1244,6 @@ describe('useTextBuffer', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: false,
sequence: '\x1b[C',
}),
@@ -1274,7 +1263,6 @@ describe('useTextBuffer', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: true,
sequence: textWithAnsi,
}),
@@ -1292,7 +1280,6 @@ describe('useTextBuffer', () => {
ctrl: false,
meta: false,
shift: true,
- paste: false,
insertable: true,
sequence: '\r',
}),
@@ -1497,7 +1484,6 @@ Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: true,
sequence,
});
@@ -1556,7 +1542,6 @@ Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: true,
sequence: largeTextWithUnsafe,
}),
@@ -1591,7 +1576,6 @@ Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: true,
sequence: largeTextWithAnsi,
}),
@@ -1616,7 +1600,6 @@ Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: true,
sequence: emojis,
}),
@@ -1808,7 +1791,6 @@ Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: true,
sequence: '\r',
}),
@@ -1830,7 +1812,6 @@ Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: false,
sequence: '\u001bOP',
}),
diff --git a/packages/cli/src/ui/components/shared/text-buffer.ts b/packages/cli/src/ui/components/shared/text-buffer.ts
index 26c1ddca80..9ef6fdec83 100644
--- a/packages/cli/src/ui/components/shared/text-buffer.ts
+++ b/packages/cli/src/ui/components/shared/text-buffer.ts
@@ -2223,10 +2223,10 @@ export function useTextBuffer({
(key: Key): void => {
const { sequence: input } = key;
- if (key.paste) {
+ if (key.name === 'paste') {
// Do not do any other processing on pastes so ensure we handle them
// before all other cases.
- insert(input, { paste: key.paste });
+ insert(input, { paste: true });
return;
}
@@ -2253,7 +2253,7 @@ export function useTextBuffer({
else if (keyMatchers[Command.UNDO](key)) undo();
else if (keyMatchers[Command.REDO](key)) redo();
else if (key.insertable) {
- insert(input, { paste: key.paste });
+ insert(input, { paste: false });
}
},
[
diff --git a/packages/cli/src/ui/contexts/KeypressContext.test.tsx b/packages/cli/src/ui/contexts/KeypressContext.test.tsx
index 348f940dbd..24cadfa85c 100644
--- a/packages/cli/src/ui/contexts/KeypressContext.test.tsx
+++ b/packages/cli/src/ui/contexts/KeypressContext.test.tsx
@@ -384,7 +384,7 @@ describe('KeypressContext', () => {
expect(keyHandler).toHaveBeenCalledWith(
expect.objectContaining({
- paste: true,
+ name: 'paste',
sequence: pastedText,
}),
);
@@ -405,7 +405,6 @@ describe('KeypressContext', () => {
expect(keyHandler).toHaveBeenCalledWith(
expect.objectContaining({
name: 'paste',
- paste: true,
sequence: 'Hello OSC 52',
}),
);
@@ -432,7 +431,6 @@ describe('KeypressContext', () => {
expect(keyHandler).toHaveBeenCalledWith(
expect.objectContaining({
name: 'paste',
- paste: true,
sequence: 'Split Paste',
}),
);
@@ -454,7 +452,6 @@ describe('KeypressContext', () => {
expect(keyHandler).toHaveBeenCalledWith(
expect.objectContaining({
name: 'paste',
- paste: true,
sequence: 'Terminated by ST',
}),
);
@@ -727,7 +724,6 @@ describe('KeypressContext', () => {
ctrl: false,
meta: true,
shift: false,
- paste: false,
},
};
} else if (terminal === 'MacTerminal') {
@@ -743,7 +739,6 @@ describe('KeypressContext', () => {
ctrl: false,
meta: true,
shift: false,
- paste: false,
},
};
} else {
@@ -759,7 +754,6 @@ describe('KeypressContext', () => {
ctrl: false,
meta: true, // Always expect meta:true after conversion
shift: false,
- paste: false,
sequence: accentedChar,
},
};
@@ -834,7 +828,6 @@ describe('KeypressContext', () => {
expect.objectContaining({
name: 'undefined',
sequence: INCOMPLETE_KITTY_SEQUENCE,
- paste: false,
}),
);
});
@@ -853,7 +846,6 @@ describe('KeypressContext', () => {
expect(keyHandler).toHaveBeenCalledWith(
expect.objectContaining({
sequence: '\x1b[m',
- paste: false,
}),
);
});
diff --git a/packages/cli/src/ui/contexts/KeypressContext.tsx b/packages/cli/src/ui/contexts/KeypressContext.tsx
index c0fdd6deac..df59356990 100644
--- a/packages/cli/src/ui/contexts/KeypressContext.tsx
+++ b/packages/cli/src/ui/contexts/KeypressContext.tsx
@@ -250,11 +250,10 @@ function bufferPaste(keypressHandler: KeypressHandler): KeypressHandler {
if (buffer.length > 0) {
keypressHandler({
- name: '',
+ name: 'paste',
ctrl: false,
meta: false,
shift: false,
- paste: true,
insertable: true,
sequence: buffer,
});
@@ -357,7 +356,6 @@ function* emitKeys(
ctrl: false,
meta: false,
shift: false,
- paste: true,
insertable: true,
sequence: decoded,
});
@@ -570,7 +568,6 @@ function* emitKeys(
ctrl,
meta,
shift,
- paste: false,
insertable: false,
sequence: ESC,
});
@@ -592,7 +589,6 @@ function* emitKeys(
ctrl,
meta,
shift,
- paste: false,
insertable,
sequence,
});
@@ -606,7 +602,6 @@ export interface Key {
ctrl: boolean;
meta: boolean;
shift: boolean;
- paste: boolean;
insertable: boolean;
sequence: string;
}
diff --git a/packages/cli/src/ui/hooks/useKeypress.test.tsx b/packages/cli/src/ui/hooks/useKeypress.test.tsx
index ebbc5eef82..71d901bcb5 100644
--- a/packages/cli/src/ui/hooks/useKeypress.test.tsx
+++ b/packages/cli/src/ui/hooks/useKeypress.test.tsx
@@ -114,7 +114,7 @@ describe(`useKeypress`, () => {
const key = { name: 'return', sequence: '\x1B\r' };
act(() => stdin.write(key.sequence));
expect(onKeypress).toHaveBeenCalledWith(
- expect.objectContaining({ ...key, meta: true, paste: false }),
+ expect.objectContaining({ ...key, meta: true }),
);
});
@@ -139,11 +139,10 @@ describe(`useKeypress`, () => {
expect(onKeypress).toHaveBeenCalledTimes(1);
expect(onKeypress).toHaveBeenCalledWith({
- name: '',
+ name: 'paste',
ctrl: false,
meta: false,
shift: false,
- paste: true,
insertable: true,
sequence: pasteText,
});
@@ -155,19 +154,19 @@ describe(`useKeypress`, () => {
const keyA = { name: 'a', sequence: 'a' };
act(() => stdin.write('a'));
expect(onKeypress).toHaveBeenCalledWith(
- expect.objectContaining({ ...keyA, paste: false }),
+ expect.objectContaining({ ...keyA }),
);
const pasteText = 'pasted';
act(() => stdin.write(PASTE_START + pasteText + PASTE_END));
expect(onKeypress).toHaveBeenCalledWith(
- expect.objectContaining({ paste: true, sequence: pasteText }),
+ expect.objectContaining({ name: 'paste', sequence: pasteText }),
);
const keyB = { name: 'b', sequence: 'b' };
act(() => stdin.write('b'));
expect(onKeypress).toHaveBeenCalledWith(
- expect.objectContaining({ ...keyB, paste: false }),
+ expect.objectContaining({ ...keyB }),
);
expect(onKeypress).toHaveBeenCalledTimes(3);
@@ -183,10 +182,8 @@ describe(`useKeypress`, () => {
stdin.write(PASTE_END);
});
expect(onKeypress).toHaveBeenCalledWith(
- expect.objectContaining({ paste: true, sequence: pasteText }),
+ expect.objectContaining({ name: 'paste', sequence: pasteText }),
);
-
- expect(onKeypress).toHaveBeenCalledTimes(1);
});
it('should handle paste false alarm', async () => {
@@ -222,10 +219,10 @@ describe(`useKeypress`, () => {
);
});
expect(onKeypress).toHaveBeenCalledWith(
- expect.objectContaining({ paste: true, sequence: pasteText1 }),
+ expect.objectContaining({ name: 'paste', sequence: pasteText1 }),
);
expect(onKeypress).toHaveBeenCalledWith(
- expect.objectContaining({ paste: true, sequence: pasteText2 }),
+ expect.objectContaining({ name: 'paste', sequence: pasteText2 }),
);
expect(onKeypress).toHaveBeenCalledTimes(2);
@@ -237,7 +234,7 @@ describe(`useKeypress`, () => {
const keyA = { name: 'a', sequence: 'a' };
act(() => stdin.write('a'));
expect(onKeypress).toHaveBeenCalledWith(
- expect.objectContaining({ ...keyA, paste: false }),
+ expect.objectContaining({ ...keyA }),
);
const pasteText = 'pasted';
@@ -251,13 +248,13 @@ describe(`useKeypress`, () => {
stdin.write(PASTE_END.slice(3));
});
expect(onKeypress).toHaveBeenCalledWith(
- expect.objectContaining({ paste: true, sequence: pasteText }),
+ expect.objectContaining({ name: 'paste', sequence: pasteText }),
);
const keyB = { name: 'b', sequence: 'b' };
act(() => stdin.write('b'));
expect(onKeypress).toHaveBeenCalledWith(
- expect.objectContaining({ ...keyB, paste: false }),
+ expect.objectContaining({ ...keyB }),
);
expect(onKeypress).toHaveBeenCalledTimes(3);
diff --git a/packages/cli/src/ui/hooks/useSelectionList.test.tsx b/packages/cli/src/ui/hooks/useSelectionList.test.tsx
index 38351710b0..7006f0f5d3 100644
--- a/packages/cli/src/ui/hooks/useSelectionList.test.tsx
+++ b/packages/cli/src/ui/hooks/useSelectionList.test.tsx
@@ -61,7 +61,6 @@ describe('useSelectionList', () => {
ctrl: options.ctrl ?? false,
meta: false,
shift: options.shift ?? false,
- paste: false,
insertable: false,
};
activeKeypressHandler(key);
@@ -331,7 +330,6 @@ describe('useSelectionList', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: true,
};
handler(key);
@@ -381,7 +379,6 @@ describe('useSelectionList', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: false,
};
handler(key);
diff --git a/packages/cli/src/ui/hooks/vim.test.tsx b/packages/cli/src/ui/hooks/vim.test.tsx
index a7931f0733..db7d287425 100644
--- a/packages/cli/src/ui/hooks/vim.test.tsx
+++ b/packages/cli/src/ui/hooks/vim.test.tsx
@@ -39,7 +39,6 @@ const createKey = (partial: Partial): Key => ({
ctrl: partial.ctrl || false,
meta: partial.meta || false,
shift: partial.shift || false,
- paste: partial.paste || false,
insertable: partial.insertable || false,
...partial,
});
diff --git a/packages/cli/src/ui/hooks/vim.ts b/packages/cli/src/ui/hooks/vim.ts
index dc3344a201..46492220a0 100644
--- a/packages/cli/src/ui/hooks/vim.ts
+++ b/packages/cli/src/ui/hooks/vim.ts
@@ -312,7 +312,6 @@ export function useVim(buffer: TextBuffer, onSubmit?: (value: string) => void) {
ctrl: key.ctrl || false,
meta: key.meta || false,
shift: key.shift || false,
- paste: key.paste || false,
insertable: key.insertable || false,
}),
[],
diff --git a/packages/cli/src/ui/keyMatchers.test.ts b/packages/cli/src/ui/keyMatchers.test.ts
index 06af0e0a95..670f84a87b 100644
--- a/packages/cli/src/ui/keyMatchers.test.ts
+++ b/packages/cli/src/ui/keyMatchers.test.ts
@@ -16,7 +16,6 @@ describe('keyMatchers', () => {
ctrl: false,
meta: false,
shift: false,
- paste: false,
insertable: false,
sequence: name,
...mods,
@@ -243,7 +242,6 @@ describe('keyMatchers', () => {
negative: [
createKey('return', { ctrl: true }),
createKey('return', { meta: true }),
- createKey('return', { paste: true }),
],
},
{
@@ -251,7 +249,6 @@ describe('keyMatchers', () => {
positive: [
createKey('return', { ctrl: true }),
createKey('return', { meta: true }),
- createKey('return', { paste: true }),
],
negative: [createKey('return'), createKey('n')],
},
diff --git a/packages/cli/src/ui/keyMatchers.ts b/packages/cli/src/ui/keyMatchers.ts
index 103c571003..b12160dbb6 100644
--- a/packages/cli/src/ui/keyMatchers.ts
+++ b/packages/cli/src/ui/keyMatchers.ts
@@ -46,10 +46,6 @@ function matchKeyBinding(keyBinding: KeyBinding, key: Key): boolean {
return false;
}
- if (keyBinding.paste !== undefined && key.paste !== keyBinding.paste) {
- return false;
- }
-
return true;
}