在 Vim 普通模式下按下 : 键会切换到命令行模式。Vim 命令行模式和 shell 下的命令行有些类似,可以输入一条命令后按回车键执行。按 <Esc> 键可从命令行模式切换回普通模式。

Vim 的先祖是开创了区分模式编辑范例的 vi,而 vi 又奉一个名为 ex行编辑器为祖先。

1. Vim Ex命令介绍

出于历史原因,在 Vim 命令行模式中执行的命令又被称做 Ex 命令。Ex 命令都需要先输入 : 后按回车才能执行,按 / 调出查找提示符或用 <Ctrl-r>= 访问表达式寄存器时,命令行模式也会被激活,但这两个并不是 Ex 命令。

可以用 Ex 命令读写文件 (:edit:write)、创建新标签页 (:tabnew)、分割窗口 (:split)、操作参数列表 (:prev:next) 及缓冲区列表 (:bprev:bnext)。事实上,Vim 为几乎所有功能都提供了相应的 Ex 命令,通过命令 :h ex-cmd-index 可获得完整的Vim Ex命令列表。

Vim 普通模式命令一般只操作当前字符或当前行,而很多 Ex 命令可以用行号、位置标记或查找模式指定要操作的范围,这意味着无需移动光标就可以使用 Ex 命令在任意位置、对多个行同时执行某种操作。

因此,相比于普通模式下的 Vim 命令,Ex 命令作用范围更广,操作距离更远。

2. Ex命令操作范围

Ex 命令的优点之一是可以在某一范围内的所有行上执行,可以通过以下几种方式指定操作范围。

2.1 用行号作为地址

输入一条只包含数字的 Ex 命令,Vim 会把这个数字解析成一个地址,并把光标移动到该数字所指定的行上。例如,Vim命令 :3p 会把光标移到第 3 行,然后显示该行的内容。

2.2 用地址指定一个范围

可以用行号来指定一个范围 ({start},{end}),如 :2,5p 会打印从第 2 行到第 5 行之间的每一行的内容,且运行完这条命令后光标将停留在第 5 行。

2.3 用高亮选区指定范围

使用Vim可视化模式选择待操作目标范围后按下 : 键,命令行上会预先填充一个范围 :'<,'>,用于代表高亮选区的范围,例如,:'<,'>p 用于打印高亮选择的文档内容。

2.4 用模式指定范围

Vim 接受以搜索模式作为一条 Ex 命令的地址,例如,:/<html>/,/<\/html>/p 指定的操作范围是由 html 开标签所在的行开始,到对应闭标签 /html 所在的行结束。

2.5 用偏移对地址进行修正

假设只想对位于 之间的每一行都运行一条 Ex 命令,但不包括 及 标签所在的行,那么可以为之加上偏移。例如,:/<html>/+1,/<\/html>/-1p 可以实现该目的。

地址偏移的一般形式为 :{address}+n,如果 n 被省略,缺省偏移量为 1。{address} 可以是一个行号、一个位置标记、或是一个查找模式。

嗯,扫一扫就可以找到小女子我啦~