ctrl+a(windows/linux)或cmd+a(macos)是sublime text硬编码的原生命令,无法通过user.sublime-keymap修改,始终选中全文(不含末尾换行符);其行为受文件编码、换行符、语法识别和折叠状态影响,但本质不可配置。

全选快捷键根本不能设置
Sublime Text 的 Ctrl+A(Windows/Linux)或 Cmd+A(macOS)是硬编码进核心的原生命令,不是插件功能,也不走用户键绑定系统。你改不了它,也无需配置——它永远存在、永远生效、永远选中全文(不含末尾换行符)。
- 试图在
User.sublime-keymap里覆盖Ctrl+A会失败:Sublime 直接忽略该条目,不报错但也不起作用 - 命令面板里搜不到“select_all”对应命令,因为这压根不是普通 command,而是编辑器底层行为
- 哪怕你卸载所有插件、重置所有设置,
Ctrl+A依然如初——它和文件打开、保存一样基础
为什么有时 Ctrl+A 像没反应?
这不是快捷键坏了,而是 Sublime 对“全文”的定义比你想象的更严格。它只认真实换行符(\n 或 \r\n),不看视觉折行、不看折叠状态、不看语法高亮边界。
- 当前文件被错误识别为
Plain Text(右下角显示 Plain Text 而非 Python/JS 等):Ctrl+A 可能停在第一个硬换行前,尤其当文件开头有 BOM 或混合换行符时 - 文件用了
\r\n和\n混合换行:Sublime 会把某些“物理上连续”的内容切分成多个逻辑段,Ctrl+A 只选第一个段 - 光标落在折叠区域(比如函数体被
Ctrl+Shift+[折叠了):Ctrl+A 仍选全文,但你只看到折叠提示行——展开后才能确认是否真全选了 - 解决方法统一:按
Ctrl+Shift+P→ 输入Convert Line Endings: Unix统一换行符;再点右下角语言名,选对语法(如JavaScript)
想选“当前行”别用 Ctrl+A,用 Ctrl+L
Ctrl+A 是全选,Ctrl+L 才是真正用来选“当前行”的原生快捷键。它和全选完全无关,但常被误当作“全选的替代方案”。
-
Ctrl+L选中光标所在整行(不含换行符),连按可逐行向下扩展选区 - 如果已选中部分文字,
Ctrl+L会先清空原选区,再选当前行——这不是失效,是设计如此 - 在 Vintage 模式(vi 键绑定)下,
Ctrl+L被占用了,得用Shift+V进入行选择模式 - 需要复制当前行?标准流程是:
Ctrl+L→Ctrl+C,而不是指望Ctrl+A偶然凑巧选对了
自定义快捷键只管“能改的”,别碰全选
所有你能改的快捷键,都必须通过 Preferences → Key Bindings 打开右侧 User.sublime-keymap 文件添加 JSON 规则。但这条规则对 Ctrl+A 完全无效。
- 正确做法:只绑定那些有明确
command名的命令,比如duplicate_line、toggle_comment - 查命令名最稳方式:打开控制台
Ctrl+`,输sublime.log_commands(True),再手动点菜单操作(如 Edit → Line → Delete Line),控制台会直接打出command: run_macro_file - JSON 格式错一个逗号、引号不闭合,整个用户快捷键文件就失效,右下角弹红条——这是最常见的“改了没反应”原因
User.sublime-keymap 里认真写。











