Presentation is loading. Please wait.

Presentation is loading. Please wait.

第 3 章 UNIX 文本编辑程序. 第3章 第2页第3章 第2页 UNIX 的文本编辑程序 常用的文本编辑器  行编辑 ed  全屏幕编辑 vi 使用场合  行编辑 ed 常用于脚本程序中,使用输入重定向  例如:安装软件时,用来修改系统配置文件  vi 用于人机交互式编辑文本文件.

Similar presentations


Presentation on theme: "第 3 章 UNIX 文本编辑程序. 第3章 第2页第3章 第2页 UNIX 的文本编辑程序 常用的文本编辑器  行编辑 ed  全屏幕编辑 vi 使用场合  行编辑 ed 常用于脚本程序中,使用输入重定向  例如:安装软件时,用来修改系统配置文件  vi 用于人机交互式编辑文本文件."— Presentation transcript:

1 第 3 章 UNIX 文本编辑程序

2 第3章 第2页第3章 第2页 UNIX 的文本编辑程序 常用的文本编辑器  行编辑 ed  全屏幕编辑 vi 使用场合  行编辑 ed 常用于脚本程序中,使用输入重定向  例如:安装软件时,用来修改系统配置文件  vi 用于人机交互式编辑文本文件

3 第3章 第3页第3章 第3页 vi 的启动方法 命令格式  vi 文件名列表 后边可以指定 0 个或者多个文件 例如 vi try.c

4 第3章 第4页第3章 第4页 设置 vi 选项( 1 ) vi 有 40 多个选项控制 vi 的运行, 有两种设定方法 使用.exrc 文件  vi 启动时自动读取用户主目录下文件.exrc 获取自设 定的 vi 选项  例如:文件.exrc 中含有如下两行:  set number 每一行时,在左边列出行号  set showmode 在屏幕右下角标志出当前状态

5 第3章 第5页第3章 第5页 设置 vi 选项( 2 ) 在 vi 中键入 set 命令  命令格式  设置选项 :set option  取消选项 :set no option  例如  :set number 每行左边列出行号  :set nonumber 每行左边不列出行号  :set showmode 屏幕右下脚标出当前状态  :set noshowmode 屏幕右下脚不标出当前状态  :set all 列出所有开关的当前状态

6 第3章 第6页第3章 第6页 vi 的两种工作状态( 1 ) 命令状态:键盘输入解释为命令  vi 一启动就进入命令方式,键盘输入解释为命令  一般按键无回显  以冒号可以引入 ex 命令和查找命令  编辑命令 i a 等,可以从命令状态转到文本状态

7 第3章 第7页第3章 第7页 vi 的两种工作状态( 2 ) 文本状态  键盘输入解释为输入的文本  可以输入多行,每输入完一行后按回车转入下一行  正文输入时有回显  输入完毕按键盘左上角的 Esc 键,返回到命令状态

8 基本编辑命令

9 第3章 第9页第3章 第9页 正文插入 命令 i  在当前字符前插入正文段,直至按 Esc 键 (insert) 命令 a  在当前字符后插入正文段,直至按 Esc 键 (append) 命令 o  在当前行后插入正文段,直至按 Esc 键 (open) 命令 O  在当前行前插入正文段,直至按 Esc 键 (open)

10 第 3 章 第 10 页 光标单字符移动 单字符移动(四个字母键盘上相邻的按键)  h 光标左移一列  j 光标下移一行  k 光标上移一行  l 光标右移一列  有的终端可以直接使用键盘上的方向键代替这四个字母 命令前加一整数,表示这个命令连续执行多少遍  5h 光标左移 5 列  6j 光标下移 6 行  23k 光标上移 23 行  10l 光标右移 10 列  注意:在 vi 命令状态下的按键命令没有回显

11 第 3 章 第 11 页 翻页 命令  Ctrl-b 向后翻页 (Backward)  Ctrl-f 向前翻页 (Forward)  Ctrl-u 向上翻半页 (Up)  Ctrl-d 向下翻半页 (Down) 注意  vi 把文件尾方向定义为向前,文件头方向定义为向后  有的键盘用 PgDn 键代替 Ctrl-f ,用 PgUp 键代替 Ctrl-b  也可以使用下面的命令  6Ctrl-f 向前翻 6 页  15Ctrl-b 向后翻 15 页

12 第 3 章 第 12 页 光标行内快速移动 行尾行首  将光标移至当前行首 ^  将光标移至当前行尾 $ 移动一个单词  移到右一个单词 w W  移到左一个单词 b B  也可以使用 6w 3W 5b 10B 命令 wb 与 WB 区别:对 “ 单词 ” 分界符的定义不同  wb 命令:非字母,数字,下划线之外的字符  WB 命令:仅以空白符(空格 / 制表符 / 回车)

13 第 3 章 第 13 页 光标移动到指定行 移到指定的行  :476 将光标定位于第 476 行  :1 将光标定位于第 1 行(文件首)  :$ 将光标定位于文件尾  :$-10 将光标定位于文件倒数第 10 行 在描述行号时可以使用  圆点(. )代表当前行号,  $ 代表最后一行的行号 括号配对 %  把光标移到一个花括号 ( 或圆括号,或方括号 ) 上, 按 % 键,则光标自动定位到与它配对的那一个括号

