首页 >> 学习 >> VI编辑器 >> ex模式
ex模式

本节重要性:★★★★★    本节难度:★★★★★

我们前面学习的VI命令,尽管操作起来很直观,但对于重复性的批量操作,用起来还是效率不高。VI为我们提供了另一种操作,就是利用ex命令,来自动进行批量操作,如批量替换一个变量名等。

VI的底层就是行编辑器ex,所以VI可以很方便的调用ex命令。在vi中输入Q进入ex模式,在ex模式中输入vi或visual进入vi模式。vi在命令模式下输入冒号,即可调用ex命令。

ex命令由范围和操作组成,如1p就是打印第一行。如果省略范围就是对当前行进行操作。

ex的范围与sed类似,有绝对位置、相对位置和匹配位置3种:

绝对位置:	如1(第一行);15,23(第15到23行)
相对位置:	根据当前位置得到的相对位置,如.+2(当前行后面第2行)
搜索到的位置:	如/protein/(光标所在行后面第一个包含protein的行)

ex操作有下面一些:

操作		缩写	例子
print		p	:1p
delete		d	:10,20d
yank		ya或y	:5,8ya
put		pu	:pu
move		m	:10,15m20
copy		co或t	:25,28t40
substitute	s	:1,$s/protein/Protein/g

需要注意的是,ex命令中,p是打印,pu才是粘贴,这一点是与vi命令不一样的。使用yank(y)/put(pu)和delete(d)/put(pu)完成的操作,可以分别用copy(co)和move(m)一步完成。

ex中,“.”表示当前行(可以省略),$表示最后一行,%表示所有行(相当于1,$),如:

:d		删除当前行
:%t$		复制所有行,然后放到末尾
:20,.m$		把20到当前行移动到文件尾

熟练掌握ex命令,才能更有效地利用VI编程,才算是真正掌握了VI。

<<上一节  下一节>>