VSCode

——neovim 死里配,不如 vscode 同步一根毛

我是 vscode 的重度使用者,所有的编程行为 all in vscode。虽说是 electron 电子垃圾,但它确实是优化得很好的电子垃圾。

在 linux 我曾尝试转向 neovim,但是数日后即放弃。

不过 vscode 也绝非完美。前往 xxx 有多难用,看我狂喷 vscode。

使用

在 设置 页右上角可以 打开设置(json),我经常需要直接编辑配置文件。这里是我的全局配置文件。

关闭 copilot

微软的吃相实在是太难看了,之前也因为 copilot 闹出过不少丑闻 [1],还把好多人逼去了 zed(跳进了另一坨粪坑)。还好 copilot 的功能目前还是可以关闭的。

在使用 vscode 之前,请按下 Ctrl + ,,搜索 copilot,然后打开 Chat: Disable AI Features。

快捷键

这里是我比较常用的快捷键。

你可以在这里看到快捷键 cheetsheet。可以看出有很多从 vim 来的常见操作;并且在 vim 插件下这里的一些快捷键也会改变。

还有,许多编辑器用 Ctrl + d 克隆当前行,但是 vscode 默认不用这个键绑定。所以可以去设置里把这个动作改为 Ctrl + d。(ref)

插件

编程需要有好用的工具,编程语言的流行离不开好用的 linter, highlighter, formatter。

插件系统是 vscode 的精髓。正由于活跃的插件系统,vscode 才能如此强大。这里放出我使用的插件(可能有过时的选项):

避雷

我拉黑的插件。

插件管理

AI 代码补全

目前我正在使用 supermaven。免费、够用。

AI 相关信息推荐早就过时了,这里没啥看的价值

我最早使用的是 Tabnine,后面由于一些契机换了 Codeium;然而它在 RAMDisk 上工作得很差:由于其在 windows 上使用 %TEMP% 作为存储目录,每天首次打开 vscode 会加载失败,重新下载数据。于是 20230918 尝试换用 CodeGeeX。这个模型比较小,补全速度快;而且最主要是由于国内服务器,免去了科学上网带来的大量延迟。

用久了感觉 CodeGeeX 不够智能,又尝试其他插件。

非国产:

国产:

关于 API:

插件黑名单

我踩到的坑

feature

vscode 的特色:

工作区

这个功能正常来说用不到,但是只要上班了就知道有多好用。。

公司可能强制要求安装一些编辑器插件,用于提交签名等。但是我不希望这个插件在我的其他项目中激活,避免扫描到一些不好的东西,这时候就可以用 vscode 的工作区机制隔离工作环境,让该插件只能在工作环境使用。

左下角点击 设置 - 配置文件,按照提示操作即可。

主题

得益于 electron,vscode 可以很容易地更换主题。Ctrl + Shift + P 输入 theme 选择即可。

我个人喜欢用的是 Monokai Dimmed。我也曾试过一些其他主题,Nord 感觉对眼睛还是不够友好。

如果你喜欢花哨一些、对比度更低一些的,可以试试 catppuccin mocha:

json
{
  "workbench.colorTheme": "Catppuccin Mocha",
  "catppuccin.accentColor": "mauve",
  "editor.semanticHighlighting.enabled": true,
  "terminal.integrated.minimumContrastRatio": 1,
  "window.titleBarStyle": "custom",
  "workbench.iconTheme": "catppuccin-mocha"
}

正则匹配

vscode 的正则匹配使用两个不同的引擎,因此可能无法使用某些正则语法。

要匹配所有中文,请使用 [一-龥]。(ref)

协同编辑

有时候需要帮别人处理代码时,协同编辑是一个非常不错的选择。

  1. 安装 Live Share
  2. 发送链接给对方
  3. 同意连接请求
  4. 给对方权限,例如读写,或终端执行代码

Git

我的一些设置,可能过时。

json
{
  "git-graph.date.type": "Commit Date",
  "git.addAICoAuthor": "off",
  "git.autofetch": true,
  "git.blame.editorDecoration.enabled": true,
  "git.confirmSync": false,
  "git.enableSmartCommit": true,
  "git.openRepositoryInParentFolders": "never"
}

