VicroCode
让代码创造价值
VicroCode是一个轻量级代码在线发布、交易平台,开箱即用,免部署、免服务器、免备案,支持接入智能体、通用管理系统、游戏等多种项目
稍候片刻,您可先学习AI编程手册
正在加载中...

市场信息

[OpenAI] Codex 按 Ctrl+Shift+V 粘贴两次?用 AutoHotkey 解决

背景: 今天正好有时间,研究了一下解决 Codex 目前 Ctrl+Shift+V 会粘贴两次的问题,提出自己的解决方案并验证成功了。 我把整个 Debug 过程和相关信息记录了下来,希望对你们也有帮助。 文章首发在个人 Blog ,文章的部分内容有 AI 润色。

www.v2ex.com · 2026-09-03T14:29:12+00:00

背景: 今天正好有时间,研究了一下解决 Codex 目前 Ctrl+Shift+V 会粘贴两次的问题,提出自己的解决方案并验证成功了。我把整个 Debug 过程和相关信息记录了下来,希望对你们也有帮助。

文章首发在个人 Blog ,文章的部分内容有 AI 润色。长话短说 最近我在用 Codex Desktop 时,碰到了一个挺烦人的问题: Ctrl+V :正常粘贴一次 Ctrl+Shift+V :同一段内容连续粘贴两次 如果你的现象完全一样,那基本可以判断是 Codex Desktop 自己的快捷键和粘贴处理出了问题。

我研究了一下,觉得目前最实用的解决方案,是直接用 AutoHotkey 接管 Ctrl+Shift+V : Ctrl+Shift+V → AHK 截获 → 剪贴板转为纯文本 → 等待按键松开 → 模拟一次 Ctrl+V → 恢复原剪贴板 这样既能真正去掉 HTML 、字体、颜色等富文本格式,也能绕开 Codex 那条有问题的 Ctrl+Shift+V 处理路径。事情背景 先做一个很简单的测试,在 Codex 聊天输入框里分别粘贴同一段带格式的文本: Ctrl+V → 正常一次 Ctrl+Shift+V → 重复两次 如果只有第二种方式重复,基本就对上了。

这个问题并不是个例。 openai/codex 仓库中至少有两份相同的 Windows 报告: #26199:Windows 版纯文本粘贴会插入两次 ,提交于 2026-06-03 ,目前仍是 Open 。

#27161:Windows 10 下 Ctrl+Shift+V 粘贴两次 ,提交于 2026-06-09 。 #27161 虽然已经关闭,但在 2026-09-03 仍有人使用 Codex Desktop 26.831.2377.0 复现。

所以至少在我写这篇文章时,这个问题还没有真正消失。为什么会重复粘贴 从 #27161 的描述看,Codex 设置里还把 Ctrl+Shift+V 分配给了“启动或停止语音模式”。

一个快捷键同时牵涉语音和粘贴,很容易发生事件冲突。具体是哪一层处理了两次,官方目前没有给出清晰说明。

不过对我们来说,先解决使用问题更重要。思路也很直接: 不要再让 Codex 自己处理 Ctrl+Shift+V 。

用 AutoHotkey 绕开 Codex 的粘贴逻辑 AutoHotkey 是 Windows 上很经典的自动化工具,可以改快捷键、运行程序、自动输入,也可以做一些简单的桌面自动化。如果你平时喜欢折腾电脑,我很推荐装一下。

它占用资源很小,能解决的琐碎问题却很多。这次我们只让它做五件事: 仅在 Codex Desktop 窗口激活时接管 Ctrl+Shift+V 。

保存包含图片和富文本格式在内的完整剪贴板。把当前剪贴板重新写成纯文本。

用 KeyWait 等待你真正松开 Ctrl 和 Shift ,再发送一次 Ctrl+V 。粘贴完成后恢复原剪贴板。

完整脚本和代码说明 下面使用的是 AutoHotkey v2 语法。安装时不要选旧的 v1 ,否则脚本无法直接运行。

