#15016·warp

在 macOS 上, cmd+C 不会在 alt-screen TUIs 中进行复制 — copy() 中的 PTY 回退功能是 Linux 专用的

作者: LarryKong创建于 2026年8月12日更新于 2026年9月17日
标签bugtriagedrepro:highos:macarea:settings-keybindingsarea:terminal-inputwarp:auto-triage-reviewagent:bug

□ 总结

曲速已经有这个的固定——它只是被门到Linux.

#13988(Linux,"ctrl+tort+c"在Claude代码拥有内部选择权时被吞并)被固定在#14046中,在"TerminalView:::copy ()"中附加了倒数:如果Warp自身没有被复制,而Alt屏幕运行,则将副本意向PTY转发,这样TUI就可以复制自己的选择. 在macOS上,cmd+C'发送到同样的副本()'——但倒置被cfg!'(目标-os = "linux")'所包裹,因此它永远不会起火,而cmd+C'默默无闻地无所事事。

这是9159号的后半部. #14012(合并,谢谢)固定了"编码器",因此"cmd+Backspace"/"cmd+marrows"现在正确到达了TUI. 复制路径是一个单独的,app级的截取,#14012没有触碰,因此#9159关闭了"cmd+C"仍然被打破.

□ 环境

  • 转动`0.2026.08.05.09.03.01'(包括#14012)
  • macOS 26.5.1,arm64
  • Claude 代码 2.1.228 有 “ tui ” : “全屏” (任何具有自己选择内容的Alt-screen TUI 复制——开口代码行为相同)

□ 重现

  1. 运行 Claude 在 Warp 中以全屏模式编码 。
  2. 在TUI内部选择其内部选择。
  3. 按`cmd+C'。

** 预期:** 选择区域位于macOS剪贴板上,与“ctrl+C”相匹配(Claude) 代码在选择活动时重用为副本),并匹配了"ctrl+trange+c"在#14046后现在对Linux所做的.

** 实际:** 没有复制。 扭曲会消耗键盘,找不到自己的选择,然后停止。 剪贴板不变。

□ 根源

app/src/terminal/view.rs:16520'-fn copy()'。 最终倒计时,

/ 请检查url=值 (帮助). 如果没有复制任何内容,而且一个全屏的TUI(自动屏幕)正在管理自己的选择,
/ 将副本意向转发到前景 TUI , 这样它就可以复制自己的选择 。
如果 cfg ! (目标 os = "linux")
自动. select  blocks.is 空()
QQ 自定义. model.lock (. ).is alt screen 活化 ()
{
自我. user  write ctrl c to pty(ctx);
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

cfg!'(目标-os = "linux")at `view.rs:16575'是整个问题。 守卫中的其他一切都是平台中立的,并且已经对了macOS:

  • tterminal:copy'与 " cmd+C"在macOS上带有 "id!" ( "terminal") & !id! ( "IME Open") (app/src/terminal/view/init.rs:376'),这在终端平板电脑中始终是真实的——所以Warp在编码器看到它之前就赢得了按键。 没有用户侧键绑定、设置或“键绑定”。 Yaml ' 的无约束改变这一点,没有编码器的固定可以达到它。
  • `副本()'的每一个较早的分行在到达倒数时都已经返回,因此倒数只有在Warp真正没有任何东西可以复制时才运行。
  • 用户-写作-ctrl c to pty()'(view.rs:8758')是平台独立的。

□ 建议的固定

放下站台门 :

如果自.sselect blocks.is 空地 () QQ自. model.lock (.is alt screen 活地 () {
自我. user  write ctrl c to pty(ctx);
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

这是相同的行为#14046 已经运出,验证,和回归测试在Linux上——只是不再局限于一个 . . . . . . .

内容来源: warpdotdev/warp