• 1. 第五章 VI文本编辑器的使用
  • 2. 本章目标 掌握vi编辑器的三种模式以及切换的方式 熟练掌握vi编辑器的使用方法
  • 3. vi编辑器的使用vi是一种广泛存在于各种UNIX和Linux系统中的文本编辑程序 vi的功能十分强大,但是命令繁多,不容易掌握
  • 4. vi简介vi是标准的Linux文本编辑程序 vi不是基于窗口的,所以,这个多用途编辑程序可以用于在任何类型的终端上编辑各式各样的文件
  • 5. 启动vi在以下各节中,你将会学习如何启动vi,如何在一个文件中输入文本、如何保存文件、以及如何退出vi
  • 6. 创建一个文件vi paint 如果 paint已经存在,vi会打开现存文件 如果是一个新文件,vi会创建它
  • 7. 状态行屏幕的最后一行被称为状态行,用于显示文件名及文件中行和字符的个数
  • 8. vi的三种模式输入模式 命令模式 末行模式
  • 9. 输入模式vi被运行时,通常处在命令模式下 键入命令 i ,使vi退出命令模式,进入输入模式
  • 10. 命令模式在该模式中,可以输入命令来执行许多种功能 大多数的vi命令都是由一个或两个字母加上一个可选数字组成 以冒号开头的命令实际上是ex 命令,即进入末行模式进行保存、退出等操作
  • 11. 结束一个会话过程保存 :w后面接回车键 保存并退出 输入:wq后面接回车键 退出但不保存 输入:q后面接回车键
  • 12. :w filename 把文件存入指定文件 :n1,n2w filename 将从n1开始到n2结束的行写到文件中 :nw filename 将第n行写到文件中 :1,.w filename 将从第1行起到光标位置的所有内容写到文件中 :.,$w filename 将从光标位置起到文件结尾的所有内容写到文件中
  • 13. :r filename 打开另一个文件,追加到光标所在行的后面 :e filename 新建文件 :f filename 把当前文件复制为指定文件名
  • 14. 在文件中移动光标向左移动一个字符:按h 向右移动一个字符:按l 向下移动一行:按j 向上移动一行:按k 移动到当前行的开头处:按 ^ (即Shift+6) 移动到当前行的结尾处:按 $ (即Shift+4) 移动到顶部:按H(大写)使光标移动到屏幕的顶部 nH将光标移至当前屏幕第n行的行首 移动到中部:按M(大写)使光标移动到屏幕的中间 移动到底部:按L(大写)使光标移动到屏幕的底部 nL将光标移至当前屏幕的倒数第n行的行首
  • 15. 在文件中移动光标(续)向前翻页一屏:要向前滚动(向下移动)一整屏,需按下Ctrl-f。光标将移动到新屏的左上角 向前滚动半屏:要向前滚动半屏,需按Ctrl-d 向后翻页一屏:要向后滚动(即向上移动)一整屏,需按下Ctrl-b 向后滚动半屏:要向后滚动半屏,需按下Ctrl-u
  • 16. 把光标移动到较远的位置 目标行数 G 如:要把光标移到第500行 500 G 要到文件开头:1 G 移到文件尾:G 或者:1000 :1
  • 17. w 将光标右移至下一个字的字首 e 如果光标起始位置处于字内(即非字尾处),则该命令将把光标移到本字字尾;如果光标起始位置处于字尾,则该命令将把光标移动到下一个字的字尾 b 如果光标处于所在字内(即非字首),则该命令将把光标移至本字字首;如果光标处于所在字字首,则该命令将把光标移到上一个字的字首 0 移动到光标所在行的行首
  • 18. 插入文本添加: 输入a后,在光标的右边插入文本 输入A,在一行的结尾处添加文本 插入: 通过在命令模式下输入i,在光标的左边插入文本 通过在命令模式下输入I,在行首插入文本 插入新行: 输入o,在当前光标位置下面打开一行 输入O,在当前光标位置上面打开一行 替换: 输入r,替换光标处的字符 nrc用字符c替换从光标所指向的字符起的n个字符 输入R,进入替换模式
  • 19. 正文替换(删除后进入插入模式)s 删除光标所在位置的字符 ns 删除从光标所在位置起的n个字符 cw 删除从光标所在位置起的一个词 ncw 删除从光标所在位置起的n个词 cb 删除光标所在位置的前一个词 ncb 删除光标所在位置的前n个词 c$ 删除从光标所在位置到结尾的所有字符 c0 删除从光标所在位置到行首的所有字符
  • 20. 撤消更改撤消前一个命令: 在最后一个命令之后立即输入u来撤消该命令 撤消对一行的更改: 输入U来撤消你对一行所做的所有更改 这个命令只有在你没将光标移动到该行以外时才生效
  • 21. 删除文本删除一个字符: 为删除一个字符,需将光标放置在要删除的字符上并输入x nx删除从光标所在位置开始向右的n个字符 为删除光标之前(其左边)的一个字符,需输入X 删除一个词或词的部分内容: 为删除一个词,需将光标放置到该词的开头并输入dw ndw删除n个指定的单词 为删除词的部分内容,需将光标放置到该词要保存部分的右边。输入dw来删除该词余下的部分 删除一行: 将光标放置到该行的任意处并输入dd ndd删除当前行及其后n-1行的内容
  • 22. db 删除光标所在位置之前的一个词 ndb 删除光标所在位置之前的n个词 :d 删除当前行 :nd 删除从当前行开始的n行 :n1,n2 d 删除从n1开始到n2为止的所有内容 :.,$d 删除从当前行到结尾的所有内容 :/str1/,/str2/d 删除从str1开始到str2为止的所有内容
  • 23. :n1,n2 co n3 将从n1开始到n2为止的所有内容复制到n3后面 :n1,n2 m n3 将从n1开始到n2为止的所有内容移动到n3后面
  • 24. . 再执行一次前面刚完成的某个复杂的命令 ZZ 存盘退出 ZQ 作废退出
  • 25. 删除文本(续)删除行的部分内容: 将光标放置到该行要保存部分的右边,并输入D。为删除光标左边的所有内容,须将光标放置到该行要删除部分的右边,并输入d0(d-零)。 删除到文件的结尾: 为删除从当前行到文件结尾的所有内容,需输入dG
  • 26. 复制和移动文本复制一行命令:yy nyy将当前开始的n行内容复制到缓冲区 粘贴命令:p 移动文本: 先将要移动的部分用删除命令删除,然后再粘贴就可以了
  • 27. 查找一个字符串查找一个字符串: 输入/,并在/后面输入要查找的串,然后按下回车 输入“n”跳转到该串的下一个出现处 输入“N”跳转到该串的上一个出现处 ?,往后查找字符串 !,执行一个shell的指令(末行模式)
  • 28. 替换一个字符串在一行内替换头一个字符串old为新的字符串new :s/old/new 在一行内替换所有的字符串old为新的字符串new :s/old/new/g 在两行内替换所有的字符串old为新的字符串new :#,#s/old/new/g 在文件内替换所有的字符串old为新的字符串new :%s/old/new/g 进行全文替换时询问用户确认每个替换需添加c选项 :%s/old/new/gc