复习一下上次的操作
vi #启动程序 默认是 Normal 模式
i # 插入模式
编辑文本
Esc键 #回到 Normal 模式
:w 123.txt ##保存文件并命名
Esc键回到 Normal 模式,如果已经是就不需要Esc键了。
:q #退出VI
clea #r清除屏幕
————————————————
这次需要掌握怎样查找指定的字符串,我们先打开上次的文件
vi 123.txt
vi空格+文件名就是打开已经存在的文件。
如果你希望查找文件中的特定字符串Ctrl+F是不管用的。
但是你回想你下你在记事本中使用 Ctrl+F查找字符串的时候会怎么样,会弹出一个小窗口输入需要查找的内容,说的专业一点,程序会把焦点或者叫热区转移到输出查找的窗口,显示文本的记事本程序会失去焦点。
再次强调上面这一段很重要希望你在仔细再读一遍。窗口模式中可以有焦点的切换,或者说当前窗口的切换,而文本模式,只有一个标准输出显示器。这就是为什么VI需要有
一般模式(也可以称为命令模式)
插入模式(也可以成为文本编辑模式)
末行模式(也可以称为末行命令模式)
三种不同的模式,三种不同的模式相当于弹出三种不同窗口。
打开123.txt以后vi处于命令模式。你会看到最下面一行回应相应的提示。
键盘的输入不会出现在显示器上,但是会被vi接受判断是不是一个命令,如果是就会执行。你可以输入
dd
你会发现光标所在一行被删除了,是不是很酷。
同时你会注意到最下面一行,提示被清除了,变成了空行。
最下面一行就是区分三种模式的重要位置。
我现在要查找123这个字符串
需要在键盘输入
/123
回车
你会看到最先面一行显示刚才输入的命令,而且光标也定位到第一个出现123的位置。现在怎么才可以把123改成111呢。按delete键可以逐个删除123,你打算输入111的时候会无法输入,或者你扒光标移动到23后面按下Backspace键的时候你会发现无法删除23。
这是因为你在命令模式下,vi只会接受可以识别的命令。而且delete键在命令模式下可以识别,但是Backspace键不会被识别。
要想编辑文本,需要进入文本编辑模式。还记得怎样进入文本编辑模式吗?
i
注意没有回车。
再次提醒:注意最后一行。现在是INSERT。现在键盘所有的输入都会显示到显示器上,除了Esc这样的不可以显示字符键。
你可以使用方向键,del键,Backspace键,删除123,然后输入111。然后
保存文件:先按Esc回到命令模式,然后:w,然后:q。
很好你已经顺利完成了一次对文件的修改。
回顾一下
vi 123.txt
dd
/123
i
修改文本
Esc键
:w
:q
我们在一起练习一次。修改123为111。
vi 123.txt
/123
此时光标停留在第一个被找到的123,如果我需要修改的不是这个123,而是下一个123,在命令模式下输入n(注意没有回车),光标就会移动到下一个匹配的字符串位置。
一直按n当所有匹配结果都显示过一遍,到达文件末尾会从从头再次开始,最后一行会有提示。
n是next的首字母表示下一个结果,那么上一个结果会不会是p呢?很抱歉不是p,而是大写N。这样相似的功能就在同一个按键n上了。
因为刚才是刚刚打开文件,vi是从文件头开始查找,如果是工作中按Esc进入命令模式时使用查找命令是从光标位置开始向下查找的,那么从光标向上查找有没有命令呢?有就是和/同在一个按键的?。需要注意的是在使用?123查找的时候n表示前一个N表示后一个。也就是n表示与查找命令的方向一致,N表示与查找命令的方向相反。
总结一下
初步理解三种模式,它们不是来折磨你的,它们相当于窗口模式下的活动窗口切换。
/123 从光标位置向后查找 n下一个 N上一下
?123 从光标位置向前查找 n上一个 N下一下