1、第三章 编辑UNIX的文本文件,概述,编辑工具:用户可以完成文本文件、数据库文件、源程序代码的编写与创建。 常用的编辑工具 ed:早期的UNIX系统中的行编辑器 ex:ed的替代产品 edit:ex的简化版本 vi:全屏幕编辑器,在ex上发展改进而来的 Emacs:可视化文本编辑环境 xemacs:可视化编辑工具,具有图形用户界面,标准编辑器ed,特点 有很强的通用性,文件在新的编辑环境中不需要额外的修改 在模式匹配上采用正则表达式方式 运行速度快,操作简单,占用存储空间比较小,使用ed的基本常识,ed在进行文本编辑时,是在该文件的编辑副本上工作的,若要保存,可以采用显式存储命令存储。 ed命
2、令是单字符,命令前面会允许输入一个或两个行号表示该命令所涉及的行。若无行号说明,则表示操作当前行。$ 表示最后一行 表示首行. 表示当前行,元字符和正则表达式,在ed中,当有些字符出现在搜索模式或s命令左边时,具有特殊的含义,称为“元字符”。 使用元字符进行匹配的模式称为“正则表达式”。,如何进入ed、退出ed及保存文本文件,进入ed 在shell中用ed命令启动ed编辑器。 格式:ed option file 功能:用于编辑一个新的或已经存在的文本文件 保存文件 使用w命令保存新文件或覆盖旧文件; 使用W命令追加新内容到文件。 退出ed 使用q命令,ed的常用命令,ed的命令格式addr1
3、addr2 command parameter,全屏幕编辑器vi,vi(visual interpreter)是一个全屏幕编辑平台,一次可容纳20多行的编辑内容,并可进行上下屏滚动。但可编辑的文件大小有限制。,进入vi、退出vi及保存文件,命令行方式:用户进入vi后的初始方式。 插入编辑方式:要使用vi的“i”“a”等命令进行切换,点击ESC键返回命令行方式。主要是在编写的文件中添加或输入文本及程序代码。 末行命令方式:命令输入出现在屏幕的最底部,命令输入完之后,vi自动返回到命令行方式。,进入vi、退出vi及保存文件,vi多种工作方式的转换关系,命令行方式下的常用命令,命令行方式下的常用命令
4、,末行命令方式下的常用命令,末行命令方式下的常用命令,进入插入编辑方式的常用命令,进入插入编辑方式的常用命令,vi的多种使用方式容易产生混乱 vi的编辑屏幕刷屏Ctrl+l或Ctrl+r 对屏幕中的信息操作时系统没有反应,可用Ctrl+q解脱 文件编辑完后不能正确退出vi,可用“:w newfile”先保存文件 使用vi掉电后,下次登录用-r恢复,启动vi格式:vi filename 如果filename已经存在,vi就在屏幕显示该文件的第一页;如果是新文件,vi就清屏,显示vi的黑屏。注意: 状态行显示文件名,冰指明它是一个新文件。,为了输入文本,必须使vi编辑器处于文本输入模式,按i键。推
5、出vi为了保存vi创建或编辑的文件,必须使vi处于命令模式。按【esc】保存文件和退出的命令都以(:)开头。Vi编辑器的反馈显示在屏幕的最后一行,它依次显示文件名、行数、文件中的字符数。,实例,练习使用i键 输入vi myfirst 按【Esc】键,保证vi处于命令模式 使用光标移动键,将光标放在most的字母m上。 按i键,使vi进入文本输入模式。输入9三次,练习使用I键 输入vi myfirst 按【Esc】键,保证vi处于命令模式 使用光标移动键,将光标放在supported的字母s上。 按i键,使vi进入文本输入模式。输入9三次,练习使用a键 输入vi myfirst 按【Esc】键,
6、保证vi处于命令模式 使用光标移动键,将光标放在most的字母m上。 按a键,使vi进入文本输入模式。输入9三次光标在字母o上,练习使用A键 输入vi myfirst 按【Esc】键,保证vi处于命令模式 使用光标移动键,将光标放在most的字母o上。 按A键,使vi进入文本输入模式。输入9三次光标移到了行尾,新添一行:使用o或O 练习使用o键 输入vi myfirst 按【Esc】键,保证vi处于命令模式 使用光标移动键,将光标放在supported的字母s上。 按o键,使vi进入文本输入模式,在当前行下面添加一行,并且光标移到新行的行首。输入9三次,练习使用O键 输入vi myfirst
7、按【Esc】键,保证vi处于命令模式 使用光标移动键,将光标放在supported的字母s上。 按O键,使vi进入文本输入模式,在当前行上面添加一行,并且光标移到新行的行首。输入9三次,练习使用I键 输入vi myfirst 按【Esc】键,保证vi处于命令模式 使用光标移动键,将光标放在supported的字母s上。 按i键,使vi进入文本输入模式。输入9三次,删除字符 练习使用x键 输入vi myfirst 按【Esc】键,保证vi处于命令模式 使用光标移动键,将光标放在most的字母m上。 按x键,vi编辑器删除m,光标移到m右边的字母o上,vi仍处在命令模式下。按x三次,依次删除o,s
8、,和t,输入5x,vi编辑器删除5个字符,光标移到字母h上注意:其他的vi命令也可以重复使用,例如dd用于删除一行,3dd用于删除3行,练习使用d键 输入vi myfirst 按【Esc】键,保证vi处于命令模式 使用光标移动键,将光标放在most的字母m上。按d键两次,vi编辑器删除当前行,无论光标处于该行的哪个位置。按u键,vi 编辑器撤销上一次的删除,文本替换,练习使用r键 输入vi myfirst 按【Esc】键,保证vi处于命令模式 使用光标移动键,将光标放在most的字母m上。 按r键,替换光标位置的字符。输入9,按R键,替换从光标位置开始的字符,vi编辑器进入文本输入模式。 输入
9、9三次,vi编辑器的光标位置后添加三个9,覆盖ost,vi编辑器仍处于文本输入模式。按【esc】键,改变vi到命令模式,按U,撤销对当前行所做所有修改。,搜索字符串:使用/和?键,/和?分别用了在文件中向前和向后搜索。 在命令模式下,按/键,vi在屏幕底部显示/,把那个等待命令的其他部分。当按了【Return】键后,vi编辑器就从光标当前位置开始,向前搜索字符。 如搜索unix,重复前一次操作:用(.)点键,.键用来在命令模式下重复最近一次对文本的修改操作。 实例: 输入vi myfirst 按【Esc】键,保证vi处于命令模式 使用光标移动键,将光标放在most的字母m上。 按dd键,删除当
10、前行,光标移到上一行行首,按.键,vi编辑器重复上一次文本修改操作。删除当前行,光标移到上一行行首。Vi仍处于命令模式。,Vi操作域的使用,部分操作域的使用 域 功能 $ 标示域从光标位置开始到当前行尾 0(零) 标示域从光标位置开始到当前行首 e 或w 标示域从光标位置开始到当前字尾 b 标示域从光标位置开始到当前字首 命令格式为: 命令=操作符+域,实例:删除从光标位置开始到当前行尾的文本按d$,vi删除 从光标位置开始到当前行尾的文本,并将光标移到字by后面的空格,数字编号缓冲区,Vi编辑器使用9个临时缓冲区,编号从1到9,每次删除或复制的文件都放在这些缓冲区着那个,用户指定缓冲区号就可
11、以访问任何一个缓冲区。每次新删除或复制的文本替换缓冲区以前的内容。 用put操作符,并在它前面加上缓冲区号就可以找回数字编号缓冲区的内容。 指定缓冲区的格式可以表示为: 双引号+n(其中,n是缓冲区号,取1到9)+p,如创建buffer文件,内容如下:,将光标点位在第一行上,使用删除命令dd删除当前行,,使用删除命令一次删除两行被删除的两行保存在同一个缓冲区中。数字缓冲区可以保存用户修改的任意大小的文件。,输入yy(复制一行文本命令),如复制缓冲区2的内容到文件尾,可输入”2p,vi 环境的设置,1、临时更改vi的环境 每次进入vi都是默认值,用户可以按照自己的要求修改 修改是临时性的,对下一
12、次的使用不产生影响 查看默认选项,可键入命令:set all 更改选项值,可键入命令:set option 撤销某个编辑器选项,可键入命令:set no option,vi 环境的设置,1、临时更改vi的环境 :set nu 显示行号 :set nonu 不显示行号 :set ic 查找忽略大小写 :set noic 查找对大小写敏感 :set list 显示不可见字符,例I代表Tab,$代表行末 :set nolist 不显示不可见字符 :set showmode 显示当前的操作模式 :set noshowmode 关闭当前的显示操作模式 :set 显示已经设置了的变量,vi 环境的设置,2、永久改变vi的环境 % cd % vi .exrcset wm=8 *右边距自动包含8个空格set showmode *处于文本插入模式时,屏幕右下角将显示“input mode”ab eeg electrical engineering *无论何时输入eeg,此缩写都会自动扩展成electrical engineering,取消缩写用unab操作符 如unab eeg确定后再看,