运行 Vim
Vim 像大多数控制台中的命令行一样,输入
vim 命令后回车就会被执行:vim
执行后大概率会看到类似这样的界面:

如果没有看到上面的界面(且非要看看),可以输入下面的命令:
vim -u NONE
退出 Vim
退出 Vim 也很简单(尽管有些特别,以后就知道为什么了):
- 先按
Esc键
- 输入
:q!按回车
有些时候不需要按
Esc 键,但按一下准没错
如何输入
当你初次进入 Vim,想要输入内容的时候,大概率你会发现按键失效,此时一定要保持冷静,不要乱按,照下面的步骤来:
- 先按一下
i键 - 如果你在我提醒之前已经乱按过了,没关系,先按下
Esc键 - 然后再按一下
i键
- 此时就可以输入文字了(进入了 输入模式)
- 此时所有输入都将被记录
- 直到再次按下
Esc键(退出 输入模式)
Vim 的模式
现在是时候了解一下 Vim 的 模式 概念了,Vim 中有很多 模式,在前面的操作中我们已经接触到了三种模式:
NORMAL模式- 任何模式下按
Esc键都会进入该模式 - 包括
NORMAL模式本人(所以按多少次Esc都没关系,不确认就多按几次) - 此时 Vim 会等待输入操作指令,比如移动光标、复制 / 粘贴 / 删除 文本(马上会讲到)
INSERT模式- 就是上一节中按下
i(insert)键进入的模式 - 此时会接收内容输入
COMMAND LINE模式- 在
NORMAL模式下输入:后就进入了Command-line模式 - 此时 Vim 接受一些内部命令
- 回车后即可执行
- 💡 还记得是怎么退出 Vim 的吗
若启动时执行了
vim -u NONE 那此时不同模式在 Vim 上可能看不出什么区别,这会非常令人困惑,下面我们用刚刚讲到的 Command-line 模式进行一些设置让 Vim 显示不同模式:- 按
Esc(按一下准没错儿☝🏾
- 输入
:此时已经进入Command-line模式
- 继续在
:后面输入set showmode按回车
- 尝试反复按
i和Esc看看 Vim 的变化

🚀 拓展学习:
- 拓展学习是对知识点的详细说明或相关性介绍,初学简单了解一下即可
- 上面提到的
Command-line模式下,还可以试试下面这些 :set nu(显示行号 number):set nonu(不显示行号):set rnu(开启相对行号 related number):set nornu(关闭相对行号)
移动光标
‼️ Vim 支持方向键移动光标,但这在 Vim 界是一种不耻的行为,所以请慎重。
- 也许此时你的 Vim 中没有任何内容,那么,光标是无法移动的,先准备一些内容:
NORMAL模式下按i进入INSERT模式- 随意输入文字,回车,文字,回车,文字,回车
- 有了几行文字后,按
Esc退出INSERT模式

- 上下左右移动光标对应
kjh和l - Vim 按键布局非常合理,四个按键集中在一个区域
- 如果觉得不好理解,只记住
j和k也够用了,hl其实比较少用到
j / k 这种上下移动光标的操作,如今已被视作经典,被很多先锋的应用所继承,例如(Gmail,Linear 等)- 再学几个快速 / 实用的:
b/w以单词为单位左右移动gg/G移动到页首 / 页尾- 没错,有些指令需要多个按键组合
- 指令区分大小写
G需要按shift g
- 有精力可以记一下下面几个指令,不好记可以先不用管:
0回到行首$到行尾3j向下移动3行2k向上移动2行
没错,你已经发现了,指令前面可以添加 数字 来限定执行次数,大部分指令都可以这么做,试试给
w 或 b 前面加上数字。本节的重点不是记命令,而是形成「不看鼠标也知道怎么走」的直觉。文本查找与替换
常用的文本查找有两种方式:
- 在
NORMAL模式下输入/text按回车进行查找 - 其中
text就是你要查找的文本内容 - 按
n继续查找下一个 - 按
N(shift n以后不在赘述)查找上一个
- 当光标停在任意单词的任意一个字母上时,按
*或#对当前单词进行查找 - 注意需要在
NORMAL模式(以后不特别说明默认是NORMAL模式) - 同样按
n或N查找下一个或上一个
🚀 拓展学习:
如果你已经实践了上面介绍的内容,可能你已经发现了
* 和 # 的秘密 —— 它们是有方向的,一个是向文件尾搜索,一个是向文件头搜索。有趣的事情来了,上面讲到的
n 和 N 也是有方向性的,而且两个方向相关的操作是可以组合起来使用的。- 当使用
*进行搜索时,按n则继续朝文件尾搜索,N会向文件头搜索
- 当使用
#进行搜索时,按n则继续朝文件头搜索,N会向文件尾搜索
文本的复制 / 删除 / 粘贴
在学习这一节之前,需要先了解(至少应该知道) vim 的 寄存器 概念,在 vim 中不管是复制 / 删除还是剪切,内容都会被保存到寄存器中,可以用于粘贴。
vim 中复制 / 删除 / 粘贴 对应的概念:
- yank - 复制
y
- delete - 删除(剪切)
d/x
- put - 粘贴
p/P
所有操作符后面都可以跟随范围描述,操作符前面也可以加数字(理论上数字加在前面或后面效果是一样的)
比如:
d3w 和 3dw 结果是一样的yy 将复制当前行,同样的 dd 将删除(剪切)当前行两个粘贴操作符的区别在于位置的不同,
p 会将内容粘贴在光标后面(如果是整行会粘贴到当前行的下方), P 会粘贴到光标或当前行的前面