; ==================== 解决 GPT control + shift + v 粘贴两次 ==================== ; 只在 Codex Desktop 对应的 ChatGPT.exe 窗口中启用热键 #HotIf WinActive("ahk_exe ChatGPT.exe") ; $ 防止脚本发送的按键再次触发本热键 $^+v::{ ; 保存完整剪贴板,后面还会原样恢复 saved := ClipboardAll() ; 将剪贴板重新赋值给自己,去掉 HTML 、字体和颜色等格式 A_Clipboard := A_Clipboard ; 等物理按键真正松开,不主动发送 {Ctrl up}{Shift up} KeyWait("Ctrl") KeyWait("Shift") ; 绕开 Codex 的 Ctrl+Shift+V ,只发送一次普通 Ctrl+V Send("^v") ; 给一个很短的反馈,确认脚本已经接管本次粘贴 ToolTip("纯文本粘贴") SetTimer(() => ToolTip(), -700) ; 留出时间让目标程序读取文本,然后恢复原剪贴板 Sleep(100) A_Clipboard := saved } ; 结束窗口范围限制,避免影响后面的其他热键 #HotIf 这里最关键的是这一行: A_Clipboard := A_Clipboard 它会保留剪贴板里的文字,但去掉 HTML 、字体、颜色等额外格式。

这才是实际意义上的“粘贴为纯文本”。这里还有一个我当时实际遇到的坑。

触发 $^+v 的那一刻,物理键盘上的 Ctrl 和 Shift 通常还处于按下状态。如果这时立刻让 AHK 模拟 Ctrl+V ,输入法可能会把尚未松开的修饰键和新按下的 V 组合起来, 识别成一次输入法切换操作 。

最直觉的处理方式,是先执行 Send("{Ctrl up}{Shift up}") ,强行告诉系统这两个键已经抬起。但这种做法会主动修改修饰键状态,反而更容易和输入法、其他快捷键产生副作用。

我最后采用的方案更稳: 不伪造按键抬起,而是等你真的松开 Ctrl 、 Shift 后再粘贴。另外两行 KeyWait 也不能省。

它们会暂停脚本,直到你真正松开对应按键,再继续执行 Send("^v") 。这样既避免了物理修饰键叠加,也不会像 Send("{Ctrl up}{Shift up}") 那样强行干预键盘状态。

创建并运行 Control.ahk 从 AutoHotkey 官网 下载并安装 v2 。找一个长期不会删除的位置,新建文件 Control.ahk 。

用记事本或代码编辑器打开,把上面的代码完整粘贴进去并保存。双击 Control.ahk 运行脚本。

回到 Codex Desktop ,按一次 Ctrl+Shift+V 测试。成功后,系统托盘会出现 AutoHotkey 图标,每次粘贴时还会短暂显示“纯文本粘贴”。

注意文件名一定要以 .ahk 结尾,不要保存成 Control.ahk.txt 。设置开机自动启动 每次手动运行还是有点麻烦,直接放进 Windows 启动目录更省事: 右键 Control.ahk ,创建一个快捷方式。

按 Win+R 打开“运行”。输入 shell:startup 并回车。

把刚才创建的脚本快捷方式放进这个文件夹。链路就是: Windows 启动 → 自动运行快捷方式 → 加载 Control.ahk → 接管 Codex 的 Ctrl+Shift+V 使用效果和注意事项 这份脚本只对进程名为 ChatGPT.exe 的窗口生效,不会修改其他软件的 Ctrl+Shift+V 。

如果脚本运行后完全没有反应,可以先在任务管理器里确认 Codex Desktop 的进程名。如果后续版本更改了进程名,就需要同步修改 ahk_exe ChatGPT.exe 。

另外,脚本会在粘贴后等待 100ms 再恢复剪贴板。普通文字通常够用;如果粘贴特别长的日志时偶尔出现内容不完整,可以把它提高到 300 或 500 。

最后 这个方案没有修复 Codex 本身,它是绕开了有问题的快捷键路径。但从实际使用角度看,它已经把问题解决得很干净:按键习惯不用改,粘贴只执行一次,还顺便获得了真正的纯文本粘贴。

在官方彻底解决之前,我会继续用这套方案。简单、稳定,也不需要为了粘贴一段文字反复删掉重复内容。

返回 AI 市场导读

来源:v2ex.com