尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

VSCodeVim:在 VS Code 里用 Vim 编辑

VSCodeVim:在 VS Code 里用 Vim 编辑
📅 发布时间:2026/6/25 20:04:42

文章目录

  • VSCodeVim:在 VS Code 里用 Vim 编辑

VSCodeVim:在 VS Code 里用 Vim 编辑

VSCodeVim 是一个 VS Code 扩展,把 Vim 的编辑方式带进了 VS Code。项目在 GitHub 上拿到了 15,000+ 的 Star。

很多人习惯 Vim 的操作方式,hjkl 移动光标、dd 删除行、yy 复制行,这些快捷键用久了就变成了肌肉记忆。但写代码又离不开 VS Code 的插件生态和调试功能。VSCodeVim 解决的就是这个问题:在 VS Code 里还原 Vim 的编辑体验。

支持的模式

VSCodeVim 支持 Vim 的主要编辑模式:

  • Normal 模式:浏览和操作文本
  • Insert 模式:输入文字
  • Visual / VisualLine / VisualBlock 模式:选择文本
  • Replace 模式:替换字符
  • OperatorPending 模式:等待操作符的第二个按键
  • EasyMotion 模式:快速跳转

切换方式和 Vim 一致,Insert 模式按 Esc 回到 Normal,Normal 模式按 i 进入 Insert。

按键重映射

VSCodeVim 允许自定义按键绑定。可以在 VS Code 的 settings.json 里配置,支持四种模式的绑定:

vim.insertModeKeyBindings 用于 Insert 模式,vim.normalModeKeyBindings 用于 Normal 模式,vim.visualModeKeyBindings 用于 Visual 模式,vim.operatorPendingModeKeyBindings 用于 OperatorPending 模式。

比如把 jj 映射为 Esc:

"vim.insertModeKeyBindings": [ { "before": ["j", "j"], "after": ["<Esc>"] } ]

每个绑定可以设置 before(按键序列)、after(映射目标)、commands(执行的 VS Code 命令)、silent(是否静默)。

还有 NonRecursive 版本的绑定,避免递归映射导致死循环。比如交换 j 和 k 的方向:

"vim.normalModeKeyBindingsNonRecursive": [ { "before": ["j"], "after": ["k"] }, { "before": ["k"], "after": ["j"] } ]

对于 Alt+key 或 Ctrl+Shift+key 这类组合键,需要在 VS Code 的 keybindings.json 里配置。

Neovim 集成

VSCodeVim 可以接入 Neovim,使用 Neovim 的 Ex 命令。需要先安装 Neovim,然后在设置里开启 vim.enableNeovim,并指定 Neovim 的路径。开启后可以用 Neovim 的 :normal 命令、g 命令,以及更快的搜索替换。

模拟插件

VSCodeVim 内置了多个常用 Vim 插件的模拟实现:

vim-surround:处理包围字符,比如引号、括号、XML 标签。cs"’ 把双引号换成单引号,ds" 删除引号,ysiw) 给当前单词加括号。

vim-commentary:注释切换。gc 切换行注释,gC 切换块注释。gcc 注释当前行,gc2j 注释当前行和下面两行。

vim-easymotion:快速跳转。开启后,按 leader leader w 会在所有单词起始位置显示标记,按对应字母跳转过去。leader leader f 加字符可以向前查找字符并跳转。

vim-sneak:双字符跳转。s 加两个字符向前跳到第一个匹配位置,S 向后跳。

vim-indent-object:把相同缩进层级的代码块作为文本对象。在 Python 这类不用大括号的语言里比较实用,ai 选中当前缩进块加上面一行,ii 选中当前缩进块。

CamelCaseMotion:按驼峰命名和下划线分隔的单词移动。

vim-airline:根据当前模式改变状态栏颜色。Normal 模式一种颜色,Insert 模式另一种,方便区分。

ReplaceWithRegister:用寄存器内容替换文本,不改变寄存器。

vim-textobj-entire:把整个文档作为文本对象,dae 删除整个文档内容。

vim-textobj-arguments:把函数参数作为文本对象,cia 修改当前参数,daa 删除当前参数包括逗号。

多光标

VSCodeVim 支持多光标编辑。在 Windows 上按 Ctrl+D 添加下一个匹配项的光标,或者用 gb 快捷键。每个光标有独立的剪贴板。在多光标 Visual 模式按 Esc 回到多光标 Normal 模式,再按一次回到普通 Normal 模式。

Vimrc 支持

可以加载 .vimrc 配置文件。设置 vim.vimrc.enable 为 true,配置 vim.vimrc.path 指向 .vimrc 文件路径。目前只支持 remap,还在实验阶段。

一些设置

vim.useSystemClipboard:设为 true 时,Vim 的默认寄存器使用系统剪贴板,复制的内容可以直接粘贴到其他应用。

vim.handleKeys:可以把某些按键交回 VS Code 处理。比如不想让 Ctrl+F 被 Vim 接管,设为 { “”: false }。

vim.leader:定义 leader 键,默认是反斜杠,可以改成空格或其他键。

vim.hlsearch:设为 true 时高亮所有搜索匹配项。

vim.incsearch:输入搜索模式时实时显示下一个匹配。

vim.inccommand:输入替换命令时实时预览替换效果。

性能优化

可以在 settings.json 里添加:

"extensions.experimental.affinity": { "vscodevim.vim": 1 }

这会提升 VSCodeVim 的运行性能。

Mac 用户注意

Mac 上需要在终端执行一条命令启用按键重复,否则某些 Vim 操作会不正常:

defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false

执行后注销重新登录,再重启 VS Code。同时建议在系统设置里调高键盘的按键重复速度和延迟时间。

调试按键映射

如果自定义的按键映射不生效,可以把扩展的日志级别调到 Debug,查看 Output 面板里 Vim 的输出。日志会显示每个按键的处理过程,配置错误的映射会被忽略并记录。

ode。同时建议在系统设置里调高键盘的按键重复速度和延迟时间。

调试按键映射

如果自定义的按键映射不生效,可以把扩展的日志级别调到 Debug,查看 Output 面板里 Vim 的输出。日志会显示每个按键的处理过程,配置错误的映射会被忽略并记录。

相关新闻

  • 蜂引擎实战分享:从选型到落地,如何找到资质齐全、售后无忧的AI员工服务商?
  • 三层模板驱动的文档自动化:结构、样式、数据解耦实践
  • 外发图纸怕泄密?看3D一览通如何实现“只读+批注”安全协作

最新新闻

  • AI 写小说长篇记忆技术深度研究报告
  • UI Recorder架构解析:Chrome扩展与Node.js如何协同实现自动化测试
  • C语言:模块化开发与Makefile精讲
  • 乐玻玻璃:如何选择靠谱的玻璃品牌?实力、产品与服务全解析
  • Joomla SQL注入漏洞CVE-2017-8917:从原理到实战的靶场复现指南
  • Windows 7 SP2:让经典操作系统在现代硬件上焕发新生的完整指南

日新闻

  • 利用微PE工具箱进行系统安装教程
  • 渗透测试十大核心工具实战指南:从信息搜集到报告生成全流程解析
  • 暗黑破坏神2存档编辑器:网页版角色修改工具完全指南

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号