官方的 Git 和 gitlens 都不好用(gitlens 一堆功能加上狗屎 AI 营销我根本不知道怎么用);我比较喜欢轻量的 Git Graph,看起来也很直观。点击查看该提交的变更;选中一个 commit,然后按住 ctrl 单击另一个 commit,即可查看两个 commit 之间的 diff。

但是 Git Graph 在复杂项目、review 代码的时候也有缺陷:(1)没法快速定位到 HEAD commit,如果 commit tree 复杂经常要找很久(2)对比两个 commit 必须首先找到这两个 commit,没法一键定位 merge-base(3)搜索功能不好用,因为默认有分页,初始展示 300 条、load more 一次展示 100 条,如果要找一个久远的 commit 简直是地狱。

小技巧

编写插件

我写过两个 formatter,anyformatter 和 rime formatter,有些照猫画虎的心得。

上传

编写完插件以后需要发布到 market。

我不爱用那些令牌啥的,因此我选择直接 https://marketplace.visualstudio.com/manage,然后把打出来的 .vsix 文件拖到这里即可。

关于 cursor

感觉 cursor 已经死了,直接烧纸,下面内容不需要再看了

Cursor 是 AI 时代下的,基于 VSCode 的 IDE,其将 AI 深度集成到了编辑器内。Cursor 全兼容 VSCode,所以可以快速抢占市场。

我曾今在早期用过一次 Cursor,用的提问 API 是 Gemini,补全 API 是 deepseek,感觉不太行。这也是因为模型本身不够聪明。第二次入坑是新号注册,这一段时间内 cursor 也把用户体验补起来了一点,并且我也免费(试)用 claude-3.5-sonnet,这下就感觉舒服多了。直接写了一个 Telegram-RSS-Bot-on-Cloudflare-Workers。虽然细微部分还是手改,但是确实好用很多,tab 补全也很智能。

入坑 cursor 前,最好先去 b 站找个视频快速过一遍,自己摸索很容易丧失耐心。

cursor 难用的地方,我写在这里。

设置

cursor 基于 vscode,但是有些地方还是做了些修改,非常卡手。建议 vsc 人入坑 cursor 的时候进行这些设置:

  1. 恢复左侧纵向图标栏:"workbench.activityBar.orientation": "vertical" (src)
  2. 终端允许 Ctrl + V 粘贴:"terminal.integrated.sendKeybindingsToShell": false (vscode 默认允许终端粘贴)
  3. 打开右侧 minimap:"editor.minimap.enabled": true
  4. 由于 cursor update 问题很多,需要设置 "update.enableWindowsBackgroundUpdates": false 关闭后台自动更新。
    • 即使设置了此项,cursor 还是可能无视此设置仍然自动更新(骂人)。此时需要:清空文件夹 C:\Users\<username>\AppData\Local\cursor-updater 并将其权限修改为全部 deny。(ref)
  5. 从 vscode 继承过去的中文插件可能失效,需要重新手动装一下。

无限续

Cursor 无限续主要是靠无限流邮箱注册 + id 清除器。有一些需要注意的点:

  1. 2025.02 之后,cursor 无法再通过清除 machine id 的方式无限续,猜测它用了一些其他方法进行追踪。因此需要下载历史版本:https://downloader.cursor.sh/builds/250103fqxdt5u9z/windows/installer/x64,并关闭自动更新。
  2. cursor 清除 ID 的脚本,网上有很多(讽刺的是基本都是 Cursor 写的)。
  3. 邮箱无限续可以用 2925 无限邮。
    • 2025.03 之后,2925 无限邮和一些滥用邮箱被彻底禁用,爆 User is unauthorized。这里建议买一个域名托管到 Cloudflare,然后用这个域名开一堆子域的邮箱。

遇到的问题

code cli command 执行失败

我运行 code --list-extensions 的时候不会列出所有插件,而是会打开一个新的 vscode 窗口。

这是因为 code 指向了 C:\xxx\Microsoft VS Code\Code.exe。将 code 当成 cli 执行,必须执行 C:\xxx\Microsoft VS Code\bin\code.cmd,因此需要修改环境变量,把 Microsoft VS Code 改掉。

参考 https://github.com/microsoft/vscode/issues/227186。

external

  1. AI 编程助手测评:GitHub Copilot vs 豆包 MarsCode

  1. 你的提交会被自动加上 co-author-by,即使你根本没有用 vscode 的 copilot。最荒谬的是这个 PR 还被 merged 了(虽然之后 set default value to off 了)。 ↩︎