在 Linux 下最常用的文本编辑器莫过于 vim,而这篇文章就会介绍 vim 编辑器的使用方法。vi 是 Visual Interface 的缩写,而 vim (VI iMproved) 则是其增加版本。
与其他编辑器不同,vim 编辑器拥有三种模式
- 编辑模式(命令模式)
- 输入模式
- 末行模式
每种模式都有其各自的用途与操作方式。
模式转换
编辑 -> 输入:
i
: 在当前光标所在字符前面,转换为输入模式
a
: 在当前光标坐在字符后面,转换为输入模式
o
: 在当前光标所在行的下方,新建一行,并转换为输入模式
I
: 在当前光标所在行首,转换为输入模式
A
: 在当前光标所在行尾,转换为输入模式
O
: 在当前光标所在行的上方,新建一行,并转换为输入模式
输入-> 编辑:
Esc
编辑 -> 末行:
:
末行 -> 编辑
Esc
:q
: 退出
:q!
: 不保存退出
:w
: 保存
:w!
: 强行保存(需要管理员)
:wq
或:x
: 保存退出
移动光标
逐字符移动
h
左
j
下
k
上
l
右
前面加数字可以一次移动多个字符
逐词移动
w 移至下个单词词首
e 移至当前或下个单词词尾
b 移至当前或上个单词词首
前面也可以加数字可以一次移动多个单词
行内移动
0 绝对行首
^ 行首的第一个非空字符
$ 绝对行尾
行间移动
#G 跳到第#行
G 最后一行
翻屏
CTRL+f 向下翻屏
CTRL+b 向下翻屏
CTRL+d 向下翻半屏
CTRL+u 向上翻半屏
删除字符
x 删除光标所在处的字符
#x 删除光标所在处后#个字符
删除 d
可以和跳转命令组合使用
#d跳转符: 一次删除#个跳转范围,例如:#dw, #de, #db
dd 删除当前光标所在行
#dd 删除#行
末行模式下
:START,ENDd 例如 10,20d
删除起点终点间的行
. 表示当前行
$ 表示最后一行
+# 向下的#行
粘贴 p
p 粘贴到下方一行或光标后方
P 粘贴到上方一行或光标前方
复制 y
用法与删除命令相同
修改 c
删除内容,再转换为输入模式
用法与删除命令相同
替换 r
R: 替换模式
撤销 u
撤销上一次的编辑操作,可以连续使用撤销多次操作,vim 一般在内存缓冲区保存50次操作
#u 撤销前#次的编辑操作
重做(redo) CTRL+r
重复上一次操作 小数点(.)
可视化模式(VISUAL)
选取字符以供编辑
v按字符选取
V按矩形块选取
查找
/PATTERN
?PATTERN
n 下一个
N 上一个
查找并替换
在末行模式下使用s命令即可实现替换,其语法为
:[range]:s/PATTERN/REPLACE/[flags]
其中,范围(range)和模式(flags)为可选,例如:
:s/hello/world/ #将第一个 hello 替换为 world
:10,20s/hello/world/g #将10到20行中的所有 hello 替换为 world