让VI成为记事本(2)查找指定字符串

复习一下上次的操作

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下一下

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值