当前位置: 首页 > news >正文

VSCodeVim:在 VS Code 里用 Vim 编辑

文章目录

  • 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 的输出。日志会显示每个按键的处理过程,配置错误的映射会被忽略并记录。

http://www.jsqmd.com/news/1076861/

相关文章:

  • 蜂引擎实战分享:从选型到落地,如何找到资质齐全、售后无忧的AI员工服务商?
  • Unreal Engine 5.8 全部新增功能总结
  • 三层模板驱动的文档自动化:结构、样式、数据解耦实践
  • 2026年跨境电商商城系统推荐:全链路解决方案助力企业全球化布局
  • AI文字辅助与生成的边界:守护人类创意主权
  • 从入门到精通:ImHex快捷键完全指南,二进制分析效率提升300%
  • Splash:带 HTTP API 的轻量级浏览器渲染服务
  • 热门的自媒体创作智能体企业哪个好
  • 终极指南:如何用缠论插件5分钟完成专业级技术分析
  • 都在说学AI,那线上学还是线下学?
  • LS1046ARDB开发板启动与系统部署:从flex-installer自动化到U-Boot手动烧录
  • NXP RW61x Wi-Fi与蓝牙开发实战:从SDK演示到物联网产品化
  • 6种落地级大模型推理优化方案:降本增效实战指南
  • sklearn LinearRegression实战:从销量预测到工业监控的12个关键细节
  • 专注实操落地的短视频获客培训机构,教你高效引流拓客技巧
  • 正规的地牛神奇垫供应商哪家强
  • 告别蜗牛下载:开源网盘助手让你重获极速下载体验
  • Sunshine游戏串流服务器:如何将旧PC变身高性能游戏云端
  • 迭代函数系统平稳测度的可微性与矩条件分析
  • 阴阳师自动化脚本终极指南:如何彻底解放双手,实现游戏时间自由
  • 电子小白:光耦到底是什么?
  • 基于森林与质心分解的图稀疏性判定算法详解
  • 3步掌握窗口自由:从新手到专家的WindowResizer完整指南
  • 【毕业设计】基于 Django+Vue 的情绪健康互助交流管理系统设计与实现 基于 Django+Vue 的双相情感知识科普交流平台(源码+文档+远程调试,全bao定制等)
  • 反向传播实战指南:从梯度爆炸到Grad-CAM的深度解析
  • Potplayer播放云盘视频终极指南:免费实现百度、迅雷、阿里云盘高清播放
  • 国内靠谱的健身房推雪橇毯厂商哪家靠谱
  • 【编号331】(安徽省)池州市基础地理矢量数据
  • 【小白向】多功能全能数字员工,虾壳云一键部署 OpenClaw v2.7.9 极简落地实操(最新安装包)
  • 「2026实测」直击Turnitin算法:英文毕业论文AI率97%降至8%的实操手册