这是一篇关于从 Neovim 切换到 Visual Studio Code(VS Code)的指南,主要面向前端开发者。
动机:
- Vim 插件与支持:前端插件在 Vim 生态系统中往往不存在,或需要特定设置,且插件文档分散,调试和使用 vimscript 困难,而 VS Code 社区支持丰富,阅读 JavaScript 更易。
- Vim 与语言服务器:依赖语言服务器的功能(如 linting、格式化和
tags
)在 Vim 中操作繁琐,Coc 曾是主要选项但难以驾驭,现在有更好的选择。后端同事使用 Vim 在 VS Code 公司中未遇太多问题,推测 TypeScript 是重要因素。 - 扩展:VS Code 有标准化且可搜索的扩展生态系统,用户众多,贡献大,而使用 Neovim 是小众选择,同事分享的一些扩展自己无法使用。
- 作为 Vim 用户切换项目和技术栈:在 Vim 中处理各种前端框架和工具(如 styled-components、Emotion、Tailwind 等)需要手动配置,而同事在 VS Code 中则更便捷,且 repos 和 onboarding docs 中的
.vscode
文件夹设置也会增加设置时间。
切换编辑器:
- 切换成本:作为高效的 Vim 强力用户,使用 VS Code 感觉操作繁琐,需要经过多个步骤才能完成以前用手就能完成的操作,如猜测操作名称、查找 VS Code 工具、设置等。
- 最终切换原因:新工作场所使用 VS Code 的 devcontainers,不想浪费时间在 Vim 设置上。
开始使用:
- VSCode Neovim 扩展:设置该扩展,使用“完全嵌入的 Neovim 实例”,创建单独的 Neovim init 文件
vscode.vim
,很多 vim 行为可直接使用,文档也会说明不支持的部分和差异。 - VS Code 中的 Vim 插件:在
vscode.vim
中禁用大多数常用 vim 插件,保留部分重要插件,按需开启。 - 在 vim 代码中使用 VS Code 行为:在
vscode.vim
中定义一些 vim 映射,如用VSCodeCall()
调用 VS Code 命令,通过搜索 VS Code 命令面板和快捷键来确定要放入的内容。 - 将简单快捷方式迁移到 VS Code:可以直接在 VS Code 中添加快捷方式,或编辑
keybindings.json
文件,也可以为单个命令添加多个快捷方式。 - 减少 UI 杂乱:关闭活动栏,学习侧边栏内各部分的快捷方式,按需显示;关闭“sticky scroll”,使用自定义快捷方式开启。
- VSCode Neovim 扩展:设置该扩展,使用“完全嵌入的 Neovim 实例”,创建单独的 Neovim init 文件
享受 VS Code 功能:
- 重构和自动导入:重构快捷键大多可用,包括 TypeScript 重构,符号重命名跨文件,提取函数方便,自动导入和组织导入功能便捷。
- 模态编辑和 Copilot:GitHub Copilot 扩展可预测文本,使用时可通过按 escape 离开插入模式,需要时再返回;也可将 Copilot 弹出到新标签页。
- VS Code 重新加载窗口:如果 VSCode Neovim 扩展出错导致 vim 行为不同步,不要按 vim 撤销快捷键,而是调用 VS Code 的重新加载窗口命令或从命令面板重启扩展,此命令不影响终端进程。
- 强力用户:Neovim 吸引更多键盘导向的强力用户,学习曲线较陡,而 VS Code 用户对其功能探索较浅,这导致切换成本高。
- 同时使用两者:在 Neovim 中处理某些操作更方便,如替换或复杂宏,也继续用 Neovim 编辑个人笔记文件。
- VS Code 未使用的功能:仍在 iTerm 中使用
git
/tig
进行git
操作,未发现使用 VS Code git 功能的 compelling 理由;最近几个月未处理合并冲突,不确定下次如何处理。 - 设置:在 VS Code 中更改一些设置,如将
Editor: Line Numbers
设置为“relative”以方便 vim 行导航,设置Terminal › Integrated: Confirm On Exit
控制终端窗口关闭时的确认。 - 扩展:一些有用的扩展,如 VSCode Neovim 扩展、Code Spell Checker、Git Lens、Import Cost、Rainbow CSV 等。
- 随机提示:一些常用的快捷方式,如⌘K ⌘S 打开键盘快捷键、⌘. 调出快速修复建议、K 显示悬停窗口等;可以使用
space 1
等跳转到特定编辑器标签;可全局忽略.vscode/settings.json
文件。 - 未解决的问题:在 VS Code 中运行替换命令后无法通过按 up 键查看和修改之前的替换;未找到快速切换相对行号的键绑定;
cit
在 HTML 标签中有时会选择超出当前标签的范围;希望有不 clutter 到settings.json
文件的 cspell 用户字典;MDX 文件中有时会出现未保存的文件副本等。
总的来说,从 Neovim 切换到 VS Code 需要一定时间适应和调整,但 VS Code 有很多便捷的功能和扩展,可根据个人需求和习惯进行配置和使用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。