如题所示,本文为Vim入门教程,文章涵盖Vim基本的操作:插入、替换、删除、搜索、修改、撤销、重做等等,以及笔者个人的理解和说明。
光标移动
方向键
1 k
2h l
3 j
光标移动的方向键是hjkl,当然还有默认的方向键。要记住hjkl其实很容易,以j为中心:
| Command | Description |
|---|---|
j | 形似下箭头,使光标向下移动。 |
h | 位于左边,使光标向左移动。 |
l | 位于右边,使光标向右移动。 |
k | 使光标向上移动。 |
其他
| Command | Description |
|---|---|
0 | 使光标移动至行首。 |
$ | 使光标移动至行尾部,可记作end of line。 |
xw | 使光标移动x个单词,w可记作word,比如2w,使光标移动两个单词,并位于第二个单词的首个字符处。 |
xe | 使光标移动x个单词,e可记作end of word,这个和xw相似,区别是移动后,光标移动后,位于第x个单词的尾部字符处。 |
删除
| Command | Description |
|---|---|
x | 删除一个字符。 |
dw | 删除一个单词,可记作delete word。 |
dxw | 删除x个单词,可记作delete x words,比如:d2w。 |
d$ | 删除当前光标位置到行尾的的所有字符,$可记作end of line。 |
dd | 删除整行,此外dd可接受一个数字前缀x,表示删除x行,比如:2dd。 |
撤销与重做
| Command | Description |
|---|---|
u | 撤销上一个命令,可记作undo。 |
U | 撤销当前行所有的修改。 |
CTRL-R | 重做,可记作redo。 |
插入
进入输入模式,最常用的是i命令,可记作insert。
但是如果需要追加内容的话,i是无法实现的,此时我们需要使用A命令,可记作append,它使光标位于行尾。
| Command | Description |
|---|---|
i | 光标位置不变,进入输入模式,可记作insert。 |
a | 光标向后移动一个字符,并进入插入模式,可记作append。 |
A | 光标处于当前行行尾,并进入插入模式,可记作append。 |
o | 在当前行下添加新行,并进入插入模式,意为open。 |
O | 在当前行上添加新行,并进入插入模式。 |
替换
| Command | Description |
|---|---|
rx | 将当前光标处的字符替换为x,r可记作replace。 |
R | 进入替换模式。 |
:s/old/new | 将当前行第一个old字符串替换成new,s意为substitute。 |
:s/old/new/g | 将当前行所有old字符串替换成new,g可记作globally。 |
:#,#s/old/new/g | #为行号,将指定行之间的所有old字符串替换成new,比如:1,10s/old/new/g。 |
:%s/old/new/g | 将文中所有的old字符串替换成new。 |
:%s/old/new/gc | 将文中所有的old字符串替换成new,但在替换前会显示确认提示。 |
修改
如果单词错误过多,用替换来操作是很不方便的,这类情况就需要用到修改命令:
| Command | Description |
|---|---|
ce | 将当前光标位置到单词尾部的字符删除,并进入输入模式,c可记作change,e可记作end of word。 |
cw | 删除一个单词,并进入输入模式。 |
cxw | 删除x个单词,并进入输入模式。 |
c$ | 删除当前光标位置到行尾的的所有字符,并进入输入模式,$可记作end of line。 |
复制和粘贴
首先我们需要使用v命令选择需要复制的文本,选中后使用y(yank)进行复制,最后使用p(paste)命令即可粘贴。
y命令也可以类似d命令那样:
yw- 复制一个单词。yxw- 复制x个单词。y$- 复制当前光标处到行尾的内容。yy- 复制整行。
搜索
此处将介绍三个搜索命令:/、?和%:
| Command | Description |
|---|---|
/ | /后面加上要搜索的内容(区分大小写),然后回车即可进行搜索,n继续向下搜索,N向前搜索。 |
? | ?和/用法一致,只是搜索方向相反。 |
% | %会匹配(和),[和],{和}。 |
搜索默认是区分大小写的,我们可以通过
:set ic忽略大小写(ignore case)。
保存和退出
| Command | Description |
|---|---|
:w | :w保存当前的修改,可记作write,也可以指定保存的文件名,比如:w filename,则会将内容保存到filename。 |
:q | :q退出编辑,可记作quit。 |
w、q可以一起使用,如:wq则表示保存并退出。
执行外部命令
在Vim中,我们还可以执行外部的命令,比如:!ls则会执行外部命令ls。
其他命令
| Command | Description |
|---|---|
:no | 跳到行no |
#G | 跳到行# |
G | 跳到文件底部 |
gg | 跳到文件顶部 |
CTRL-O | 返回上一个位置 |
CTRL-I | 前进下一个位置 |
:set nu | 显示行号 |
:set ic | 忽略大小写(ignore case) |
:set noic | 区分大小写(no ignore case) |
练习
对于笔者来说,光看不练是无法记住的,所以建议经常使用和练习,才能熟练地使用Vim。另外我推荐一款名为vimtutor的练习脚本(安装Vim自带的)。



