《文本编辑程序课件》由会员分享,可在线阅读,更多相关《文本编辑程序课件(27页珍藏版)》请在金锄头文库上搜索。
1、第3章 UNIX文本编辑程序,第3章 第2页,UNIX的文本编辑程序,常用的文本编辑器 行编辑ed 全屏幕编辑vi 使用场合 行编辑ed常用于脚本程序中,使用输入重定向 例如:安装软件时,用来修改系统配置文件 vi用于人机交互式编辑文本文件,第3章 第3页,vi的启动方法,命令格式 vi 文件名列表 后边可以指定0个或者多个文件 例如 vi try.c,第3章 第4页,设置vi选项(1),vi有40多个选项控制vi的运行,有两种设定方法 使用.exrc文件 vi启动时自动读取用户主目录下文件.exrc获取自设定的vi选项 例如:文件.exrc中含有如下两行: set number 每一行时,在
2、左边列出行号 set showmode 在屏幕右下角标志出当前状态,第3章 第5页,设置vi选项(2),在vi中键入set命令 命令格式 设置选项 :set option 取消选项 :set nooption 例如 :set number 每行左边列出行号 :set nonumber 每行左边不列出行号 :set showmode 屏幕右下脚标出当前状态 :set noshowmode屏幕右下脚不标出当前状态 :set all 列出所有开关的当前状态,第3章 第6页,vi的两种工作状态(1),命令状态:键盘输入解释为命令 vi一启动就进入命令方式,键盘输入解释为命令 一般按键无回显 以冒号可以
3、引入ex命令和查找命令 编辑命令 i a 等,可以从命令状态转到文本状态,第3章 第7页,vi的两种工作状态(2),文本状态 键盘输入解释为输入的文本 可以输入多行,每输入完一行后按回车转入下一行 正文输入时有回显 输入完毕按键盘左上角的Esc键,返回到命令状态,基本编辑命令,第3章 第9页,正文插入,命令 i 在当前字符前插入正文段,直至按Esc键(insert) 命令 a 在当前字符后插入正文段,直至按Esc键(append) 命令 o 在当前行后插入正文段,直至按Esc键(open) 命令 O 在当前行前插入正文段,直至按Esc键(open),第3章 第10页,光标单字符移动,单字符移动
4、(四个字母键盘上相邻的按键) h 光标左移一列 j 光标下移一行 k 光标上移一行 l 光标右移一列 有的终端可以直接使用键盘上的方向键代替这四个字母 命令前加一整数,表示这个命令连续执行多少遍 5h 光标左移5列 6j 光标下移6行 23k 光标上移23行 10l 光标右移10列 注意:在vi命令状态下的按键命令没有回显,第3章 第11页,翻页,命令 Ctrl-b 向后翻页(Backward) Ctrl-f 向前翻页(Forward) Ctrl-u 向上翻半页(Up) Ctrl-d 向下翻半页(Down) 注意 vi把文件尾方向定义为向前,文件头方向定义为向后 有的键盘用PgDn键代替Ctr
5、l-f,用PgUp键代替Ctrl-b 也可以使用下面的命令 6Ctrl-f 向前翻6页 15Ctrl-b 向后翻15页,第3章 第12页,光标行内快速移动,行尾行首 将光标移至当前行首 将光标移至当前行尾 $ 移动一个单词 移到右一个单词 w W 移到左一个单词 b B 也可以使用6w 3W 5b 10B命令 wb与WB区别:对“单词”分界符的定义不同 wb命令:非字母,数字,下划线之外的字符 WB命令:仅以空白符(空格/制表符/回车),第3章 第13页,光标移动到指定行,移到指定的行 :476 将光标定位于第476行 :1 将光标定位于第1行(文件首) :$ 将光标定位于文件尾 :$-10将
6、光标定位于文件倒数第10行 在描述行号时可以使用 圆点(.)代表当前行号, $ 代表最后一行的行号 括号配对 % 把光标移到一个花括号(或圆括号,或方括号)上,按%键,则光标自动定位到与它配对的那一个括号,第3章 第14页,删除命令和剪贴板,注:被删除的内容进入剪贴版 删除字符 删除当前字符的命令 x 命令5x删除从当前光标开始的5个字符 删除行 删除当前行的命令 dd 命令3dd删除从当前行开始的3行 删除块 删除到配对括号命令:将光标定位在括号上 d% 复制到剪贴板yank(不删除,只拷贝到剪贴板) yy与y% paste取出剪贴板中内容 p,第3章 第15页,字符替换,替换光标处字符 r
7、 ra命令将当前光标处字符替换为a 将当前光标处开始的三个字符依次替换为abc,则需要按命令rarbrc 替换若干字符 R 例:命令Rabcdef,然后按Esc键 该命令把从当前光标开始的字符依次替换为abcdef,用Esc来结束多字符替换命令,第3章 第16页,取消和重复,取消上一次的编辑操作(undo) u 如:误删了一段正文,用u命令可撤销删除 如:把文件中的所有abc字符串替换成xyz字符串, 用u命令可撤销替换 重复上一次的编辑操作 . 按圆点键,可以重复上一次的编辑操作 例如:按3dd命令删除了三行,然后按圆点键就再删除三行,接着连续按圆点键,每按一次删三行,第3章 第17页,文件
8、操作命令,存盘退出 ZZ :wq 存盘不退出 :w 不存盘退出 :q! 读入文件xyz.c插入到当前行之下 :r xyz.c 写文件,把第50行至文件尾的内容写到文件file1中 :50,$w file1 :50,$w! file1 强制覆盖,第3章 第18页,块操作,删除,并拷贝到剪贴板 :10,50d 删除第10-50行 :1,.d 删除文件首至当前行的部分 :.,$d 删除当前行到文件尾 不删除,拷贝到剪贴板 :10,50y 复制 :5,10co56复制第5-10行到第56行之下 移动 :8,34m78移动第8-34行到第78行之下,第3章 第19页,行合并、刷屏和状态显示,两行合并(J
9、oin) J 当前行下面的行合并到当前行 刷新屏幕显示(load) Ctrl-l 状态显示 Ctrl-g 在屏幕最下面一行列出正在编辑的文件的名字,总行数,当前行号,文件是否被修改过等信息,查找与替换,第3章 第21页,模式查找,用“正则表达式”来描述一个字符串模式 查找命令 格式 /pattern 例: /0-90-9* 继续查找命令 n 向下查找下一个next N 向上查找下一个 循环式搜索,第3章 第22页,模式替换(1),替换命令 (substitution) 格式 :n1,n2s/pattern/string/g 例 :1,50s/abc/xyz/ :1,50s/abc/xyz/g
10、:50,80s/ 第50-75行右移4列 :50,80s/ 第50-75行左移4列 :1,$s/ *$/ 消除尾部多余的空格 :1,$s/ai/bj/g 不能把ai替换为bj :1,$/a*b/x+y/g :1,$/.$/g :1,$/M/g,第3章 第23页,模式替换(2),替换字符串中字符&代表被模式所匹配的那部分 例 设文件当前只含有2行,每行为一个整数,内容为 5 6 10 执行命令 :1,$s/0-90-9*/192.168.24.& host&/ 192.168.24.5 host5 192.168.24.6 host6 192.168.24.10 host10,第3章 第24页,
11、模式替换中的转义符,尤其是编辑C语言源程序时需要 将ai*bj替换为xk*yn的命令 :1,$s/ai*bj/xk*yn/g 将buf.len/1000替为buffer.size/1024的命令 :1,$s/buf.len/1000/buffer.size/1024/g 模式串和替换字符串中的斜线前加转义符以区别于替换命令格式中所必须的斜线 将*pointer替换为&record :1,$s/*pointer/&record/g,第3章 第25页,更灵活的替换(1),模式描述中增加(和) 在正则表达式中圆括号,仍然代表它自身 在正则表达式中出现的(和)不影响匹配操作 例 a-zA-Z_a-zA
12、-Z0-9_*-number (a-zA-Z_a-zA-Z0-9_*)-number 替换字符串中的 0 1 2 ,第3章 第26页,更灵活的替换(2),将“变量名-number”替换为“变量名-num” :1,$s/(a-zA-Z_a-zA-Z0-9_*)-number/1-num/g 将日期格式“月-日-年”改为“年.月.日”, 比如:将 04-26-1997替换为1997.04.26使用命令: :1,$s/(0-90-9)-(0-90-9)-(0-90-9*)/3.1.2/g 替换字符串中的&可以用0代替 :1,$s/0-90-9*/192.168.24.& host&/ 也可以用 :1,$s/0-90-9*/192.168.24.0 host0/,第3章 第27页,其他软件中的应用,其他软件也使用正则表达式实现灵活的字符串匹配与替换 UNIX命令 ed,sed,expr Cisco路由器的IOS配置 Windows的Visual C+的编辑器 不同软件中的正则表达式定义可能会有些差别,