vs code 中输入时出现长条框是多光标编辑功能被触发:alt/option+点击添加光标,alt+shift+拖拽进入列选择;按esc退出,禁用editor.columnselection可防误触;若不消失需排查扩展或终端vi模式。

VS Code 里输入突然出现长条框,是启用了“多光标编辑”
那个长条框不是 bug,也不是插件冲突,而是 VS Code 的原生多光标功能被意外触发了——最常见的是按住 Alt(Windows/Linux)或 Option(macOS)再点击鼠标,就会在点击处插入一个新光标,显示为竖直长条。
它和普通光标行为完全不同:你打字时,所有长条光标位置会同步输入;删字符时也是一起删。很多人第一次见以为卡了或坏了,其实是“正在多点编辑”。
- 检查是否按住了
Alt/Option键没松开(尤其用触控板误触快捷键时) - 如果用鼠标右键拖选,也可能触发列选择模式(
Alt+Shift+鼠标拖拽),同样显示长条框 - 按
Esc键能立刻退出多光标状态,恢复单光标 - 想保留多光标但清空长条?按
Ctrl+U(Windows/Linux)或Cmd+U(macOS)可撤销上一步光标操作
怎么关掉自动触发的列选择(避免误开长条框)
VS Code 默认开启列选择快捷键,但你可以禁用它,或换更难误触的组合。关键不是关功能,而是断掉“随手一按就出长条”的路径。
- 打开设置(
Ctrl+,或Cmd+,),搜editor.columnSelection - 把它设为
false,这样Alt+鼠标拖拽就不再进入列选择 - 如果仍需列选择,改用显式命令:按
Ctrl+Shift+P输入Toggle Column Selection手动开关 - 注意:禁用后,
Alt+点击多光标仍有效,只是拖拽不会进列模式了
长条框不消失、按 Esc 也没反应?可能是扩展干扰
极少数情况下,比如装了 vim、cursorless 或某些键盘映射扩展,会劫持 Esc 或光标渲染逻辑,导致长条框“粘住”。这不是 VS Code 本身的问题,而是扩展层覆盖了默认行为。
- 先试一下禁用所有扩展:
Ctrl+Shift+P→ 输入Developer: Reload Window With Extensions Disabled - 如果长条框立刻消失,说明某个扩展在干预光标状态
- 逐个启用扩展排查,重点关注修改键盘绑定、编辑器渲染或光标行为的扩展(如
Vim、Auto Rename Tag的旧版本) - 部分扩展提供配置项,例如
vim.useCtrlKeys设为false可减少冲突
终端里也出现长条框?那是 shell 的行编辑模式
如果你在 VS Code 内置终端(Terminal)里输命令时看到长条光标,和编辑器无关,是 shell(比如 zsh 或 bash)启用了 vi 模式——它把光标样式换成竖线/长条来表示“命令行 vi 编辑模式”。
- 运行
set -o | grep vi,如果输出vi on,说明当前 shell 启用了 vi 行编辑 - 临时关闭:执行
set -o emacs(切换回 emacs 模式,光标变回方块) - 永久关闭:检查
~/.zshrc或~/.bashrc里是否有set -o vi,注释掉它 - 注意:这不会影响编辑器里的长条框,只是帮你区分问题来源
Esc 失效、光标不可控——这时候得一层层剥开看,是编辑器、扩展,还是终端环境在说话。










