学习vi编辑器5

第五章 介绍ex编辑器

可以用空格来分隔行地址、模式、命令

首先利用ex打开文件

ex filename

查看文件的第一行:

1p或者1

打印文件的1到3行:

1,3

替换命令:(将当前行中的a全部替换成为A)

s/a/A/g

如果当前行是第9行,那么如下的命令可以达到同样的效果

9s/a/A/g

命令:vi可以从ex转换到vi中

在vi命令模式下,Q命令可调用ex,在ex中的任何时刻,命令vi可使你返回到vi编辑器

:10,16d[elete]    删除10到16行的内容

定义行的范围

使用明确数字的地址称为绝对行地址

:3,18d        删除3~18行

:160,224m23    移动160~224行到23行的下面(如同vi中的delete和put)

:23,29co100    复制23~29行并把它们粘贴到100行的后面(如同vi中的yank和put)

:set nu 是 :set number的缩写,相反的命令是:

:set nonu和:set nonumber

:1,10#    暂时的显示部分行的行号

:=    显示总行数

:.=    显示当前行的行号

:/pattern/=    显示第一个与模式相匹配的行的行号

行地址符    点(.)代表当前行;$代表文件的最后一行;%代表文件中的每一行,等同于1,$

:.,$d        删除从当前行(包括)到最后一行(包括)之间的文本

:20,.m$    把从20行到当前行的文本移动到文件的结尾

:%d        删除文件中的所有行

:%t$        复制所有行并把它们粘贴到文件的尾部(成为连续的副本)

使用+-指定一个相对当前行的地址

;.,.+20d    删除从当前行开始向下的20行

:226,$m.-2    把226行到文件末尾的文本移动到当前行上面的第二行

:,+20#        显示从当前行到下面20行的行号

:-,+t0        复制前后,当前三行到文章的开头(就是虚构的第0行的后面)

搜索模式

ex定位行的另一种方法是使用搜索模式

:/pattern/d    删除下一个(从当前行开始搜索)包含模式pattern的行

:/pattern/+d    删除下一个(从当前行开始搜索)包含模式pattern的下一行

:/pattern1/,/pattern2/d    将从第一个包含模式1的行到第一个包含模式2的行之间的内容删除(有可能这个范围是负的)

:.,/pattern/m23        将从当前行(.)到第一个包含模式pattern的行之间的文本移动到23行的后面

:100;+5 p        从100行到105行(注意分号)

全局搜索

:g/pattern        寻找所有的pattern模式,并停止到最后一个

:g/pattern/p    寻找并显示文件中所有包含模式pattern的行

:g!/pattern/nu        寻找并显示文件中所有不包含模式pattern的行,同时还显示这些行的行号

:60,124g/pattern/p    寻找并显示第60到124行之间所有包含模式pattern的行

组合ex命令

:1,3 d | s/their/their/        把一到三行删除;然后再当前行(该行是调用ex提示符以前的第4行)进行替换

:1,5 m 10 | g/pattern/nu    把第一行到第五行移动到第10行的后面,然后显示所有包含模式pattern的行(和行号)

保存和退出文件

vi保存退出命令ZZ

:w    把缓冲区写到文件中

:q    退出编辑器

:wq    写文件并退出编辑器,即使没有修改文件,写操作也会无条件的进行

:x    如果修改了文件就写文件,退出,如果没有修改文件就直接退出

加上感叹号就强制执行前面的操作(前提是能够有办法执行)

重命名缓冲区

可以使用:w将整个缓冲区保存到新文件中

:w filename.new

保存部分文件

:230,$w newfile    将从第230行到文件末尾的文本保存到newfile中

:.,600w newfile    将从当前行到第600行的文本保存到newfile中

添加到现有文件中

:340,$w >>newfile    将缓冲区从340到尾部的内容保存到newfile的尾部

把文件复制到另一个文件中

:r[ead] filename    将filename文件的内容插入到本文件中光标位置的后面

:185r /xxx/filename        将filename文件插入到本文件中第185行后面,另外还有

:$r data

:0r data

:/pattern/r data

编辑多个文件

调用vi打开多个文件

vi file1 file2    打开两个文件,并显示出第一个文件

:ar[gs]        查看当前打开文件,方括号括起当前选择的文件

:rew[ind]        把当前文件重新设置为命令行上指定的第一个文件

:last            把当前文件设置为命令行上指定的最后一个文件

:e file        可以在vi中新打开file文件

在打开两个文件的时候%代表当前文件名字符串,#代表备用文件名字符串

:e!    放弃编辑操作并返回到当前文件上次保存过的版本

^^ 等同于:e#

在文件之间进行编辑

方法一跟单文件相同,仅仅是切换文件的区别,方法二

:160,224ya a    将第160行到224行复制到缓冲区a中,接下来使用:e移动到想放置的文件,输入:pu a就复制过去了,注意这个a缓冲区就是"a缓冲区

posted on 2011-10-19 00:34  Observer  阅读(364)  评论(0编辑  收藏  举报

导航