Sublime Text 中按 F6(Windows/Linux)或 Ctrl+T(macOS)可原生交换光标左右相邻字符,要求光标位于两字符之间且两侧均为可见可打印字符,不依赖选区、不改变编码与格式,是毫秒级原子操作。

怎么用快捷键交换两个相邻字符?
Sublime Text 原生支持字符级转置,不是靠剪切粘贴模拟,而是直接调用 transpose 命令——按 F6(Windows/Linux)或 Ctrl+T(macOS)即可把光标左侧和右侧的两个字符互换位置。
- 光标必须卡在两个字符之间(比如写
functino时把光标放在t和i中间),按一次F6就变成function - 如果光标在行首或行尾,
F6会静默失败,不报错也不提示——这是正常行为,不是快捷键失效 - 注意:macOS 上默认是
Ctrl+T,不是Cmd+T(后者是新建标签页),别和系统快捷键混淆 - 该操作不依赖选区:哪怕你选中了一整段文字,
F6也只处理光标左右两个字符,不会对选中内容做任何事
为什么不用复制粘贴来“手动转置”?
手动剪切再粘贴看似可控,实际极易引入缩进错乱、空格丢失、换行符污染等问题。而 transpose 是原子操作,底层由 C++ 实现,只动两个字符,其余一切保持原样。
- 常见错误现象:有人把光标移到
a|b的|处,按Ctrl+X剪切b,再按←回退,再Ctrl+V粘贴——结果可能多出空格、破坏字符串引号配对,甚至让 JSON 或 JSX 直接变红 -
transpose不改变光标位置逻辑:交换后光标自动落在新生成的字符右侧,符合直觉;手动操作后光标常停在奇怪位置,需要额外调整 - 性能无感知差异:从 Sublime Text 2 到 4,
transpose命令响应始终是毫秒级,无需担心卡顿
什么情况下 F6 不起作用?
不是快捷键坏了,而是触发条件没满足。Sublime 对“可转置”的字符有明确限制,且受输入法与编辑模式影响。
- 光标左侧或右侧是换行符、制表符、BOM 或不可见控制字符(如
\u200b)时,F6无效 - 启用 Vintage 模式(vi 键绑定)后,
F6被禁用,此时需先退出命令模式(按Esc),或改用命令面板执行:view.run_command("transpose") - 输入法处于中文/日文等非英文状态时,某些 IME 会劫持
F6,临时切换到英文输入法再试 - 文件编码为 UTF-16 或含混合换行符(
\r\n和\n并存)时,Sublime 可能无法正确定位“相邻字符”,建议统一为 UTF-8 +\n
能批量转置吗?或者和其他操作组合?
不能批量——transpose 天然只作用于单个光标位置。但你可以用多光标配合它,在多个地方同步执行。
- 例如修复多个拼写错误:先用
Ctrl+D逐个选中所有recieve中的ie位置,确保每个光标都卡在i和e之间,再一起按F6 - 别和
swap_line混用:Ctrl+Shift+↑是行级交换,F6是字符级转置,两者命令不同、用途不同、快捷键冲突概率低,但误按会做完全不同的事 - 没有方向参数:不像
swap_line支持{"direction": "down"},transpose就是固定交换左右,不需要也不存在“向上转置”这种概念
const a = 123; 中把光标放在 1 和 2 之间按 F6,得到 132 ——数字顺序变了,但 Sublime 不管它是不是字面量,它只忠实地交换那两个字符。

















