主题 : 北大青鸟一期教程 (第三章)  (申请加精)
我为人人,人人为我
级别: 七朵秋菊

UID: 13542
精华: 0
发帖: 1211
威望: 47453 点
无痕币: 23241 WHB
贡献值: 0 点
在线时间: 437(时)
注册时间: 2008-02-19
最后登录: 2023-08-15

0 北大青鸟一期教程 (第三章)  (申请加精)

第一章回顾

第二章回顾




《Linux基础》教案

第三章 文本编辑





1. 回顾上一章: [10分钟]


2. 课程知识点讲解: 2

2.1. Linux编辑器概述:[XX分钟]

2.2. Pico编辑器:[XX分钟]

2.2.1. Pico的特点 4

2.2.2. Pico的使用 5

2.3. Vi编辑器 9

2.3.1. Vi的特点 10

2.3.2. VI的模式 10

2.3.3. VI的用法 10

2.3.4. VI的基本命令补充 14

2.4. 28

2.5. 具体知识点3[XX分钟] 31

3. 本章总结  [10分钟] 31

4. 考核点 31

5. 测试题 31

6. 扩展部分: 31

7. 学员问题汇总: 31

8. 作业: 32


















授课教师:师资培训

课时:2小时



本章主要的目的

Ø 了解Linux平台上的编辑器知识

Ø 了解PICO编辑器的使用

Ø 掌握VI编辑器的使用 

Ø 了解EMACS编辑器的使用 



本章重点

Ø 掌握VI编辑器的使用

1. 回顾上一章: [10分钟]
Ø Linux操作系统的基本组成和文件结构

Ø Red Hat Linux 9的安装步骤

Ø Linux系统的基本配置方法

Ø Linux磁盘分区的方法

Ø Linux操作系统的启动过程

2. 课程知识点讲解:
2.1. Linux编辑器概述:[XX分钟]
在各种操作系统中,编辑器都是必不可少的部件。它主要用来处理简单的ASCII文本、源程序、电子邮件等等。与字处理程序和桌面出版程序相比,编辑器只处理普通的ASCII文本,没有格式信息,而后者倾向于处理更复杂的文档。典型的字处理软件都有图形化的用户界面(GUI)和“所见即所得”的效果。

在Linux及其相似的操作系统系列中,为方便各类用户在各种不同的环境中使用,提供了一系列的编辑器,包括ex,edit,ed,vi,emacs,pico等。其中,ex,edit,ed都是行编辑器,它每次只能对一行进行操作,使用起来很不方便,现在已经很少人使用。Linux提供他们的原因是为了满足各种用户特别是某些终端用户的需要。

而vi和emacs等则是全屏幕编辑器,具有强大的功能允许对整个屏幕进行编辑。用户编辑的文件直接显示在屏幕上,修改的结果也可以立即显示出来,克服了行编辑不直观的操作方式,便于用户学习和使用。

在Linux中,有许多运行于控制台环境的文本编辑器,包括:

Ø vim:强大而轻便的BSD传统编辑器,vi的增强版本(VIM)。

Ø emacs:重量级GNU传统编辑器。RMS(Richard M.Stallman)原创。

Ø xemacs:Emacs的下一代,由Lucid原创。

Ø mcedit:新型GNU编辑器,也就是mc内置编辑器。

Ø ae:缺省的小型编辑器(Potato)。通常不用它。

Ø nano:缺省的小型GNU编辑器(Woody)。类似pico。

Ø joe:用于旧式的WordStar或TurboPascal。

Ø jed:快速、多功能、菜单式编辑器,兼容Emacs键盘操作方式。

Ø jove:微型编辑器,兼容Emacs键盘操作方式。

Ø nvi:新版vi。

还有一些运行于X环境的编辑器:

Ø gvim:Vim with GUI(基于图形环境的vim)

Ø xemacs:下一代Emacs(自动检测X图形环境)

可以使用$EDITOR环境变量设置系统的缺省编辑器,打开用户子目录中的.profile文件,在其中加上这样一行:

EDITOR = /bin/vi; export EDITOR                                                  

如果是root用户,可以通过编辑/etc/profile文件,并在其中插入同样内容,为所有用户设置$EDITOR变量。

