Sublime如何快速将选中文本反转顺序?(文本处理脚本)

1次阅读

sublime text可通过python插件实现选中文本字符反转:继承sublime_plugin.textcommand,遍历逆序排序的选区,用[::-1]反转并replace写回;需存为reverse_selection.py至packages/user/,绑定快捷键时注意命令名小写蛇形及平台键位差异。

Sublime如何快速将选中文本反转顺序?(文本处理脚本)

用 Python 脚本实现选中文本行内字符反转

sublime text 本身不提供“反转选中字符串”的原生命令,但可以通过插件调用 Python 脚本完成。核心是拿到 view.substr(selection),用切片 [::-1] 反转,再用 view.replace() 写回去。

  • 脚本必须继承 sublime_plugin.TextCommand,否则无法绑定到快捷键
  • 要遍历所有选区(view.sel()),否则多光标/多选时只处理第一个
  • 替换前需按选区逆序排序(从后往前替换),否则前面的替换会偏移后面选区的坐标
import sublime import sublime_plugin <p>class ReverseSelectionCommand(sublime_plugin.TextCommand): def run(self, edit): regions = list(self.view.sel()) regions.sort(reverse=True)  # 关键:从后往前处理 for region in regions: if not region.empty(): text = self.view.substr(region) self.view.replace(edit, region, text[::-1])

如何安装并绑定到快捷键

脚本保存为 reverse_selection.py,放入 Sublime 的 Packages/User/ 目录即可生效。不需要重启,但首次运行前得手动触发一次“重载插件”(Ctrl+Shift+P → 输入 Reload Plugin)。

  • 快捷键绑定写在 Preferences → Key Bindings 的用户文件里,例如:{"keys": ["ctrl+alt+r"], "command": "reverse_selection"}
  • 命令名是类名转小写蛇形(ReverseSelectionCommandreverse_selection),拼错就无效
  • Mac 用户注意:ctrl 在绑定里实际对应 cmd 键,别直接抄 windows 键位

反转的是字符顺序,不是行顺序

这个脚本默认对每个选区做 str[::-1],即逐字符翻转。如果你选中了多行文本(含换行符),换行符也会被当作字符参与反转,结果可能不符合直觉。

  • 比如选中两行 "abcndef",反转后变成 "fedncba",不是把行上下颠倒
  • 若想反转行序(即 swap lines),得用 text.splitlines() + reversed() + n.join()
  • 混合需求(如每行内字符反转 + 行序也反转)需额外判断是否含 n,不能无脑套用同一逻辑

Windows 中文路径下插件可能加载失败

如果 Sublime 启动时没报错但命令始终不出现,检查 Packages/User/ 路径是否含中文或空格——部分旧版 Sublime(尤其是 Portable 版)对非 ASCII 路径解析不稳定。

  • 临时验证方法:把脚本移到英文路径(如 C:/sublime-plugins/),再用 symlinkPackage Control: Install Local Package 加载
  • 错误日志藏在 consoleCtrl+`),加载失败通常提示 ImportErrorSyntaxError,但不会弹窗
  • Python 3.8+ 的 Sublime(v4)已改善路径兼容性,但老项目仍可能卡在这一步

真正麻烦的不是写脚本,而是选区坐标管理和路径编码这两个点——前者容易漏掉逆序排序,后者在协作环境里常被忽略。其他都算常规操作。

text=ZqhQzanResources