年底了,故事总是会有很多。

刚了一波通宵加班,趁着有时间,过了一遍Vim教程,顺便汇总下常用命令。
对于以 OSX / Linux为开发环境的伙伴们,应该并不陌生。因其轻便,扩展性,可定制化,一直很受开发者追捧。高阶大神,袖中必有深藏。
Vim编辑器简洁易用,在终端上可用来快速查看修改文档。虽然与其他编辑器如WebStrom, VScode相比,功能扩展相对欠缺,对新手朋友不太友好。但胜在多数Linux系统已附带,开箱即用,终端直接使用,无需再多开一个应用窗口。
作为一名前端开发工程师,如果你想秀操作用Vim来写HTML/CSS/JavaScript,我只想说一句,“小伙子,你很6啊!”。
Vim学习的过程不是两三天即可入境,懒惰如笔者,几天不敲,命令忘了七八。时不时还得翻出来看看,至今仍以新手自居。
前言 vi/vim的区别
vim 是 vi 的升级版本,它不仅兼容vi的所有指令,还有新增了一些新的特性。123vi filenamevim filename// 两者同样的功能,能少敲一个字母,所以我们就用vi吧
“工具总须多磨,方才用的趁手。”
Mac 终端键入 vimtutor 即可进入Vim入门教程,30分钟足以让你应对Vim日常操作。
常规操作
| 命令 | 说明 | 
|---|---|
| x | 删除光标下的字符 | 
| X | 删除光标左边的字符 | 
| s | 修改一个字符(与r的区别,修改后直接进入Insert模式) | 
| i | 光标前插入字符 | 
| a | 光标后插入字符 | 
| A | 行尾插入字符 | 
| o | 光标下方新建一行并进入Insert模式 | 
| O (字母) | 光标上方新建一行并进入Insert模式 | 
| r | 替换字符(单个) | 
| R | 替换字符(多个) | 
| cw | 替换文本直到单词末尾(ce也可) | 
| c$ | 替换文本直到行尾 | 
| dw | 删除单词 (de, d2w) | 
| d$ | 删除到行尾 | 
| D | 删除到行尾 | 
| S | 删除到行为,并进入Insert模式 | 
| dd | 删除整行 | 
| y | 复制 | 
| yy | 复制整行 (yw, ye) | 
| p | 粘贴到光标之后 | 
| P | 粘贴到光标之前 | 
| u | 撤销 | 
| . | 重复上一次操作 | 
| :! | 执行外部名 (:!dir/:ls) | 
| % | 查找配对的括号 ), }, ] | 
| v motion :w | 选择性保存 | 
| Ctrl + D | 查看可能的补全 | 
光标移动
| 命令 | 说明 | 
|---|---|
| h | 左 | 
| l | 右 | 
| k | 上 | 
| j | 下 | 
| 0 (数字) | 行首 | 
| $ | 行尾 | 
| w | 下一个单词起始处 | 
| nw (2w) | n可为数字,表示移动两个单词 | 
| e | 单词末尾(与w的区别) | 
| gg | 文件起始处 | 
| G | 文件末尾处 | 
退出
| 命令 | 说明 | 
|---|---|
| :wq | 保存并退出 | 
| ZZ | 保存并退出 | 
| :q! | 丢弃修改并退出 (q退出,有修改的话q不能退出) | 
| :e! | 丢弃修改并打开原文件 | 
查找并替换
| 命令 | 说明 | 
|---|---|
| :s/old/new/g | 查找old并替换为new,g代表整行匹配 | 
| :#, #s/old/new | #, #代表首尾行号 | 
| :%s/old/new/g | 全文匹配替换 | 
| :%s/old/new/gc | 全文匹配替换,并每次替换会弹出确认提示 | 
翻页
| 命令 | 说明 | 
|---|---|
| Ctrl + e | 向下滚动一行 | 
| Ctrl + y | 向上滚动一行 | 
| Ctrl + f | 向下翻一页 | 
| Ctrl + b | 向上翻一页 | 
| Ctrl + u | 向上翻半页 | 
| Ctrl + d | 向下翻半页 | 
文件操作
| 命令 | 说明 | 
|---|---|
| :e + filename | 打开新文件 | 
| :r + filename | 读取文件并插入到当前文件 | 
选项设置
| 命令 | 说明 | 
|---|---|
| :set ic | 忽略大小写 | 
| :set is | 部分匹配(like) | 
| :set hls | 高亮匹配 | 
| :set nu | 显示行号 | 
分屏启动vim
| 命令 | 说明 | 
|---|---|
| vim -on file1 file2… | 水平分屏 | 
| vim -On file1 file2… | 垂直分屏 | 
关闭分屏
| 命令 | 说明 | 
|---|---|
| Ctrl + w c | 关闭当前窗口(如果是最后一个,无法关闭) | 
| Ctrl + w q | 关闭当前窗口(如果是最后一个,则退出vim) | 
分屏
| 命令 | 说明 | 
|---|---|
| Ctrl + w s | 上下分屏 | 
| Ctrl + w v | 左右分屏 | 
| :sp filename | 左右分屏,且打开一个新的文件 | 
| :vsp filename | 上下分屏,且打开一个新的文件 | 
切换分屏(光标切换)
| 命令 | 说明 | 
|---|---|
| Ctrl + w l | 右边 | 
| Ctrl + w h | 左边 | 
| Ctrl + w j | 上边 | 
| Ctrl + w k | 下边 | 
分屏尺寸调整
TIPS: (上下分屏生效)
| 命令 | 说明 | 
|---|---|
| Ctrl + w = | 所有屏一样高度 | 
| Ctrl + w + | 增加高度 | 
| Ctrl + w - | 减少高度 | 
写在结尾
这么多命令要记,想对Vim说喜欢真不容易,按耐不住就新开VScode。
少年莫慌,很多事情,难在开头,当你学会了,才会感谢当初的付出。
本文仅对常用的一些命令做了汇总,Vim的玩法还有很多。在此推荐易水博客的《Vim使用进阶》系列,干货满满。
寒梅飘香,这个寒冬,与诸君互勉。
参考文档:
作者:以乐之名
本文原创,有不当的地方欢迎指出。转载请指明出处。