在上述两种情况下,保存这个文件,然后使用下面的方法让新的$EDITOR变量生效:

# source/etc/profile                                                               

完成以上操作之后,会将vi设定为Linux缺省的系统编辑器。

2.2. Pico编辑器:[XX分钟]
2.2.1. Pico的特点
Pico编辑器包括在华盛顿大学的pine邮件程序包中,它是一个紧凑、高效、易于使用的编辑器程序,通常用来编写或者回复电子邮件消息。这种编辑器可以满足一般的编辑需要。如果想要一个可靠的编辑器,却又没有充裕的硬盘空间(比如,使用笔记本电脑的情况)的话,就适于使用该编辑器。

虽然它的规模相对来说很小,但是,Pico编辑器具备一个文字处理器程序所应具备的大多数功能,包括:

Ø 单词打包

Ø 内建帮助

Ø 单词搜索

Ø 段落对齐

Ø 文本块移动、复制和删除

Ø 鼠标支持

Ø 拼写检查

Pico编辑器有16个命令行参数,还有一个初级但是很安全的系统崩溃意外保护功能。在电源掉电的紧急时刻(这大概是唯一能够使Linux崩溃的意外了),pico将试图保存所有任何正在进行而未能正常推出的工作,它会使用一个扩展名为.save的文件来保存文件,如果这些工作以前从没有进行过存盘,它就会使用pico.save为文件名保存它们。

可以使用man命令获得pico的帮助文档,或者在pico的窗口界面使用Ctrl+G的命令获得帮助文档,或者通过因特网浏览器程序lynx按照下面的方法阅读pine和pico的技术文档:

[root@pc1 root]# lynx /usr/share/doc/pine-4.44/tech-notes/index.html                      

2.2.2. Pico的使用


1. 语法:

pico [options] [file]                                                            

主要的选项包括:

Ø +n  打开文件时将光标定位在文件的第n 行。

Ø -a  在文件浏览器中显示所有文件,包括以“.”开头的文件。

Ø -b  允许查找和替换。

Ø -d  设置Ctrl+BackSpace组合键删除光标所在字符。

Ø -e  允许完全的文件名。

Ø -f  使用F1~F12功能键。

Ø -g  在文件浏览器中显示光标。

Ø -h  列出命令行选项。

Ø -j  允许在文件浏览器中出现“G”命令,直接定位目录。

Ø -k  改变减切文本的命令,由减切整行,改为减切从光标点到行尾的内容。

Ø -v  只读打开文件,禁止修改。

Ø -w  关掉自动断行(因此可以容许超过80字符的行存在)功能。

Ø -v  不在屏幕下方显示帮助菜单。

2. 文本编辑

(1) 打开文件

[root@pc1 root]# pico test.txt

如果不存在该文件,pico将会建立一个具有该名字的新文件,如果存在该文件,则会打开文件进行编辑,如图所示。

(2) 使用+n和-j参数选项打开文件

[root@pc1 root]# pico  +5 j install.log.system

Pico程序打开文件,并将光标定位在第5行的位置,如图所示。

在对编辑后的文件进行保存,或者需要读入其他文件时,使用“^O”或“^R”命令,在pico帮助栏的上面一行,会提示保存文件或读取文件的路径,读取文件时的界面如图所示。

图显示提示从用户的主目录插入一个文件,此时需要用户输入文件名。但是如果用户要直接找到一个文件,则可以使用“^T”命令,进入到文件浏览器界面。可以使用如图所示的命令来直接定位一个文件,也可以先使用-j选项再用G命令。

(3) 编辑文件

在打开的编辑屏幕的下方,显示了pico的编辑命令,如图所示。

Pico编辑命令的语法是“Ctrl+命令字符”,如图所示。“^O”是由Ctrl和O的组合键来执行,可以使用连续的[ESC]键代替Ctrl,如“^O”可用[ESC]+[ESC]+O代替。其中的命令字符都是小写。

Pico的编辑界面打开后即处于输入状态,可以直接对文本进行编辑、插入、修改和删除。“^D”删除光标所在字符,“^K”剪切光标所在的整行,“^U”将最近一次剪切行插入光标所在处。

