Atom装atom-vim-mode-plus后,可用vim-mode-plus:select-occurrence(默认go)语义化选中当前标识符所有引用(跳过字符串/注释),配合ciw一键重命名;跨文件需先create-persistent-selection创建持久选区。

用 atom-vim-mode-plus 做多光标批量修改
Atom 本身不带原生多光标重构能力,但装上 atom-vim-mode-plus 后,就能靠命令触发精准多选——比鼠标拖选更可靠,也比全局替换更安全。
常见错误是直接用 Ctrl+Click 手动点选,结果漏掉某处、或误选注释/字符串里的同名变量。正确做法是用语义化选择命令:
-
vim-mode-plus:select-occurrence:光标停在变量名上,按快捷键(默认g o),自动选中当前文件所有该标识符的引用(不含字符串和注释) - 配合
ciw(change inside word)可一键重命名当前选区内的所有单词 - 若需跨文件操作,先用
vim-mode-plus:create-persistent-selection创建持久选区,再统一编辑
用 atom-double-tag 快速调整 HTML 结构
重构 HTML 时最耗时的不是逻辑改写,而是标签补全错位、嵌套混乱。比如把 <div class="card"> 改成 <article> 后,手动补全结束标签极易出错。
atom-double-tag 插件会在你输入 <article> 回车后,自动补全 </article> 并把光标定位在中间——这个动作本身不重构逻辑,但能防止因标签不匹配导致的后续调试失败。
- 它只对合法开始标签生效(如
<section>、<header>),不处理自闭合标签(<img>)或非法写法(<div/>) - 若重构中要删掉某层包裹,先用
vit(visual inside tag)选中整个标签块,再按d删除,比逐行删更稳
结合 ts-morph 做 TypeScript 安全重命名
单纯靠编辑器搜索替换 getUserInfo → fetchUserProfile 很危险:可能改掉注释里的旧名、字符串里的 API 路径、甚至其他模块里同名但无关的函数。
真正安全的方式是走 AST 层面——ts-morph 能识别符号定义与引用关系,只改类型系统认可的绑定:
- 安装后,在 Atom 的终端里跑脚本:
npx ts-morph rename --from getUserInfo --to fetchUserProfile - 它会跳过
"GET /api/user/info"这类字符串,也避开// legacy: getUserInfo()这种注释 - 注意:必须有有效的
tsconfig.json,否则无法解析类型上下文,会退化为纯文本替换
Zed 的 rename 功能不能直接在 Atom 里用
有人看到 Zed 编辑器的 F2 重命名很顺手,就想在 Atom 里找类似插件。现实是:Atom 没有集成语言服务器(LSP)级别的重命名支持,atom-ide-ui 项目已归档,目前没有活跃维护的替代方案。
硬要模拟 Zed 的体验,只能分两步走:
- 先用
atom-vim-mode-plus的select-occurrence做轻量级跨文件选中 - 再用
ts-morph或eslint --fix(配合@typescript-eslint/naming-convention规则)做最终校验 - 千万别依赖 Atom 自带的 “Project Find and Replace”,它不理解作用域,改完常要花半小时手动排查副作用
重构里最容易被忽略的,是函数签名变更后调用方是否同步更新——这一步没法靠编辑器自动完成,必须结合单元测试覆盖来兜底。

















