Skip to content

界面与底层的优化项盘点:对照 IDEA / VS Code(2026-09-14) #33

Description

@Spc-jgs

#9 拆完之后做的一次盘点。每条写清现在是什么、IDEA / VS Code 是什么、建议、估摸的代价
判据只有一条:用户说过「要像 IDEA 一样」。挑的时候按「天天碰到的先做」。
(先盘点不动手,挑好了再一条条来。)

一、状态栏 / 编辑器 —— 天天碰到的缺口

# 现在 IDEA / VS Code 建议 代价
1 状态栏右边没有行:列 IDEA 12:34,VS Code Ln 12, Col 34,两家都有,点了能跳行 加一格,点了弹「跳到行」输入 —— 编辑器已经往上报光标行了(onCursor),只差列
2 没有跳到行(⌘L) IDEA ⌘L,VS Code ⌃G nav.goto 已经在了,只差一个输入浮层和键位
3 状态栏没有缩进 / 换行符4 spaces / LF 两家都有,点了能改 显示先做(Rust 侧 read_text 探一次就有),改留后面
4 编辑器改动标记(缩略图 / gutter)反映的是磁盘那份,打字不动 两家都是实时的(拿 HEAD 版本在前端 diff) git show HEAD:path 一次,前端 changedLines(live, head)git/diff.ts 已经有算法

二、文件树

# 现在 IDEA / VS Code 建议 代价
5 切标签时文件树不跟着定位,只有面包屑 / 标签右键「在文件树中显示」 IDEA「Always Select Opened File」(默认关)、VS Code autoReveal(默认开) 树头加一个「跟随」开关,默认开;revealPath 那条路已经在了
6 树头只有一个 PROJ IDEA:定位 / 折叠全部 / 设置;VS Code hover 出:新建文件 / 新建文件夹 / 刷新 / 折叠全部 加「折叠全部」和「定位」两个(hover 才显,ui.md 第三条)
7 树里不能多选 两家都能 ⇧ / ⌘ 多选,一次删一批 多选 + 批量废纸篓;closeTabsUnder 已经按路径批处理了
8 没有打字定位(speed search) IDEA 在树上直接打字就跳;VS Code 打字出过滤框 照 IDEA:焦点在树上打字 → 高亮 + 跳到第一个匹配,Esc 清
9 不能拖拽移动文件 两家都能 后面再说,误操作代价高(要确认条)

三、Git 展示

# 现在 IDEA / VS Code 建议 代价
10 提交只有「提交」 IDEA「Commit and Push…」;VS Code 提交按钮旁的 ▾ 里有 「提交」右边加 ▾:提交并推送。git.commit + remote.askPush 串起来
11 没有 stash IDEA Shelve / Stash,VS Code Stash 分支浮层被本地改动挡住时多一条出路「暂存到 stash 再切」;改动列表 ⋯ 里加 stash / pop
12 差异视图不能按块暂存 两家都能按 hunk 甚至按行暂存 / 撤销 git apply --cached 一段 patch;DiffView 已经按 hunk 分了 中偏大
13 提交历史右侧详情只列文件 IDEA:点文件看那次提交的差异(有了);右键:cherry-pick / 检出到这个提交 / 复制哈希 / 和本地比较 先加「复制哈希」「复制提交信息」「检出到此提交(游离)」三条
14 没有 blame / annotate 两家都有(gutter 里显示作者 + 时间) git blame --porcelain 一次,gutter 加一列,⌘Click 跳到那次提交
15 改动列表是平的(按目录名一段) IDEA 可切树形 / 平铺;VS Code 默认平铺可切树 文件超过 ~20 个时平铺看不过来;加一个树形 / 平铺开关

四、标签栏 / 面板

# 现在 IDEA / VS Code 建议 代价
16 没有预览标签(单击打开的标签永久占位) VS Code 单击 = 预览(斜体,下一次单击顶掉),双击 / 编辑才固定;IDEA 有「Open in Preview Tab」 照 VS Code;tabs store 加一个 preview 标记
17 标签不能钉、不能拖拽排序 两家都能 钉小、拖拽中;钉先做 小 / 中
18 终端没有搜索、不能分栏 IDEA 终端 ⌘F,VS Code 终端搜索 + 分栏 xterm 的 search addon 现成;分栏后面 小 / 中
19 没有分屏编辑器 两家都有 大,{#key active.id} 那套要改成多编辑器实例;先不做

五、底层

# 现在 IDEA / VS Code 建议 代价
20 没有文件系统监听:外部改动靠「切回窗口」+ 10 秒轮询已打开文件;文件树、git 状态在窗口不失焦时不更新(终端里 git checkout 完要切出去再切回来才刷) 两家都用 FSEvents / inotify,改了当场就变 Rust 侧 notify crate(FSEvents),防抖 200ms 发一个 fs-changed 事件,前端调 worktree.changed() + git.refresh()这是底层里最值的一条:终端就在应用里,「在终端里 git 一下再回到文件树」是每天的动作
21 本地 git 查询在主线程(#12 已有 issue,量完再动
22 git 信任模型逐项堵(#24 已有 issue
23 会话快照只有一份,切项目就覆盖 IDEA 每个项目一份 .idea/workspace.xml;VS Code 每个 workspace 一份 按 root 分 key 存(lite-ide.session:<root>),最近列表里的每个项目回来时各有各的标签

建议的先后

天天碰到、代价小的先做:#1 行列 → #2 跳到行 → #20 文件监听 → #5 树跟随 → #10 提交并推送 → #6 树头按钮 → #23 按项目存快照
然后是中等的:#16 预览标签、#4 实时改动标记、#11 stash、#8 打字定位。
大的(#12 按块暂存、#19 分屏)等前面做完再评估。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions