敲过那种一长串的 Docker 命令吗?比如:
docker run --name myapp --port 8080 --env DEBUG=true
敲完之后发现 --port 后面的数字写错了,想改。这时候你能做的,只有按左方向键,一下、一下、一下地往回挪,直到光标停在那两个数字中间。手都按酸了。
你心里想的是:我鼠标点一下不就完了吗?
在代码编辑器里,这是天经地义的事。在终端里,它却成了一个讨论了多年、至今没有完美答案的老问题。
于是很多人向jetbrains诉苦:让我用鼠标点击终端里的文字,光标跳过去。
听起来简单,做起来难。因为传统终端是字符流模型,它压根不是给你“编辑文本”用的。你看到的每一行,是 shell 吐出来的字符序列,中间还夹着一堆 ANSI 转义码。你屏幕上那个光标,也不完全归你控制——它可能正被 Vim、nano、或者某个交互式程序“接管”着。
如果粗暴地把左键单击改成“移动光标”,后果可能是:脚本行为错乱、Vim 里按键失灵、转义序列被当成普通字符处理。为了一个爽感,把整个终端生态搞崩,这笔账不划算。
IDEA 的方案:走标准路线,用 Alt 隔离新行为
所以 JetBrains 没敢直接上“裸左键”。它选择的是:Alt + 鼠标操作。
按住 Alt 拖拽,选文本;按住 Alt 单击,光标跳到你点的地方。而普通的左键单击,行为保持不变。
这个设计的逻辑很清楚:把新能力放进一个“修饰键缓冲区”里。 你想用新功能,就按住 Alt;你不需要它,或者你在跑一个依赖原生鼠标行为的程序,那就不按。两种模式互不打扰。
代价是,你得记住这个修饰键。不少开发者吐槽:在命令行里点击文字,本意就只有移动光标,为什么还要多按一个键?这个心智负担,是兼容性换来的。
VS Code 早在 2018 年的 就 支持了 terminal.integrated.altClickMovesCursor。同样是 Alt + 左键点击移动光标,默认开启,底层靠模拟方向键实现。哪怕你在 Vim 或 nano 里,它也能生效。

也就是说,VS Code 和 IDEA 在这件事上走到了同一个路口:都选了 Alt,都没放开裸左键。
Warp 选了另一条路
Warp 这种现代终端,敢直接实现“左键单击跳光标”。它优先的是用户体验,愿意打破旧规范,用非标准扩展换顺滑的交互。

代价是什么?牺牲一部分传统兼容性。在绝大多数日常场景里,它没问题;但遇到那些依赖标准终端行为的程序,它可能就露馅了。
对天天写命令的人来说,这个功能的提升是真实的。改一段长 curl 脚本,鼠标点一下就能定位,不用再敲二十下方向键。但那个 Alt,就像一个提醒:你现在享受的便利,是踩在兼容性这条底线之上的。
终端和编辑器之间的体验鸿沟,正在被一点点填平。但想让它像普通文本框一样随心所欲点击,同时又不跟几十年的终端标准打架,这件事,确实没那么简单。