编辑完毕后,使用命令“^O”保存文本,pico提示保存的文件名,如图所示。输入要保存的文件名,回车,保存完毕。返回到主编辑界面,使用“^X”命令退出编辑。

(4) 定位查找

Pico提供了方便的文件中内容的定位查找方法,在编辑主界面使用“^W”命令,则进入到定位查找界面,如图所示。

可以直接在搜索栏输入要查找的字符串,回车后,即可定位到从当前光标开始第一个匹配的字符串。定位到第一个匹配的字符串后,pico将会退出定位查找界面。其他定位命令如下:

Ø ^Y    到文件头

Ø ^V    到文件尾

Ø ^L    到具体行号

Ø ^W   到当前段首

Ø ^O   到当前段尾

(5) 常用操作指令说明

Ø Ctrl+g (get help) : pico 的帮助文件。

Ø Ctrl+x (exit) : 离开pico。编辑完成后,按此指令就可离开 pico编辑画面。当按了Ctrl+x后,会先出现下面这一行: 

Save  modified  buffer  (ANSWERING   “No”   WLL DESTROY CHANGS)  ?            

询问是否要存档,如果是,则按y,反之按n。

Ø Ctrl+o (writeout) : 保存文件,编辑了一段后,可先存档,再继续编辑,此动作不会退出pico程序。

Ø Ctrl+y (p,b) : 往上翻一页(行,字符)。

Ø Ctrl+v (n,f) : 往下翻一页(行,字符)。

Ø Ctrl+k (d) : 删除光标所在行(字符)。

Ø Ctrl+u : 将删除的内容恢复到当前光标处(只恢复上一个删除动作)。

Ø Ctrl+c : 显示光标所在的位置。

Ø Ctrl+r : 加入其他文件的内容。

Ø Ctrl+w : 搜寻字符串。

Ø Ctrl+t : 拼写检查。

Ø Ctrl+a : 移动光标到行首。

Ø Ctrl+e : 移动光标到行尾。

Ø Ctrl+i : 插入一个Tab。

Ø Ctrl+l : 刷新屏幕。

Ø Ctrl+j :将文章重新排版(段与段之间使用空白行隔开,或段首使用空格)。

2.3.  Vi编辑器 
Vim是什么?它又能做什么?做不到哪些呢? 

Vim是个高级的文本编辑器,可用来进行高效的文本编辑;具有强大灵活的可配置性,以符合用户的使用习惯,试图提供可与事实上的Unix标配编辑器Vi匹敌的功能,而且支持更多的特性。当前stable版本是6.3,7.0版正在全力开发中。 Vim常被叫作是"程序员的编辑器",其支持编程方面的功能是如此有用,以致许多人认为Vim就是一个完整的 IDE。当然Vim绝非只为程序员准备,对各种各样的文本编辑来说,Vim几近完美,无论是email的撰写,还是配置文件的编辑。当然强大的功能和灵活性也就暗示着需要一定的学习曲线才能有效的使用Vim,毕竟Vim不是为仅和其用户握握手表示友好而设计的;它是一个工具,必经学习方能利器。在你打算学习使用Vim之前,我必须澄清一点: Vim不是字处理器,尽管它能以多种不同形式的高亮和格式显示文本,但并不能对排版文档以所见即所得的(WYSIWYG)方式进行编辑;不过能很好的支持TeX的编辑。

Vim的又一个特点是它的License,Vim是一个慈善软件(charityware),不过其license和GPL兼容,因此可自由发布Vim,不过你要是发现Vim真的帮了你很大的忙,Vim作者建议你通过ICCF捐款以帮助Uganda乌干达的儿童。

2.3.1. Vi的特点
Vi:“Visual Interface”虚拟界面。最通用,全屏幕文本编辑器,可以输入、删除、查找、替换、块操作等众多文本操作。而且,用户可以根据需要对其进行定制,这是其他编辑程序所没有的。

VI不是排版程序,它不象WORD或WPS那样,可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。

VI没有菜单,它通过命令来对文本进行编辑操作。

RED HAT LINUX中,缺省的VI是VIM(VI IMPROVED,即VI增强版),它兼容所有标准VI的操作,并且有多窗口编辑、多风格显示等功能。本章将要讲述的是VIM,但它的启动命令同样适用VI。

