Linux学习笔记(十二)——vim编辑器详解

在 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