乐趣区

Vim 利剑常磨,见血封喉

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

刚了一波通宵加班,趁着有时间,过了一遍 Vim 教程,顺便汇总下常用命令。
对于以 OSX / Linux 为开发环境的伙伴们,应该并不陌生。因其轻便,扩展性,可定制化,一直很受开发者追捧。高阶大神,袖中必有深藏。
Vim 编辑器简洁易用,在终端上可用来快速查看修改文档。虽然与其他编辑器如 WebStrom, VScode 相比,功能扩展相对欠缺,对新手朋友不太友好。但胜在多数 Linux 系统已附带,开箱即用,终端直接使用,无需多开一个应用窗口
Vim 学习的过程不是两三天即可入境,懒惰如笔者,几天不敲,命令忘的七八。时不时还得翻出来看看,至今仍以新手自居。
作为一名前端开发工程师,如果你想秀操作用 Vim 来写 HTML/CSS/JavaScript,我只想说一句,“小伙子,你很 6 啊!”。
前言 vi/vim 的区别
vim 是 vi 的升级版本,它不仅兼容 vi 的所有指令,还有新增了一些新的特性。
vi filename
vim 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 使用进阶》系列,干货满满。
寒梅飘香,这个寒冬,与诸君互勉。

参考文档:

vi 和 vim 的区别
vim 常用命令总结
vi/vim 使用进阶

作者:以乐之名本文原创,有不当的地方欢迎指出。转载请指明出处。

退出移动版