1 / 29

UNIX 的文本编辑程序

UNIX 的文本编辑程序. 常用的文本编辑器 1. 行编辑 ed 2. 全屏幕编辑 vi 使用场合 1. 行编辑 ed 常用于批处理程序中,使用输入重定向,软件安装时,用来修改系统配置文件 2. vi 用于人机交互式编辑文本文件. vi 的启动方法. 命令格式: vi 文件名列表 后边可以指定 0 个或者多个文件 例如: vi try.c. 设置 vi 的选项:批命令文件. vi 有 40 多个选项控制 vi 的运行。 两种设定方法 1. 用 .exrc 文件控制

judd
Download Presentation

UNIX 的文本编辑程序

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. UNIX的文本编辑程序 常用的文本编辑器 1. 行编辑ed 2.全屏幕编辑vi 使用场合 1. 行编辑ed常用于批处理程序中,使用输入重定向,软件安装时,用来修改系统配置文件 2. vi用于人机交互式编辑文本文件

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

  3. 设置vi的选项:批命令文件 vi有40多个选项控制vi的运行。 两种设定方法 1. 用.exrc文件控制 vi启动时自动读取用户主目录下文件.exrc获取自设定的vi选项 如:建立文件.exrc,其中含有如下两行: set number set showmode 其中第一条命令使得vi在列出每一行时,在左边列出行号。第二条命令使得vi在屏幕右下角标志出当前状态。

  4. 设置vi的选项:交互配置 2.在vi中使用set命令 :set number 每行左边列出行号 :set showmode 屏幕右下脚标出当前状态 :set nonumber 每行左边不列出行号 :set noshowmode屏幕右下脚不标出当前状态 :set all 列出所有开关的当前状态 一般的,设置选项的命令格式为 :setxxx 取消选项的命令格式分别为 :set noxxx

  5. vi的工作方式 命令方式和输入方式。vi一启动就进入命令方式。

  6. vi的工作方式的切换 (1)命令方式 用户键入的内容被当作vi的命令来解释,一般处于命令方式下按键无回显,以冒号打头引入的ex命令和查找命令除外 (2)文本输入方式 编辑命令i,a等,可以从命令方式转到输入方式。 处于输入方式时,用户键入的所有内容全部作为输入的正文内容,用户可以输入多行,每输入完一行后按回车转入下一行,正文输入时有回显。 输入完毕按键盘左上角的Esc键,返回到命令方式。

  7. vi的命令:正文插入 命令i: 在当前光标处插入正文段,直至按Esc键(insert) 命令a: 在当前光标后插入正文段,直至按Esc键(append) 命令o: 在当前行后插入正文段,直至按Esc键(open)

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

  9. vi命令:翻页 .命令 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页

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

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

  12. vi命令:删除命令和剪贴板 被删除的内容进入剪贴版 ---- 删除当前字符的命令:x 类似的,命令5x删除从当前光标开始的5个字符。 ---- 删除当前行的命令:dd 类似的,命令3dd删除从当前行开始的3行。 ---- 删除到配对括号命令:先将光标定位在括号上 d% ---- yank: yy与y% 不删除,只拷贝到剪贴板 ---- paste取出剪贴板中内容: p

  13. vi命令:字符替换 ---- 替换光标处字符:r 例:ra命令将当前光标处字符替换为a。 如果希望将当前光标处开始的三个字符依次替换为abc,则需要按命令rarbrc。 ---- 替换若干字符R 例:命令Rabcdef,然后按Esc键 该命令把从当前光标开始的字符依次替换为abcdef,用Esc来结束多字符替换命令。

  14. vi命令:取消操作和重复操作 取消上一次的编辑操作(undo)和重复上一次的编辑操作 ---- 命令u 取消上一次的编辑操作 例如:误删了一段正文,用u命令可恢复到删除前的状态。 再如:把文件中的所有abc字符串替换成xyz字符串, 用u命令可恢复到替换前状态。 ---- 命令. 重复上一次的编辑操作 按圆点键,可以重复上一次的编辑操作。 例如:按3dd命令删除了三行,然后按圆点键就再删除三行,如果接着连续按圆点键,则每按一次删除三行。

  15. vi命令:文件命令 ---- 存盘退出 ZZ 存盘退出 :wq<CR> ---- 存盘不退出 :w<CR> ---- 不存盘退出 :q!<CR> ---- 读入一个文件插入到当前行之下 :r a.c<CR> ---- 写文件 把第50行至文件尾的内容写到文件xxx中 :50,$w xxx<CR> :50,$w! Xxx<CR>强制覆盖

  16. vi命令:块操作 ---- 删除,并拷贝到剪贴板 :10,50d<CR> 删除第10-50行 :1,.d<CR> 删除文件首至当前行的部分 :.,$d<CR>删除当前行到文件尾 ---- 不删除,拷贝到剪贴板 :10,50y<CR> ---- 复制 :5,10co56<CR> 复制第5-10行到第56行之下 ---- 移动 :8,34m78<CR> 移动第8-34行到第78行之下。

  17. vi命令:刷屏和状态显示 ---- 两行合并J 把当前行下面的行合并到当前行。 ---- 刷新屏幕显示Ctrl-l ---- 状态显示 Ctrl-g 在屏幕最下面一行列出正在编辑的文件的名字,总行数,当前行号,文件是否被修改过等信息。

  18. vi命令:模式查找 使用“正则表达式”来描述一个字符串模式。 ----查找命令 格式 /模式 例:/[0-9][0-9]* ----继续查找命令n: 向下查找下一个next(循环搜索) 继续查找命令N: 向上查找 循环搜索

  19. vi命令:模式替换 ---- 替换命令 (substitution) 格式 :n1,n2s/模式/替换字符串/g 例1 :1,50s/abc/xyz/ :1,50s/abc/xyz/g 例2 把一部分行右移/左移四列 :50,80s/^// 第50-75行右移4列 :50,80s/^// 第50-75行左移4列 ---- 在替换字符串中字符&代表被模式所匹配的那部分 例3 设文件当前只含有2行,每行为一个整数,内容为 5 10 执行下列命令之后 :1,$s/[0-9][0-9]*/192.168.24.& host&/ 192.168.24.5 host5 192.168.24.10 host10

  20. vi命令:模式替换中的转义符 尤其是在编辑C语言源程序时。下面的例子中的转义符\是必不可少的。 (1)将a[i]*b[j]替换为x[k]*y[n]的命令为 :1,$s/a\[i]\*b\[j]/x[k]*y[n]/g (2)buf.len/1000替为buffer.size/1024的命令: :1,$s/buf\.len\/1000/buffer.size\/1024/g 模式串和替换字符串中的斜线前加转义符\,以区别于替换命令格式中所必须的斜线 (3)将*pointer替换为&record :1,$s/\*pointer/\&record/g

  21. UNIX文件和目录的布局 与系统有关的一些主要目录的取名和在层次结构中的位置,几乎在所有UNIX中都相同(惯例) /unix文件: unix内核 /etc目录: 供系统维护管理用的命令和配置文件. passwd,hosts文件: default目录: issue文件:登录前在login之上的提示信息 motd文件: 登录成功后的显示信息 conf目录:构成UNIX 内核的各目标模块,重构内核所需要的工具 rc.d目录: 开机时自动执行的命令的集合,又分成0,1,2,...,9十个阶段,分别对应10个目录 系统维护命令:fsck,mount,shutdown,。。。

  22. UNIX文件和目录的布局(续) /tmp : 存放临时文件 /bin : 系统常用命令,如ls,ln,cp,cat等 /dev : 存放设备文件,如终端设备,磁带机,打印机等. /usr/include : C语言头文件存放目录 /usr/tmp : 存放临时文件 /usr/bin : 存放一些常用命令,如ftp,make等 /lib,/usr/lib : 存放各种库文件,指C语言的链接库文件,以及terminfo终端库等等。 /usr/spool : 存放与用户有关的一些临时性文件,如:打印队列,已收到但未读的邮件等等。

  23. UNIX文件和目录的命名 命名规则 (1)名字长度: 允许1-255字符 有些UNIX不支持长文件名,但至少长度为1-14 (2)取名的合法字符 除斜线外的所有字符都是命名的合法字符 甚至不可打印字符也可以做文件名 斜线留做路径名分割符 (3)大小写字母有区别

  24. shell的文件通配符规则 (1)* 匹配任意长度(包括空字符串) 点字符(.),当它作为文件名或路径名分量的第一个字符时,必须显式匹配,斜线(/)也必须显式匹配。例:*file匹配file,makefile,不匹配.profile文件 try*c 匹配try1.c try.c try.basic (2) ? 匹配任一单字符 [] 匹配括号内任一字符,也可以用减号指定一个范围 例: [A-Z]* *.[ch] [Mm]akefile 注意:(1)文件名通配符规则与正则表达式的规则不同 (2)不同shell通配符规则有差别

  25. 与DOS文件通jh配符的区别 例1:UNIX的文件通配符要比DOS中严谨,无二义性 设当前目录下有文件 xcom.exe xcom.c xcom.obj 在DOS中 DIR XCOM* 会列出三个文件 DEL XCOM* 删不掉上述任何文件 在UNIX中不然,不存在二义性解释 ls xcom* 会列出三个文件 rm xcom* 会删除三个文件 例2: DOS中*.* 匹配所有文件 UNIX中*.* 要求文件名中必须含有圆点,否则不匹配 如: *.*与makefile不匹配

  26. 与DOS文件通配符的区别(续) 例3: 在DOS中,无法使用通配串*temp* 在UNIX中对*temp*严格按前述规则去理解,而且 *temp*list*也可用的 例4:在UNIX中可以使用*/*.[ch]通配符,在DOS中不许 例5:在UNIX中,文件通配符允许用于任何命令,而DOS中只能用于dir/del/copy等有限的几个命令中 UNIX中, 命令cat *.c可以列出所有的.C文件内容 DOS中, 命令TYPE *.c不可

  27. shell文件名通配的过程 文件名通配由shell完成 (1)在shell提示符下,从键盘输入命令,被shell接受 (2)shell对所键入的内容作若干种加工处理,其中含有对文件通配符的扩展工作(文件名生成),生成结果命令。 (3)执行(2)生成的结果命令。

  28. shell文件名通配举例 (1)设当前目录下只有try.c, zap.c, arc.c三文件, 键入内容 cat *.c 实际执行 cat arc.c try.c zap.c (按字典序) 对于命令cat来说,指定了3个文件 (2) grep a*.c try.c与grep 'a*.c' try.c的区别 (3) vi m*e ---> vi makefile (4) cd *work.d ---> cd configure_network.d

  29. 验证shell文件名通配的结果 • shell文件名通配举例,文件arg.c • main(argc,argv) • int argc; • char **argv; • { • int i; • for(i=0;i<argc;i++) • printf("%d:[%s]\n",i,argv[i]); • } • 执行:./arg * • ./arg /usr/include/* • ./arg */* /usr/* • 将执行结果与同样的arg.c在DOS下执行结果相比较

More Related