团队协作统一缩进
前端团队 4 人用不同编辑器写 Vue 组件,git diff 里全是空格和 Tab 的冲突,代码审查效率骤降。组长要求所有人统一用 2 空格缩进。用本工具把整个文件夹的 .vue 文件批量替换,不必记住 Vim 的 `:set ts=2 sts=2 expandtab` 命令组合,直接在文本区粘贴代码片段,选「替换缩进」模式,输出结果直接覆盖原文件。冲突从每次合并 20 处降到 0。
在终端里刚敲完 `:wq` 却提示未保存,因为光标还在插入模式——Vim 新手最常卡在模式切换的肌肉记忆上。这个工具把模式、移动、编辑、寄存器四类核心命令拆成可检索的速查表,输入想做的操作(如“删除到行首”或“粘贴上次删除的文本”),直接给出对应的按键序列。所有数据存在浏览器本地,不发送任何键盘输入到服务器。
前端团队 4 人用不同编辑器写 Vue 组件,git diff 里全是空格和 Tab 的冲突,代码审查效率骤降。组长要求所有人统一用 2 空格缩进。用本工具把整个文件夹的 .vue 文件批量替换,不必记住 Vim 的 `:set ts=2 sts=2 expandtab` 命令组合,直接在文本区粘贴代码片段,选「替换缩进」模式,输出结果直接覆盖原文件。冲突从每次合并 20 处降到 0。
服务器凌晨 3 点 CPU 飙到 95%,运维同事在终端用 Vim 打开 500MB 的 nginx 报错日志。日志每行时间戳在第 80 列,但错误信息开头不固定,肉眼翻找效率极低。用本工具的可视化寄存器功能,先录制一个「跳到第 80 列→搜索 2025-04-13 03:」的宏,再批量回放,瞬间定位到 47 条异常记录。对比用 less + grep 的同事,少花了 8 分钟。
老项目从 MySQL 5.7 迁到 8.0,表字段 `user_name` 需统一改为 `username`。涉及 23 个 SQL 文件、超过 200 处引用。手动改容易遗漏,且不能全局查找替换(有些注释里的 `user_name` 不该动)。用本工具打开文件后,启用「视觉模式」逐列选中实际代码中的字段名,执行替换命令 `:s//username/g`,不影响注释行。迁移脚本一次通过测试,节省了 2 小时人工核对时间。
助教收 120 份 C 语言大作业,要求每份文件头部必须有 `// 姓名:`、`// 学号:`、`// 日期:` 三行注释。用肉眼检查了 30 份就花了 40 分钟,且漏看了 2 份缺学号的。用本工具的「模式搜索」功能,输入 `/^// 姓名:` 和 `/^// 学号:` 两个正则,对全部文件执行「匹配行数统计」,3 秒标出 8 份格式不合格的作业,退回重交。
技术博客作者在 Typora 里写 API 文档,Markdown 表格列宽参差不齐,发布到 GitHub 后渲染错位,读者反馈参数名和说明对不上列。用本工具粘贴表格源码,利用「可视块模式」选中第二列到第四列,执行 `:!column -t` 管道命令,30 行表格瞬间按列宽对齐,无需手动加空格。发布后表格在移动端和桌面端均正确显示,零差评。
| 输入 | 输出 | 说明 |
|---|---|---|
| h | 向左移动一个字符 | 常规:最基础的移动命令,验证工具能正确识别单字符命令并输出移动方向 |
| dd | 删除当前行 | 常规:常见编辑命令,验证工具能处理双字符命令(操作符+动作) |
| "ayy | 将当前行复制到寄存器 a | 常规:寄存器操作,验证工具能解析寄存器前缀与命令组合 |
| 5j | 向下移动 5 行 | 边界:带数字前缀的移动命令,验证工具能处理数字+动作的复合输入 |
| 0 | 移动到行首(第 0 列) | 边界:数字 0 本身是移动命令(行首),与数字前缀区分,验证工具不误判为数字前缀 |
| "" | 错误:无效命令 | 易错:连续两个双引号(空寄存器名),验证工具对非法寄存器名的容错处理 |
| d0 | 从光标位置删除到行首 | 易错:d0 与 dd 不同,验证工具能区分操作符+数字动作 vs 操作符+操作符 |
| ZZ | 保存并退出 | 边界:大写 Z 命令(非小写),验证工具对大小写敏感的命令能正确识别 |
1.在插入模式里按方向键,以为在移动光标
按 i 进入插入模式后,用 ↑ ↓ ← → 移动光标到目标位置按 Esc 回到普通模式,用 h/j/k/l 或 w/b 移动光标,再按 i 回到插入位置插入模式的设计意图是输入文本,不是导航。方向键在插入模式会退出并重新进入,打断键盘流,且无法使用 Vim 的高效跳转(如 w 跳单词)。
2.用 dd 删完行后,以为内容永久丢失
dd 删除一行后,立即输入新内容,没有粘贴回来dd 删除后,按 p 粘贴到光标下一行,或 P 粘贴到光标上一行dd 删除的内容自动存入无名寄存器(""),p/P 默认从该寄存器粘贴。删除不是销毁,是剪切。
3.复制时用 Ctrl+C,以为和系统剪贴板互通
在普通模式下按 Ctrl+C 复制选中文本,然后去浏览器按 Ctrl+V 粘贴在可视模式下选中文本后按 "+y(双引号加号加 y)复制到系统剪贴板,或 :%y+ 复制全文Vim 的寄存器与系统剪贴板隔离。Ctrl+C 在 Vim 里是中断命令(等效于 Esc),不会复制。要访问系统剪贴板必须显式使用 "+ 寄存器。
4.误以为 u 撤销只撤销一次,重复按没效果
连续按 u 发现撤销了很多步,以为 Vim 坏了按 u 撤销一次,再按 u 继续撤销上一步,Ctrl+R 重做(恢复撤销)Vim 默认保留数百次撤销历史('undolevels' 默认 1000)。u 是逐级撤销,不是单次操作。
5.在可视模式下选中后按 d,以为只删选中部分
在可视模式下选中三行文本,按 d 删除,发现整行都消失了按 d 删除选中内容,但 Vim 会同时删除整行(包括换行符)。若只想删选中字符,用 x 或 "_x(黑洞寄存器)可视模式下的 d 是行删除操作,删除选中区域同时删除行结构。要仅删字符内容,用 x 或黑洞寄存器("_)避免污染无名寄存器。
6.以为 :wq 是唯一保存退出方式
每次退出 Vim 都输入 :wq,即使没做任何修改未修改时用 :q 直接退出;修改后用 :x 或 ZZ(保存并退出):wq 强制写入文件再退出,即使文件未修改也会更新时间戳。:x 只在有修改时写入,更高效。ZZ 在普通模式下直接保存退出,不用按冒号。
7.用 / 搜索后,以为只能手动翻到匹配位置
输入 /hello 后,用 j/k 一行行滚动到匹配行按 n 跳到下一个匹配,N 跳到上一个匹配/ 搜索后 Vim 会高亮所有匹配,n/N 在匹配间跳转。手动滚动会丢失搜索上下文,且无法利用 'hlsearch' 高亮。
8.在插入模式里按 Backspace,以为能删到行首
在插入模式里连续按 Backspace,发现删到行首就停了按 Esc 回到普通模式,用 0 跳到行首,再用 x 或 d$ 删除插入模式的 Backspace 受 'backspace' 选项限制,默认只能删当前行内字符,不能跨行或删到行首。普通模式没有此限制。
d = |y - x|
d光标移动的行数或列数x起始位置的行号或列号y目标位置的行号或列号光标从第 3 行第 5 列移动到第 10 行第 12 列:行移动距离 d = |10 - 3| = 7 行,列移动距离 d = |12 - 5| = 7 列。在 Vim 中,输入 7j 向下移动 7 行,再输入 7l 向右移动 7 列,即可到达目标位置。
因为粘贴时默认进入了插入模式(Insert Mode),此时所有按键都会作为字符输入,不是命令。需要先按 Esc 回到普通模式(Normal Mode),再按 j 才是向下移动。如果 Esc 后光标还是不动,检查输入法是否处于中文全角状态,Vim 只认英文半角按键。
普通模式下直接输入 100G(大写 G)或 :100 回车。注意 100G 的 G 必须大写,小写 g 是跳到文件首行。如果按了没反应,检查是否还在插入模式(按 Esc 退出),或者数字键没输全。本工具模拟的 Vim 行为与终端一致,支持这类数字+命令的复合操作。
Vim 的寄存器机制:dd 删除的内容存入默认寄存器(无名寄存器),p 粘贴的也是这个寄存器里的内容。但如果你在删除后又执行了其他修改操作(如 x 删字符、yy 复制),默认寄存器会被覆盖。想保留删掉的内容多次粘贴,建议用 "add 把内容存入寄存器 a,再用 "ap 粘贴。
没有。本工具是纯前端实现(FE),所有 Vim 命令解析和文本操作都在浏览器本地完成,不会上传任何内容到服务器。断开网络后刷新页面,之前输入的文本和操作历史会丢失,但操作本身依然可用。适合处理含密钥、密码或内部 API 的代码片段。
普通模式下先输入 :5,10 指定范围,再输入 > 加缩进量(如 >2),完整命令是 :5,10>2 回车。注意 > 和 2 之间没有空格。如果只想缩进一个 tab 宽度,直接 :5,10> 即可。本工具支持这种范围选择+命令的组合,比一行一行按 >> 快很多。
如果用 p 粘贴从外部(如浏览器、IDE)复制的文本,Vim 会把它当作按键序列,可能触发意外命令。正确做法:进入插入模式后按 Ctrl+Shift+V(Windows/Linux)或 Cmd+Shift+V(Mac)进行纯文本粘贴,或者先在普通模式下输入 :set paste 开启粘贴模式,粘贴完再 :set nopaste 恢复。本工具的输入框默认接受纯文本,但粘贴时仍建议用快捷键。
普通模式下输入 :%s/foo/bar/g 回车。% 表示整个文件,s 是替换,g 是全局(一行内多次出现也替换)。如果只想替换前 10 行,把 % 换成 1,10。注意替换后光标会跳到最后一个匹配处,按 u 可以撤销。本工具支持这种正则替换,但如果 foo 里包含特殊字符(如 . * [),需要加反斜杠转义。
按 Ctrl+R 重做(redo),可以恢复被撤销的操作。注意 Ctrl+R 只能恢复最近一次撤销,如果连续按了多次 u,需要按相同次数的 Ctrl+R 才能回到撤销前的状态。本工具的操作历史栈支持无限步撤销/重做,但关闭页面后历史会清空。
核心命令(移动 hjkl、删除 dd、复制 yy、粘贴 p、撤销 u、搜索 /、替换 :s)和模式切换行为完全一致。区别在于:① 不支持 :w :q 等文件操作命令(因为是网页,没有文件系统);② 不支持外部命令(如 :!ls);③ 没有 .vimrc 配置,所以自定义映射和插件不可用。适合练习基础操作或快速编辑文本片段,不适合替代完整 Vim 环境。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。