2.3.2. VI的模式
VI有3种基本工作模式:

命令模式

文本输入模式

2.3.3. VI的用法 
vi编辑器通行于所有的LINUX发行版,连各种UNIX系统亦不例外。
作者:Linux知识宝库
一、基本命令介绍
---- 1.光标命令
k、j、h、l——上、下、左、右光标移动命令。虽然您可以在linux中使用键盘右边的4个光标键,但是记住这4个命令还是非常有用的。这4个键正是右手在键盘上放置的基本位置。
nG——跳转命令。n为行数,该命令立即使光标跳到指定行。
Ctrl+G——光标所在位置的行数和列数报告。
w、b——使光标向前或向后跳过一个单词。
---- 2.编辑命令
i、a、r——在光标的前、后以及所在处插入字符命令(i=insert、a=append、r=replace)。
cw、dw——改变(置换)/删除光标所在处的单词的命令 (c=change、d=delete)。
x、d$、dd——删除一个字符、删除光标所在处到行尾的所有字符以及删除整行的命令。
---- 3.查找命令
---- /string、?string——从光标所在处向后或向前查找相应的字符串的命令。
---- 4.拷贝复制命令
---- yy、p——拷贝一行到剪贴板或取出剪贴板中内容的命令。
二、常见问题及应用技巧
---- 1.在一个新文件中读/etc/passwd中的内容,取出用户名部分。
---- vi file
---- :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd
---- :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。
----您也可以在指定的行号后读入文件内容,例如使用命令“:3r/etc/passwd”从新文件的第3行开始读入/etc/passwd的所有内容。
---- 我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。
---- #cat squid.conf.default | grep -v '^$' | grep -v '^#'
----2.在打开一个文件编辑后才知道登录的用户对该文件没有写的权限,不能存盘,需要将所做修改存入临时文件。
---- vi file
----:w/tmp/1保存所做的所有修改,也可以将其中的某一部分修改保存到临时文件,例如仅仅把第20~59行之间的内容存盘成文件/tmp/1,我们可以键入如下命令。
---- vi file
---- :20,59w /tmp/1
---- 3.用VI编辑一个文件,但需要删除大段的内容。
----首先利用编辑命令“vifile”打开文件,然后将光标移到需要删除的行处按Ctrl+G显示行号,再到结尾处再按Ctrl+G,显示文件结尾的行号。
----:23,1045d假定2次得到的行号为23和1045,则把这期间的内容全删除,也可以在要删除的开始行和结束行中用ma、mb命令标记,然后利用“:'a,'bd”命令删除。
---- 4.在整个文件的各行或某几行的行首或行尾加一些字符串。
---- vi file
---- :3,$s/^/some string / 在文件的第一行至最后一行的行首插入“some string”。
---- :%s/$/some string/g 在整个文件每一行的行尾添加“some string”。
---- :%s/string1/string2/g 在整个文件中替换“string1”成“string2”。
---- :3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的“string1”成“string2”。
---- 注意: 其中s为substitute,%表示所有行,g表示global。
---- 5.同时编辑2个文件,拷贝一个文件中的文本并粘贴到另一个文件中。
---- vi file1 file2
---- yy 在文件1的光标处拷贝所在行
---- :n 切换到文件2 (n=next)
---- p 在文件2的光标所在处粘贴所拷贝的行
---- :n 切换回文件1
---- 6.替换文件中的路径。
----使用命令“:%s#/usr/bin#/bin#g”可以把文件中所有路径/usr/bin换成/bin。也可以使用命令“:%s//usr/bin//bin/g”实现,其中“”是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。

2.3.4. VI的基本命令补充
xp :交换两个字符位置 

ddp :上下两行调换 

:上下两行合并 

dG :删除所有行 

d$ :从当前位置删除到行尾 

y$ :从当前位置复制到行尾, 如果要粘贴到其他地方 p 就可以了 

:ab string strings 

例如 ":ab usa United States of America" , 

当你在文见里插入 usa 时 United States of America 就蹦出来了 

:g/^/m0 :把文件内容反转 

:map keys new_seq :定义你当前键盘命令 

:set [all] :vi or ex 的编辑状态 

