vi学习_5编辑文本_4

 

编辑文本

使用程序处理数据:fmt

使用!和!!(感叹号)命令将把编辑缓冲区中的行发送给另一个程序。该程序的输出将替换原始行。

举例,可以用排好序的行替换原来的行。其工作方式如下:

将光标移到到希望处理的开始位置,键入希望处理的行数,后面跟!!(两个感叹号)以及程序名称,后跟<Return>键。例如,假设有4行文本,希望将其排序,将光标移到到第一行,输入:

5!!sort

一旦键入第二个!,vi就会将光标移到到命令行,并显示“:.,.+3!”(.+3表示当前行之后的三行)。然后可以直接在命令行上键入任意的shell命令。在按<Return>键之前使用<Backspace>(或<Delete>)键进行纠正。

 

!(单感叹号)命令的工作方式与此相似,只是!命令在指定输入行的范围内更具有灵活性。

输入!,后面跟一个光标移到命令,再后跟程序的名称。从当前行到光标移到命令指向的位置之间的所有行都将被发送给程序进行处理。

 

有一种格式化整个编辑缓冲区的简易方法。通过键入gg或1G跳转至编辑缓冲区的第一行,然后输入:

!Gfmt

同理,!Gsort是将整个编辑缓冲区排序。

 

概况:

n!!program               在n个行上执行程序program

!moveprogram         从当前行至move行执行程序program

 

将数据写入文件

当使用ZZ命令停止vi时,vi会自动地将数据保存起来。但是,vi中还有几条命令可以用来随时将数据写入到文件中。这些命令非常重要,因为它们允许在不退出vi的情况下,不时地备份数据。这些命令还允许将数据保存到不同的文件中:

:w              将数据写入原始文件

:w file       将数据写入到一个新文件中

:w! file      覆盖一个已有的文件

:w>>file    将数据追加到指定的文件中

 

:w file将数据写入到一个新文件中,如果file为已存在的文件,那么vi将显示一个警告信息,如:

E13: 文件已存在 (请加 ! 强制执行)

因此,需使用:w! file对已存在文件进行覆盖。

 

如果只希望保持编辑缓冲区中的特定行,则可以采用通常的方法指定行号。例如,为了将前10行写入到文件save中,则:

:10w! save

为了将第10行至第20行追加到文件save中,可以使用:

:10,20w >> save

 

退出vi的方法,除ZZ和:q!外,还有第三种:

只有使用了:w命令保存了数据,就可以使用:q退出vi。为了方便起见,可以组合使用:

:wq

因此,组合命令:wq和ZZ拥有相同的效果。

 

切换到一个新文件

当启动vi时,可以指定希望编辑的文件的名称。如果在编辑一个文件的时候,决定编辑另一个文件,这时不必退出并重启vi程序。为了切换到一个新文件,可以使用:e命令,后面跟新文件的名称。

当开始编辑一个新文件的时候,编辑缓冲区中的原有内容将会丢失,所以要确保首先使用:w命令将数据保存。当使用:e命令时,vi将检查数据是否已经保存。如果还有未保存的数据,那么vi将不允许切换到新文件。如果希望忽略这种保护,可以使用:e!命令。

 

当编辑一个文件时,由于编辑过程中犯了很多错误,因此决定重新打开这个文件。为了忽略编辑缓冲区中数据的改变,重新打开原始文件,可以输入:

:e!

就可以对原始文件的副本进行编辑了——以前的修改都已被丢弃。

 

概括:

:e file        编辑指定的文件

:e!             重新编辑当前文件,忽略自动检查

:e! file       编辑指定的文件,忽略自动检查

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

signjing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值