写在前面
在命令行工具中打开并修改一个文件或者是在 git 操作时需要美化历史记录的时候就不得不和 vim 编辑器打交道。现在的操作系统基本都自带 vim 编辑器。借用维基百科上的一说话:对于大多数用户来说,Vim有着一个比较陡峭的学习曲线。这意味着开始学习的时候可能会进展缓慢,但是一旦掌握一些基本操作之后,能大幅度提高编辑效率。
因为日常会用到它,如果不仔细了解一遍它,会感觉到非常痛苦,就像正则表达式一样,一些奇奇怪怪的符号代表一些奇怪的含义,连 ctrl + c
中断操作都不能退出 vim。因此就来学习一下 vim。
看了一遍 Vim简介 和 入门教程,加上跟着实际操作,基本都了解了,只是有些特殊的符号对应特殊的意义需要单独记下来。这里记录常用的操作命令。
以下命令都是在英文输入法模式下,当按键不管用的时候,请看看是不是输入法不对!!!
普通模式按 i 进入插入模式,插入模式按 Esc 回到普通模式,普通模式按 (:命令) 进入命令行模式。插入模式和命令行模式之间没有直接联系,必须都回到普通模式进行切换。
1. 普通模式
普通模式就是 Vim 启动后自动进入的模式,在该模式下可以 移动光标
搜索与替换
复制与粘贴
删除
。
移动光标
- 上⬆下⬇左⬅右➡箭头移动光标
- 上下左右箭头前输入数字(n↑),为向哪移动多少个字符
0(/home)
移动到这一行的最前面,$(/end)
移动到这一行的最后面gg
移动到这个档案的第一行,G
移动到这个档案的最后一行n<Enter>
向下移动 n 行
搜索与替换
搜索
/word
向下搜索,?word
向上搜索n
为重复向下搜索,N
为重复向上搜索。(需要输入 /word 回车后再按)
替换
:n1,n2s/word/word2/g
n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2。:n1,n2s/word/word2/gc
,加一个 c 表示在取代前显示提示字符给用户确认 (confirm) 是否需要取代!$
表示最后。例如:1,$s/word/word2/g
表示从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !
复制与粘贴
复制
- 复制光标所在的一行
yy
- 复制光标所在的向下 n 行
nyy
- 复制光标所在行到最后一行
yG
- 复制光标所在行到第一行
y1G
- 复制光标所在位置直到行尾的所有字符
y$
- 复制光标所在位置直到行首的所有字符
y0
粘贴
- 将数据粘贴在光标所在行的下一行
p
- 将数据粘贴在光标所在行的上一行
P
删除
- 删除光标所在的一行
dd
- 删除光标所在的向下 n 行
ndd
- 删除光标所在行到最后一行
dG
- 删除光标所在行到第一行
d1G
- 删除光标所在位置直到行尾的所有字符
d$
- 删除光标所在位置直到行首的所有字符
d0
- 删除光标向前一个字符(相当于backspace)
X
- 删除光标向后一个字符(相当于 del)
x
- 删除光标前后 n 个字符
nX
或nx
撤销与重做
- 撤销上一个动作
u
- 重做上一个动作
ctrl + r
- 重复上一个动作
.
2. 插入模式
普通模式进入插入模式 i
插入模式退出到普通模式 Esc
a,o,r
都会进入插入模式
3. 命令行模式
普通模式进入命令行模式,都需要以 :
开头。
- 保存
:w
- 保存并离开
:wq
- 离开,不保存会有警告
:q
- 强制离开
:q!
3. 其他
- 显示行号
:set nu
- 取消显示行号
:set nonu