如 显示每行 :set nu  :X 然后系统会提示输入密码, 输入密码后存盘退出, 保存后就加密了,下次编辑时使用vi -x filename, 系统会提示你输入密码 

在命令状态下,nyy表示拷贝从光标行起的下n行内容,p表示paste,粘贴下来在光标处。 

单个字符替换用r,覆盖多个字符用R,用多个字符替换一个字符用s,整行替换用S 

:%s/old_word/new_word/g 这个指令是于在整个文件中替换特定字符串 

将光标移到第n行,按下 mk 

将光标移到第m行,按下 "ay'k  即将第n到m的行存到a寄存器,以此类推,b,c........寄存器等,想粘贴到某处,直接将光标移到某地,按下 ‘ap 即可 

删除命令操作 

d l 删除当前字符(与x命令功能相同) 

d 0 删除到某一行的开始位置 

d ^ 删除到某一行的第一个字符位置(不包括空格或TA B字符) 

d w 删除到某个单词的结尾位置 

d 3 w 删除到第三个单词的结尾位置 

d b 删除到某个单词的开始位置 

d W 删除到某个以空格作为分隔符的单词的结尾位置 

d B 删除到某个以空格作为分隔符的单词的开始位置 

删除命令操作 

d 7 B 删除到前面7个以空格作为分隔符的单词的开始位置 

d) 删除到某个语句的结尾位置 

d 4) 删除到第四个语句的结尾位置 

d( 删除到某个语句的开始位置 

d } 删除到某个段落的结尾位置 

d { 删除到某个段落的开始位置 

d 7 { 删除到当前段落起始位置之前的第7个段落位置 

d d 删除当前行 

d /t e x t 删除从文本中出现“ t e x t”中所指定字样的位置,一直向前直到下一个该字样所出现的 

位置(但不包括该字样)之间的内容 

d fc 删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括 

该字符)之间的内容 

d tc 删除当前行直到下一个字符“ c”所出现位置之间的内容 

D 删除到某一行的结尾 

d $ 删除到某一行的结尾 

5 d d 删除从当前行所开始的5行内容 

d L 删除直到屏幕上最后一行的内容 

d H 删除直到屏幕上第一行的内容 

d G 删除直到工作缓存区结尾的内容 

d 1 G 删除直到工作缓存区开始的内容 

修改命令操作 

c l 更改当前字符 

c w 修改到某个单词的结尾位置 

c 3 w 修改到第三个单词的结尾位置 

c b 修改到某个单词的开始位置 

c W 修改到某个以空格作为分隔符的单词的结尾位置 

c B 修改到某个以空格作为分隔符的单词的开始位置 

c 7 B 修改到前面7个以空格作为分隔符的单词的开始位置 

c 0 修改到某行的结尾位置 

c) 修改到某个语句的结尾位置 

c 4) 修改到第四个语句的结尾位置 

c( 修改到某个语句的开始位置 

c } 修改到某个段落的结尾位置 