14 第 3 章 第 14 页 删除命令和剪贴板 注:被删除的内容进入剪贴版 删除字符  删除当前字符的命令 x  命令 5x 删除从当前光标开始的 5 个字符 删除行  删除当前行的命令 dd  命令 3dd 删除从当前行开始的 3 行 删除块  删除到配对括号命令:将光标定位在括号上 d% 复制到剪贴板 yank( 不删除,只拷贝到剪贴板 )  yy 与 y%  paste 取出剪贴板中内容 p

15 第 3 章 第 15 页 字符替换 替换光标处字符 r  ra 命令将当前光标处字符替换为 a  将当前光标处开始的三个字符依次替换为 abc ,则 需要按命令 rarbrc 替换若干字符 R  例:命令 Rabcdef ,然后按 Esc 键  该命令把从当前光标开始的字符依次替换为 abcdef , 用 Esc 来结束多字符替换命令

16 第 3 章 第 16 页 取消和重复 取消上一次的编辑操作 (undo) u  如:误删了一段正文,用 u 命令可撤销删除  如:把文件中的所有 abc 字符串替换成 xyz 字符串, 用 u 命令可撤销替换 重复上一次的编辑操作.  按圆点键,可以重复上一次的编辑操作  例如:按 3dd 命令删除了三行,然后按圆点键就再 删除三行,接着连续按圆点键,每按一次删三行

17 第 3 章 第 17 页 文件操作命令 存盘退出  ZZ  :wq 存盘不退出  :w 不存盘退出  :q! 读入文件 xyz.c 插入到当前行之下  :r xyz.c 写文件, 把第 50 行至文件尾的内容写到文件 file1 中  :50,$w file1  :50,$w! file1 强制覆盖

18 第 3 章 第 18 页 块操作 删除,并拷贝到剪贴板  :10,50d 删除第 10-50 行  :1,.d 删除文件首至当前行的部分  :.,$d 删除当前行到文件尾 不删除,拷贝到剪贴板  :10,50y 复制  :5,10co56 复制第 5-10 行到第 56 行之下 移动  :8,34m78 移动第 8-34 行到第 78 行之下

19 第 3 章 第 19 页 行合并、刷屏和状态显示 两行合并 (Join) J  当前行下面的行合并到当前行 刷新屏幕显示 (load) Ctrl-l 状态显示 Ctrl-g  在屏幕最下面一行列出正在编辑的文件的名字,总 行数,当前行号,文件是否被修改过等信息

20 查找与替换

21 第 3 章 第 21 页 模式查找 用 “ 正则表达式 ” 来描述一个字符串模式 查找命令 /  格式 /pattern  例: /[0-9][0-9]* 继续查找命令  n 向下查找下一个 next  N 向上查找下一个  循环式搜索

22 第 3 章 第 22 页 模式替换 (1) 替换命令 (substitution)  格式 : n1, n2 s/ pattern / string /g  例  :1,50s/abc/xyz/  :1,50s/abc/xyz/g  :50,80s/^// 第 50-75 行右移 4 列  :50,80s/^// 第 50-75 行左移 4 列  :1,$s/ *$// 消除尾部多余的空格  :1,$s/a[i]/b[j]/g 不能把 a[i] 替换为 b[j]  :1,$/a*b/x+y/g

23 第 3 章 第 23 页 模式替换 (2) 替换字符串中字符 & 代表被模式所匹配的那部分  例 设文件当前只含有 2 行,每行为一个整数,内容为 5 6 10 执行命令 :1,$s/[0-9][0-9]*/192.168.24.& host&/ 192.168.24.5 host5 192.168.24.6 host6 192.168.24.10 host10

24 第 3 章 第 24 页 模式替换中的转义符 尤其是编辑 C 语言源程序时需要 将 a[i]*b[j] 替换为 x[k]*y[n] 的命令  :1,$s/a\[i]\*b\[j]/x[k]*y[n]/g 将 buf.len/1000 替为 buffer.size/1024 的命令  :1,$s/buf\.len\/1000/buffer.size\/1024/g  模式串和替换字符串中的斜线前加转义符 \ 以区别 于替换命令格式中所必须的斜线 将 *pointer 替换为 &record :1,$s/\*pointer/\&record/g

25 第 3 章 第 25 页 更灵活的替换 (1) 模式描述中增加 \( 和 \)  在正则表达式中圆括号,仍然代表它自身  在正则表达式中出现的 \( 和 \) 不影响匹配操作 例  [a-zA-Z_][a-zA-Z0-9_]*->number  \([a-zA-Z_][a-zA-Z0-9_]*\)->number 替换字符串中的 \0 \1 \2 ……

26 第 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-9][0-9]\)-\([0-9][0-9]\)-\([0-9][0-9]*\)/\3.\1.\2/g 替换字符串中的 & 可以用 \0 代替 :1,$s/[0-9][0-9]*/192.168.24.& host&/ 也可以用 :1,$s/[0-9][0-9]*/192.168.24.\0 host\0/

27 第 3 章 第 27 页 其他软件中的应用 其他软件也使用正则表达式实现灵活的字符串 匹配与替换  UNIX 命令 ed , sed , expr  Cisco 路由器的 IOS 配置  Windows 的 Visual C++ 的编辑器  不同软件中的正则表达式定义可能会有些差别


Download ppt "第 3 章 UNIX 文本编辑程序. 第3章 第2页第3章 第2页 UNIX 的文本编辑程序 常用的文本编辑器  行编辑 ed  全屏幕编辑 vi 使用场合  行编辑 ed 常用于脚本程序中,使用输入重定向  例如:安装软件时,用来修改系统配置文件  vi 用于人机交互式编辑文本文件."

Similar presentations


Ads by Google