学习vi编辑器7(上)

第七章 高级编辑

定制vi

vi的设置选项影响它的操作方式,可以在vi中使用ex的:set命令修改这些选项. 而且,无论vi什么时候启动,它都要读取主目录下的.exrc文件以获得进一步的操作指令。通过在文件中放置:set命令,就可以在使用vi的任何时候改变它的操作方式。vi首先执行主目录下的.exrc文件,然后才执行当前目录下的.exrc文件,储存在shell变量EXINIT中的任何命令都将在vi启动时执行并覆盖主目录.exrc文件的设置。

:set命令

有两种类型的选项可以使用:set命令进行修改:不是开就是关的触发选项带数字或字符串值的选项(如页边距的位置和文件名)。开启触发选项的命令为:

:set option

关闭触发选项的命令为:

:set nooption

:set ic    指定模式搜索忽略大小写

:set noic    搜索时不忽略大小写

:set window=n    设置"窗口大小"就是active的buffer,在使用^F和^B的时候起效,向前(后)移动max(n-2, 1)行

:set all查看所有的选项设置情况,可以使用:h[elp] 'option'来寻求帮助

:set option?    查看命令当前值

:set    显示在.exrc文件或当前会话期间明确修改和设置过的选项

.exrc文件

控制vi环境的.exrc位于主目录下,把将在使用vi或ex时产生影响的set ab和map命令输入到该文件中,命令前面不需要有冒号

替换环境

除了读取主目录下的.exrc文件外,还可以让vi读取当前目录下名为.exrc的文件

可以读取另外名字的文件设置vi环境,例如

:so[urce] .progoptions

一些有用的选项

:set textwidth=10    让每行的宽度不超过10,但是只能在空白处断行

:set wrapmargin=10    让每行到右边界上的宽度不少于10,但是只能在空白处断行

:set magic    让正则表达式中.和*有特殊意义/\v更厉害名曰:very magic就和egrep使用一样了

:set wrapscan    让模式搜索的时候不要一圈一圈的找,找不到了就不要绕圈子

:set autoindent        让下一行和这一行的缩进相同

:set tabstop=4        设置Tab键在vim中移动量为4,默认为8

:set shiftwidth=4    设置自动缩进量为4,可以和tab不一样,最好一样

:set showmatch    找到匹配的括号,给出闪烁提示

:set list            列出tab键^I和回车键$

:set autowrite        在调用:n命令移动到下个文件进行编辑时和使用:!运行shell命令之前将自动写出已修改的缓冲区内容

执行UNIX命令

在vi中进行编辑时,可以显示或读取任何UNIX命令的执行结果.感叹号!可以指定vi创建一个shell并把它后面的内容看成UNIX命令:

:!command

通过:sh命令可以创建一个shell,跟:!sh命令创建的shell不一样,后者功能很弱,不知道为什么会这样

:r !date可以将date得到的结果插入到当前行以下

:r !sort phone会读取"phone"排序后的内容

使用命令过滤文本

把(缓冲区中)文本块作为标准输入发送给UNIX命令,该命令的输出将取代缓冲区中(对应)的文本.可以使用ex或vi的命令对文本进行过滤,区别在于:ex使用行地址指示文本块,vi使用文本目标(移动命令)指示文本块.

使用ex过滤文本

:28,34!sort    使用sort对第28行到第34行进行过滤,并用sort的输出取代这些行

使用vi过滤文本

在vi中,依次输入感叹号 任何指示文本块的vi移动键和所要执行的UNIX命令,即可使用该UNIX命令对文本进行过滤,例如:

!)command    表示过滤该句

由于都是行过滤,因此需要选择的范围 >1才会有效果,实际上都是将你选择的范围转换为行后通过n!!command命令转发的

重复前面命令的语法是:!object!

posted on 2011-10-22 13:56  Observer  阅读(979)  评论(0编辑  收藏  举报

导航