c { 修改到某个段落的开始位置 

c 7 { 修改到当前段落起始位置之前的第7个段落位置 

c tc 修改当前行直到下一个字符c所出现位置之间的内容 

C 修改到某一行的结尾 

c c 修改当前行 

5 c c 修改从当前行所开始的5行内容 

替换命令操作 

s 将当前字符替换为一个或多个字符 

S 将当前行替换为一个或多个字符 

5 s 将从当前字符开始的5个字符替换为一个或多个字符 

下载 

vi替换使用规则: 

:g/s1/s/s2/s3/g 

第一个g表示对每一个包括s1的行都进行替换,第二个g表示对每一行包括s1的行所有的s2都用s3替换 

s表示替换,s2是要被替换的字符串,他可以和s1相同(如果相同的话用//代替),s3是替换字符串 

fx 

往右移动到 x 字符上 

Fx 

往左移动到 x 字符上 

tx 

往右移动到 x 字符前 

Tx 

往左移动到 x 字符后 

(注意:以上四个命令中,其中x是键入的字符) 



分号,配合 f 和 t 使用,重复一次 



逗号,配合 f 和 t 使用,反方向重复一次 



标记文本 

  mchar   用字母char标记当前光标的位置 

  `char   移至char所标记处 

  'char   移至char标记所在行的开头处 

  "     移至当前行上一次所在位置(在光标移动之后)――一个双引号 

  ''    移至当前行上第一次所在位置的行的开头处(在光标移动之后)――两个单引号 

.重复上一次修改! 

在当前屏幕中 

H 跳到第一行 

M 跳到中间一行 

L 跳到最后一行  

追加到缓冲区 

对于已经有内容的缓冲区,可以继续追加内容在其后面,例如: 

"Ad4w 删除光标后4个字,并附加到缓冲区a 

"Ay) 取样从光标到文件尾的内容,并附加到缓冲区a 

"K3yy 取样从光标所在行起的3行内容,并附加到缓冲区k 

注意:在追加缓冲区的命令中,原缓冲区的名字一定要大写,才能将内容追加进去,否则是覆盖原缓冲区的内容。追加内容在原缓冲区末尾另起一行。 

清理掉DOS文本中的^M可以在:1,$s/^M//g,其中^M是CTRL+V, CTRL+M。 

删除从当前行开始到最后一行的所有内容 

:.,$d 

在:命令行模式下,首先可以确定命令的范围 

.表示当前行;数字表示行号,如1表示第一行,2表示第二行;$表示最后一行 

范围用,分隔 

然后用命令 

d表示删除,y表示复制

%表示全文 

:%d 是删除全文 

 

在:命令行模式下,首先可以确定命令的范围 

.表示当前行;数字表示行号,如1表示第一行,2表示第二行;$表示最后一行 

范围用,分隔 

:$d 只是删除最后一行

折行 :set wrapmargin=4 

折行 :set wrapmargin=4  

用 :wq 或者 :wq! 另存 

:set number 显示行号 

:g/$/s// ABC/g 

:g/^/s//def /g 

在文本每行的头和尾添加字符串. 

用vi进行coding时的使用技巧: 

用ctags命令对当前目录下的c源程序扫描,生成tags文件 

$ ctags *.c 

这样,在vi里通过命令 

:ta fun_name 

就可以直接打开函数fun_name所在的文件,并将光标置于函数开头 

:n,n1 d 

n和n1都是行数, d是删除这些行 .表示当前的行。 

: n 

n是行数,直接转到n行。 

: r 文件名 

把文件添加到当前的文件中 

:n,n1 w 文件名 

把从n行到n1行写道另外一个文件中 

查找: 

在一个单词上用*,就向下查找此单词,#是向上 

用/查找hello,就不会查找到hello_world(用此替换也很好用) 

替换: 

如有一文件,内容为: 

aa 

bb 

cc 

dd 

用:%s/.*/printf("& is :%d ",&)/ 

文件内容为变为: 

printf("aa is :%d ",aa) 

printf("bb is :%d ",bb) 

printf("cc is :%d ",cc) 

printf("dd is :%d ",dd) 

&为查找到的内容 

用:~为重复上一次替换 

用系统命令编辑: 

如有一文件,内容为: 

333 

222 

334 

444 

111 

553 

554 

233 

运行命令:%!sort 文件内容为: 

111 

222 

233 

333 

334 

444 

553 

554 

用此方法可以使用许多系统命令进行编辑,大家可以灵活运用 

其他特殊用法: 

用q: 看一看有什么用? 可以编辑你用过的命令 程序中在一个调用函数(如:printf)上用K,可以直接调出printf的帮助 



ctrl+f向下翻页,ctrl+b向上翻页(对于telnet上去的时候比较有用) 

1. vi中设置tab键的空格数: 

:set ts=4 

:set sw=4 

将此两句话加到当前用户目录的文件.vimrc中,这样当前用户用vi的时候就会启动该设置 

2.拷贝: 

将第2行到第9行的字copy到第11行 

:2,9 co 10 

将第2行到第9行的字move到第11行 

:2,9 m 10 

3.设置行号: 

:se nu 

取消行号: 

:se nonu 

4.当前行与下一行换位置:ddp 

5.当前字与后面的字换位置:xp 

用vi替换文件中的字符串 

  在vi界面下使用命令 

  :%s#/usr/bin#/bin#g 

  可以把文件中所有路径/usr/bin换成/bin。也可以使用命令: 

  :%s/usr/bin/bin/g 

  其中“”是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。 

1. 将一个文件中的几行保存到另外一个文件中了 

1.1 $vi file1 

1.2 :3,5 y a 

1.3 :e file2 

1.4 "ap 

2. 将另外一个文件插入到指定内容的行后面 

2.1 $vi file1 

2.2 :/regularexpress/ r file2 

3. 两个文件的切换和拷贝 

3.1 $vi file1 file2 

3.2 :3,5 y a 

3.3 :e# 

3.4 "ap 

3.5 :e# 

在vim里面查看man页面 

在进入vim后按“:”号,输入 

source $VIMRUNTIME/ftplugin/man.vim 

然后再按“:”号,输入 

nmap K :Man 

然后在vim里面输入你要的命令,在这个命令上按K,就可以看到经vim处理过后的man页。 

用vi在整个文件的各行或某几行的行首或行尾加一些字符串 

  $vi file 

  :3,$s/^/some string 在文件的第一行至最后一行的行首插入“some string”。 

  :%s/$/some string/g 在整个文件每一行的行尾添加“some string”。 

  :%s/string1/string2/g 在整个文件中替换“string1”成“string2”。 

  :3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的“string1”成“string2”。 

  注意: 其中s为substitute,%表示所有行,g表示global。 

用vi删除大段的内容 

  首先利用编辑命令“vi file”打开文件, 然后将光标移到要删除的行处按Ctrl+G显示行 

号,再到结尾处再按Ctrl+G,显示文件结尾的行号。 

  例如: 

  :23,1045d 

  假定2次得到的行号为23和1045,则把这期间的内容全删除, 也可以在要删除的开始行和 

结束行中用ma、mb命令标记,然后利用“:'a,'bd”命令删除。 



用vi实现“另存为”功能 

  $vi file 

  :w /tmp/1 

  保存所做的所有修改,也可以将其中的某一部分修改保存到临时文件。 

  如果仅仅把第20~59行之间的内容存盘成文件/tmp/1,我们可以键入如下命令: 

  :20,59w /tmp/1 

用vi在一个新文件中读其他文件的内容 

  $vi file 

  :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd 

  :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。 

  您也可以在指定的行号后读入文件内容,例如使用命令: 

  :3r /etc/passwd 

  从新文件的第3行开始读入 /etc/passwd的所有内容。 

  我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。 

  $cat squid.conf.default | grep -v '^$' | grep -v '^#' 

用vi拷贝一个文件中的文本并粘贴到另一个文件中 

  $vi file1 file2 

  然后在vi界面下: 

  yy <-在文件1的光标处拷贝所在行 

  :n <-切换到文件2 (n=next) 

  p <-在文件2的光标所在处粘贴所拷贝的行 

  :n <-切换回文件1 

使用vim对被编辑文件加密 

  在VIM当中要对所编辑的文件进行简单加密,可以在命令行模式下键入“:X”(无括号,只有冒号和X)然后在提示“Enter the encrypt key”时输入口令字串就可以加密了。但是别忘了要保存。保存的时候会发现在屏幕底部有“[crypted]”这样的字样。 下次打开该加密文件会要求您输入口令字串。

设置vim自动显示行号 

  在每个用户的主目录下,都有一个 vi 的配置文件".vimrc"或".exrc", 用户可以编辑它, 

使这些设置在每次启动 vi 时,都有效。 

  例如,加入如下设置行: 

set nu 显示行号 

set nonu 不显示行号 

set ic 查找时不考虑大小写 

set noic 查找时考虑大小写 

在vi里搜索关键字 

  当你用vi打开一个文件后,因为文件太长,如何才能找到你所要查找的关键字呢?在vi里可没有菜单-〉查找,不过没关系,你在命令模式下敲斜杆(/)这时在状态栏(也就是屏幕左下 角)就出现了 “/”然后输入你要查找的关键字敲回车就可以了。 

  如果你要继续查找此关键字,敲字符n就可以继续查找了。值得注意的是“/”是向下查找, 

而“?”是向上查找,而在键盘定义上“?”刚好是“/”的上档符。 

用彩色的vi写程序 

  修改$HOME中的.vimrc,把color值设为true 

  把环境变量VIMRUNTIME设成vim的路径名 

  例:/usr/share/vim 

  在vi中键入 

  :syntax on回车 

  :so $VIMRUNTIME/syntax/java.vim回车(现在版本的vi支持无数程序语法色彩档,都在 

syntax/下,看一眼吧:)) 

  如果不喜欢所用的xterm背景色,可以用xterm -bg LightBlue(或其他喜欢的颜色)启动, 

或者修改.Xresouce的xterm background项。

2.4.  
vi是unix操作系统提供的一个全屏幕文本编辑器,是程序员编辑源代码的一个重要工具。熟练掌握vi命令及其使用技巧往往能起到事半功倍的作用,大大提高编程工作的效率。在应掌握如i,a,o,0,m,x,u,dd,yy,dw,cw,s,.,/,Ctrl-F,Ctrl-B,Ctrl-G,w,q等基本命令外,下面介绍一些实际工作中所常用的命令技巧。
  1.将多个文件调入缓冲使用命令:vi flname1 flname2… flnameN编辑下一文件用:n;回到首文件:rew;查看当前编辑缓冲文件状态:args。
  2.修改包含某一字符串的文件可与grep命令结合使用,如欲编辑当前目录下含有abc字串的所有C源程序:vi`grep -1 abc *.c`
  3.编辑在缓存中的两个文件快速切换命令: :e# 或 Ctrl-^ 使用Ctrl-^ 命令更便捷,但如终端类型不正确该功能将无效。
  4.将一个文件的部分内容读入另一文件中,有以下两种操作方式:
  (1)将欲读入的内容用w命令写入一临时文件,再用r命令读入。该方法笨拙,临时文件需清理。
  (2)将欲读入的内容写入一临时缓存器后再切换到目标文件,将光标移至需读入内容处,从缓存器中提出。
  写入缓存器a命令:起始行mk 结束行″ay'k
  从缓存器a中提出:″ap
  该方法操作方便快捷,不会产生垃圾文件
  5.放弃一修改过的文件,重新编辑。
  (1)使用命令 :q!强行退出后再vi flname重新进入。
  (2)使用命令 :e!强行重编辑更便捷。
  6.定位文件尾用G比:更快捷,段落定位用(和)键,括号匹配定位用%,定位行首0,定位行尾,两行连接J。
  7.行左移〈〈,行右移〉〉,该命令用于调整源码缩进格式简便快速。
  8.大小写字母自动切换命令:shilft+~,屏幕刷新Ctrl-1。
  9.当编辑的移动键失效时可用:map命令,但如终端类型不正确该命令将无效。
  10.替换命令的特殊处理:文件行首用^标识,行尾用$标识。
  如:1,s/^/abc/g 表示文件行首加入abc字串
    1,.s//abc/g 表示文件首行至光标所在行行尾加入abc字串
  11.在vi命令状态直接读入一外部命令执行结果:
  !!+外部命令
  如:
  !!date
  直接读入一系统日期
  12.在vi中也可输入非ASCII码,如欲输入打印机的换页控制码^L(码值为12),其输入方法是先输Ctrl-v再输Ctrl-1即可,其中Ctrl-v是静默值。
  13.显示vi文本中的隐含字符:set list 取消显示:set nolist。
  14.临时退出至shell状态命令:sh,退出shell后将回到原编辑状态,在同一缓存中编辑另一文件:e flname。
  vi编辑器命令很丰富,但没必要各个都需掌握,只要掌握以上提及的基本命令与技巧,即可自如高 效的编辑文件了。

    老师提问:

问题1:VI编辑器有哪3种操作模式?

问题2:在VI的屏幕光标移动命令中,使用什么命令将光标移动到屏幕的中央行?

2.5. 具体知识点3:[XX分钟]
3. 本章总结  [10分钟]



[ 此帖被lvming780910在2009-01-05 07:37重新编辑 ]
本帖最近评分记录:
  • 无痕币:+15(隐士) 优秀帖子
  • Total 0.071136(s) query 3, Time now is:05-22 12:05, Gzip enabled 粤ICP备07514325号-1
    Powered by PHPWind v7.3.2 Certificate Code © 2003-13 秋无痕论坛