版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE1《计算机软件基础》多媒体教程第七讲第二章 UNIX的软件工具2.1Unix软件开发工具简介文本编辑工具(texteditor,编辑器,编辑程序)软件工具分类适合于字符终端适合于图形终端功能特点行文本编辑ed,ex面向行交互文本编辑vi,vim,emacsxeditor等面向字符字符流编辑sed,awk面向整个文件部分编辑功能tr,dd,sort,uniq等非编辑工具,具有可利用的编辑功能文本格式化工具(documentgeneration)书写文档资料(documentation) 按格式自动排版文本文件,编写连机用户手册(onlinemanual) nroff,troff,tbl,eqn撰写学术论文(paperandthesis) tex,latex,poscript(ps),pdf软件维护工具(softwaremaintanence)软件编译和生成,或工程组织等过程的自动辅助工具 make版本管理工具(versioncontroller) SCCS,CVS,SVN等库函数管理(archive) ar等软件调试查错工具(debuggingtools) 功能:设置断点;跟踪运行;单步或多步;监视数据变化;设定循环次数;条件运行等适合于字符终端 adb,sdb,gdb适合于图形终端 dbx,dbxtool,wdb,ddd,...编译器生成工具(compilergeneration)词法编译器生成工具(lexicalgeneration) lex语法编译器生成工具(yetanothercompilercompiler) yacc软件工具中各种命令使用格式的约定正体字“abc” 语法规定的字符,不能改变。斜体字“abc” 命令参数,具体值由用户根据需要决定。省略号“...” 重复在省略号前面的内容。方括号“[xyz]” 方括号内的内容可以省略,如需要使用方括号将专门说明。回车符 必要处用⊕或者<CR>表示,禁止出现将专门说明。明显需要回车符 的地方可能省略,例如大多数结束命令的回车符都将省略。空格 必要处用□表示,禁止出现将专门说明,明显需要空格的地方可省略。控制符 用^X表示,如^D。下划线“abc” 用户键入的数据或者字符,用下划线表示。缺省 在明显的情况将省略以上的约定。例外 与以上约定不符的例外情况将专门说明。约定示例:[i[,j]]d⊕ “:”和d是规定字符。i和j的值由用户确定,“,j”可以省略或者“i,j”都可省略。回车符⊕不能省略。vi[file[...]] vi命令可以没有参数,或者带一个或者多个file。省略了明显需要的回车符。echo$a□$b $a$b 标出空格,表示$a□$b与$a$b的效果不同。省略了回车符。变量=值 禁止空格,规定等号=的两侧不能出现空格。iHi⊕Bye<ESC> i和<ESC>是命令(不显示),其余由用户输入(下划线)。禁止回车符。[□表达式□] 方括号[]是规定字符,不能省略,空格不能省略。2.2BACKUS系统什么是BACKUS系统 由约翰•巴克斯(JohnWarnerBackus)和彼得•诺尔(PeterNaur)发明的BACKUS系统,通常称为BNF范式(BackusNaurForm,巴克斯-诺尔范式),是一种针对计算机语言的形式化描述语言,或者说是一种描述计算机语言语法的符号集。 计算机面对任何形式的字符流或者命令流,都可以看成是具有一定语法和词法规则的语言。这种语言可以是文字形式,例如各种输入的数据文件或者文本文件、用shell命令或者shell程序表达的操作命令;也可以是图形界面形式,例如在窗口中用菜单命令表达的操作命令。而BNF范式恰恰可以用来描述任何一种形式化语言的语法和词法结构。 我们在学习UNIX的软件工具时,将借鉴BNF范式来描述需要处理的文本文件的语法结构和词法结构,以便使得文字处理工具比较容易理解和掌握。BNF范式的定义 设∑是不含有符号::=,<,>和|的终结符(字符)集合; 用括号<>括起来的终结符的组合,称为变量V; 终结符和变量的组合称为字W; 形为V::=W1|W2|...|Wn的表达式称为产生式; 由有限个产生式组成的系统称为BNF范式。 本课程约定关于数字和字母的定义可以省略: <数字>::=0|1|2|3|4|5|6|7|8|9 <字母>::=<大写字母>|<小写字母> <大写字母>::=A|...|Z <小写字母>::=a|...|zBNF范式描述计算机语言的典例 用BNF范式描述某种语言(例如A语言)的形式为: ∑={字符1,字符2,...,字符n} <A语言>::=<语法>... A语言由若干语法成分组成 <语法>::=<子语法>... 语法由若干子语法成分组成 <子语法>::=<词法>... 子语法由若干词法成分组成 <词法>::=字符集合... 词法由若干字符集合组成 字符集合::=字符... 字符集合由若干字符组成BNF范式的特征 BNF范式具有描述形式化语言的三种基本特征:顺序性、选择性和重复性。顺序性:按确定的次序定义产生式中的成分。 例如,由A、B和C的顺序排列组成X,描述为: X::=ABC选择性:产生式可以从多个可能的成分中选一个,用符号“|”表示连接。 例如,X的组成可能是A和B中的一个,描述为: X::=A|B 特别地,A可以是空,即可以表述为: X::=|B重复性:产生式可以由某个成分的多次重复组成,并采用递归的形式表示。 例如,X由多个A组成,描述为: X::=A|XA 右递归 或者 X::=A|AX 左递归【例2-1】用BNF范式表达的简单算术表达式SAE(SimpleArithmaticExpression)。 ∑={0-9,.,+,-.*,/,(,)} <SAE>::=<number>|<SAE><op><SAE>|(<SAE>) <number>::=<数字>.|<数字><number> <op>::=+|-|*|/ 例如: 7.,372.,(2.+14.),3.*(5.-2.)+7. 都是<SAE> .5,7.3,A,(2.+14.)+ 都不是<SAE> 分析过程示例:(1) 7是<digit>,7.符合<digit>.,是<number>,<number>是<SAE>,所以7.是<SAE>。(2) 5.-2.符合<SAE><op><SAE>,(5.-2.)符合(<SAE>), 3.*(5.-2.)和3.*(5.-2.)+7.都符合<SAE><op><SAE>,所以3.*(5.-2.)+7.是SAE。(3) 2.+14.符合<SAE><op><SAE>,(2.+14.)符合(<SAE>), (2.+14.)+不符合<SAE><op><SAE>,所以(2.+14.)+不是SAE。【例2-2】用BNF范式表达的无括号表达式PFE(ParenthesesFreeExpression)。 ∑={0-9,.,+,-.*,/} <PFE>::=<number>|<PFE><PFE><op> <number>::=<数字>.|<数字><number> <op>::=+|-|*|/ 例如: 7.,372.,2.14.+,3.5.2.-*7.+ 都是<PFE> 7.*5.3.7.-,A,2.6.8.+1./5.* 都不是<PFE> 分析过程示例:(1) 2.和14.都是PFE,2.14.+符合<PFE><PFE><op>,是PFE。(2) 5.2.-符合<PFE><PFE><op>,3.5.2.-*符合<PFE><PFE><op>, 3.5.2.-*7.+符合<PFE><PFE><op>,所以3.5.2.-*7.+是PFE。(3)3.7.-符合<PFE><PFE><op>,7.*不符合<PFE><PFE><op>,且 5.3.7.-不符合<PFE><PFE><op>,所以7.*5.3.7.-不是PFE。【例2-3】用BNF范式描述X格式的文件 ∑={0-9,A-Z,a-z,=,⊕} <文件>::=<定义行>|<文件><定义行> <定义行>::=<变量>=<数值>⊕ <变量>::=<字母串> <数值>::=<整数串> 例如,以下文件datain符合X格式: RES□=□12⊕ CAP□=□9⊕ DIOD□=□20⊕【例2-4】用BNF范式表达电路分析程序SPICE中描述电阻的语句格式为 电阻名 节点号 节点号 电阻值 单位 例如图中所示:R10320K 假定一个文件的内容全部由电阻语句组成,则相应的BNF范式定义为: ∑={0-9,A-Z,a-z,⊕} <File>::=<state>|<File><state> <state>::=R<name><node><node><value><unit>⊕ <name>::=<char>|<name><char> <node>::=<数字>|<node><数字> <value>::=<数字>|<value><数字> <unit>::=|OHM|K|KOHM|M|MOHM <char>::=<数字>|<字母>2.3vi2.3.1vi概述文本编辑器与vi UNIX最基本的文本编辑器是ed。ed是面向行文本的编辑器,其用户界面功能很弱,使用时看不到上下文。对用户来说,使用起来很不方便。但是在操作系统的开发和安装阶段,在还没有安装图形界面的时候,只有ed可以工作,因此ed通常是系统开发者和管理员所必须熟悉和掌握的编辑工具。另外,由于ed提供了此后开发的各种编辑工具中最底层的编辑函数,这对于学习各种编辑工具时理解许多具有共性的操作很有帮助。 由比尔·乔伊(BillJoy)始创的vi(Visualdisplayeditor,全屏幕编辑器)是UNIX中最常用的全屏幕文本编辑器。vi可在看到上下文的同时面向字符进行编辑。由于vi与ex(ed的超集)相互链接,可以相互转换使用,使得vi汇集了行编辑和全屏编辑的特点,成为使用UNIX首选的文本编辑器。 vim(作者BramMoolenaar布莱姆•莫利纳罗)和emacs(作者RichardStallman,理查•斯托曼)。vi的工作方式 UNIX中把分隔文字为逐行的回车符(换行符)也视为字符,因此文件被认为是连续的文字流(字符流),通常存放在外存(硬盘等介质)中。vi的工作方式是从外存读入文本文件存入内存的编辑工作区(缓冲区)进行编辑,编辑完成后再将缓冲区的文件存放到硬盘。vi的输入 读文件:读取外存(通常是硬盘)中的外部文件到内存的编辑工作区。vi的编辑操作 在工作区编辑文件。vi的输出 存文件或者另存文件:将文件输出到外存(通常是硬盘)。启动vi的方式 vi[file [...]] 对0到多个文件file进行编辑 例如,vi 编辑一个无名文件(空文件) 例如,via.txt 编辑一个文件a.txt 例如,via.txtb.txt 编辑两个文件a.txt和b.txt启动vi示例 在shell状态的命令行中,执行命令: $via.txt 将刷新shell状态的窗口,转为显示vi窗口。编辑已有的文件 如果a.txt是非空文件,在shell状态下执行命令: $via.txt 将启动vi,刷新shell状态的窗口,转为显示vi窗口。读入文件a.txt,并在窗口中显示文件的内容,窗口中的第一行行首为光标。如果文件内容少于窗口高度,则余下行显示~(tidle,代字符),表示空行。底行为文件信息,例如: "a.txt"3lines,34characters 通过对终端特性的设置,可以选择光标采用块状或者下划线形式。还可以选择是否闪烁。编辑一个空文件 如果在shell状态下执行命令: $vi 编辑无名文件 或者 $viabc 编辑新文件abc shell状态的窗口将刷新为vi的空白窗口,左侧一列显示~,表示空行。第一行行首将显示光标。如果指定文件,则显示文件名及[Newfile]。如果编辑无名文件,则可能显示帮助信息。2.3.2vi的工作状态/模式 所有的ASCII字符都是vi的命令,也就是说,至少有100多条命令,包括字母数字、标点符号、以及各种控制字符,而且大写字母与小写字母分别代表不同的命令。因此在vi中不要随意按键。vi的工作状态及工作模式 vi有三种工作状态,vi状态、ex状态以及open状态。open状态不常用,因此不予介绍。vi状态有两种工作模式,vi状态的命令模式和vi状态的插入模式,简称命令模式和插入模式。命令模式 启动vi后总是先处于命令模式。在命令模式中,没有待命符,不能直接输入文件的内容。键入的字符均视为命令,不显示,而只是执行。 可以从命令模式转换为插入模式或者ex状态。插入模式 在命令模式中使用插入类命令,将转入插入模式,随后键入的字符(文本)才是文件的内容(以下用下划线表示)。插入文本完毕,必须按<ESC>回到命令模式。ex状态 ex状态,又可称为ex模式或者底行模式。 从shell中启动ex,即 $ex[file [...]] “$”是shell的待命符 将进入ex状态。 在命令模式中按Q键,可从vi状态(的命令模式)转到ex状态。 ex状态的特征是在vi窗口的底行显示待命符“:”。 执行ex命令的完整形式为: :ex命令<CR> 以回车键表示结束 可以在vi状态(的命令模式)中按“:ex命令<CR>”,执行一个ex命令。 在ex状态中键入 :vi<CR> “:”是ex的待命符 将从ex状态转到vi状态(的命令模式)。 可见,vi状态和ex状态可以相互转换,但仅限于命令模式与ex状态之间的相互转换。vi工作状态/模式的转换vi状态的命令模式 用插入类命令(a,i,o等命令)进入插入模式。 按Q键转到ex模式。 按“:ex命令<CR>”,执行一个ex命令。vi状态的插入模式 插入文本后,按<ESC>键回到命令模式。ex状态/ex模式 按vi<CR>转到命令模式。写文件命令 :w<CR> 将当前文件存盘 :w□file<CR> 将当前文件另存为file :w!□file<CR> 另存为一个已存在的file(强制覆盖file)退出vi的命令 :q<CR> 已存盘或者没有修改文件时退出vi :q!<CR> 放弃所作的修改,退出vi :wq<CR> 存盘并且退出vi ZZ 存盘并且退出vi(不需要回车)读文件命令 :e□file<CR> 读入文件file,作为当前的编辑文件。 :[n]r□file<CR> 读入文件file,插在第n行之下。n为0表示插在 第0行之下(文件开头),省略n表示当前行。 :[n]r!command<CR> 执行shell命令command,将运行结果插在第n 行之下。n的含义同上。 :n<CR> 如果使用命令“vifile1file2...”启动vi,表示编辑多 个文本文件,n表示编辑下一文件(nextfile)。2.3.3编辑对象及定位vi编辑的对象字符(由光标位置确定) 当前字符(光标所在位置),前一字符,后一字符,文件首,文件尾,行首,行尾词word 由字母、数字和下划线组成,或者由标点符号组成。词WORD 由非空字符组成,空字符作为WORD的分隔符。 例如: 2004_Mar_1 表示1个word,或者1个WORD 2004-Mar-1 表示5个word,或者1个WORD %d%d,n,m 表示8个word,或者1个WORD %d+->%d12 表示4个word,或者1个WORD结合词 词首,词尾,前n个词,后n个词。行 当前行,上一行,下一行,首行(文件第一行),尾行(文件最后一行),第n行。文件 当前(正在编辑的)文件,输入文件,输出文件,下一文件。定位命令按字符移动光标 h或者←键: 向左移动一格 l或者→键: 向右移动一格 k或者↑键: 移到上一行同一格,若上一行短,则移到行尾 j或者↓键: 移到下一行同一格,若下一行短,则移到行尾按词(word/WORD)移动光标 w: 向后移到下一个word首 W: 向后移到下一个WORD首 b: 向前移到前一个word首 B: 向前移到前一个WORD首 e: 向后移到下一个word尾 E: 向后移到下一个WORD尾行内移动光标 ^: 移到本行第一个非空字符 0: 移到本行第一个字符(包括空字符) $:移到本行行尾(最后一个字符)跨行移动光标 <CR>: 移到下一行首 ^F或^f:向下翻页 ^B或^b:向上翻页 G: 移到最后一行 1G:移到第一行2.3.4编辑类命令插入类命令插入类命令的用法 <插入类命令>插入内容<ESC> <插入类命令>和<ESC>是不显示的,插入内容是用户键入的。插入类命令 i 在当前字符前插入 I 在行首插入 a 在当前字符后插入 A 在行尾插入 o 在当前行以下插入 O 在当前行以上插入【例2-5】插入类命令示例插入前插入命令及插入内容插入后howareyouiGood⊕thank!<ESC>i命令: 在当前字符前插入Goodthank!howareyouhowareyouiGood⊕thank!⊕<ESC>i命令: 在当前字符前插入Goodthank!howareyouhowareyouaGood⊕thank!<ESC>a命令: 在当前字符后插入hGoodthank!owareyouhowareyouoGood⊕thank!<ESC>o命令: 在当前行以下插入howareyouGoodthank!howareyouOGood⊕thank!<ESC>O命令: 在当前行以上插入Goodthank!howareyou替代类命令:s,cw,cW,c$,C和cc均以<ESC>为结束符。 rx 将当前字符替换为x,r命令不需要<ESC> [n]s 将n个字符替换为插入内容,n缺省为1 cw 或cW 将当前字符到word/WORD尾替换为插入内容 c$或C 将当前字符到行尾的内容替换为插入内容 cc 将当前行替换为插入内容【例2-6】替代命令示例替换前替换命令及作用替换后May-1OK?rr或者sr<ESC>将当前字符y改为rMar-1OK?May-1OK?cWr-20<ESC>将y-1改为r-20Mar-20OK?May-1OK?c$r-20right?<ESC>或者Cr-20right?<ESC>将y-1OK?改为r-20right?Mar-20-right?May-1OK?ccBuy!⊕Doit!<ESC>将当前行改为两行Buy!Doit!删除类命令删除字符的命令 [n]x 删除n个字符,n缺省为1 d[n]w 删除n个word,n缺省为1 d[n]W 删除n个WORD,n缺省为1 d$ 删除到行尾【例2-7】删除字符命令示例删除前删除命令及作用删除后is2005-May-1OK?x 删除当前字符yis2005-Ma-1OK?is2005-May-1OK?5x 删除5个字符“y-1O”is2005-MaK?is2005-May-1OK?d2w 删除2个word“y-”is2005-Ma1OK?is2005-May-1OK?dW 删除WORD“y-1”is2005-MaOK?is2005-May-1OK?d$ 删除到行尾is2005-Ma行删除命令 dd 删除当前行 [n]dd 删除包括当前行在内的以下n行,n缺省为1 :[i[,j]]d<CR> 删除第i行至第j行,省略j删除第i行【例2-8】行删除命令示例删除前删除命令及作用删除后howareyouGoodthank!Byedd删除第2行(当前行)howareyouthank!ByehowareyouGoodthank!Bye3dd向下删除3行howareyouhowareyouGoodthank!Bye:2,3d<CR>删除第2行和第3行howareyouBye2.3.5全局操作命令搜索命令/[str][/]<CR> 从当前字符起向下搜索匹配str的字符串。向下搜索遇到文件尾时将自动接着从文件首继续,直到当前字符。?[str][?]<CR> 从当前字符起向上搜索匹配str的字符串。向上搜索遇到文件首时将自动接着从文件尾继续,直到当前字符。 以上命令中的第二个斜杠和问号可以省略。若不是第一次搜索,可省略str。N 反向搜索strn 按前一次的搜索方向再一次搜索str正则表达式 以上匹配str的字符串可以有多种表述方式,称为正则表达式:. 除了换行符,可以替代任何一个字符的通配符。[xyz] 方括号中用xyz的枚举方式表述的一个字符的通配符。方括号是必需的符号。枚举方式可以采用a-b的形式,表示按照ASCII的顺序从字符a到b之间的任何一个字符,例如,[0-9]表示一个数字,[0-9_]表示一个数字或者下划线。x* 字符x的0到多次重复,x代表用以上任何一种表述的一个字符。例如a*可以匹配aaa和a等。^ 不表示一个实际的字符,仅代表行首。例如,^Lead表示匹配位于行首的字符串Lead。$ 不表示一个实际的字符,仅代表行尾。例如,Tail$表示匹配位于行尾的字符串Tail。而^$表示空行,表示在行首和行尾之间没有字符。\c 如果c是特殊字符(如.和*等),需用反斜杠\转义。例如,匹配特殊字符.(dot),\,/和*时应该表述为\.,\/,\\和\*。 以下无名宏和有名宏的使用见“s命令”。& 搜索字符串str总会保存在vi的搜索缓冲区内,并且可以用符号&表示引用。这种引用缓冲区的方式称为无名宏。\(字符串\) 将\(和\)之间的字符串定义为有名宏。允许定义多个有名宏,相当于一个有名缓冲区保存一个有名宏。\d d是一个数字,按照有名宏定义的顺序,用\1、\2等引用相应的有名宏。例如,在str中定义了三个有名宏,则在引用时它们依次为\1、\2和\3。d命令 d命令即行删除命令(deleteline),基本格式为: :[g[!]][/pattern/]d<CR> (关于/pattern/的格式参见sed命令) d命令的格式 :/pattern/d<CR> 删除第一个匹配pattern的行 :g/pattern/d<CR> 删除所有匹配pattern的行 :g!/pattern/d<CR> 删除所有不匹配pattern的行 /pattern/用以描述需要删除的范围(又称行地址address),格式为: addr1 匹配addr1的行 addr1,addr2 从匹配addr1到匹配addr2之间的行 省略/pattern/ 删除当前行【例2-9】d命令示例 :/The/d<CR> 删除第一个含字符串The的行 :g/[0-9]/d<CR> 删除所有含有数字的行 :g!/[a-z]/d<CR> 删除所有不含小写字母的行 :/Start/,/End/d<CR> 删除从含有Start到含有End的行 :g/^#/d<CR> 删除所有行首为#的行(shell的注释行) :g/\/\*/d<CR> 删除所有含/*(特殊字符)的行(C语言注释行) :g/^$/d<CR> 删除所有空行(在^和$之间没有字符) :$d<CR> 删除最后一行,这里$表示最后一行 :/^#/,$d<CR> 从第一个shell注释行删除到最后一行s命令 s命令即行替换命令(linesubstitute),基本格式为: :[[g]/pattern/]s/[str]/new_str/[cmd]<CR> s命令的格式::/pattern/s/str/new_str/⊕ 寻找匹配pattern的行,将匹配str的字符串替换为新的字符串new_str(只替换该行中的第一个str)。:g/pattern/s/str/new_str/⊕ 寻找所有匹配pattern的行,将str替换为new_str。:/pattern/s//new_str/⊕ 表示str与pattern相同,即寻找pattern,用new_str替换pattern。:s//new_str/<CR> 表示str与前一次搜索的字符串相同(字符串存在搜索缓冲区中)。:g//s//new_str/<CR> 寻找所有pattern,用new_str替换pattern。辅助命令(辅助功能) 在s命令“:[[g]/pattern/]s/[str]/new_str/[cmd]<CR>”中含有cmd。 用cmd表示s命令的辅助功能,包括:g 在匹配pattern的行内替换所有匹配str的字符串p 显示最后一个替换的行gp 替换所有匹配str的字符串,并显示所有替换过的行【例2-10】s命令示例:/if□[/⊕ 寻找“if□[”:g//s//if□(/g⊕ 在所有行中用“if□(”替换所有的“if□[” 等价为:g/if□[/s//if□(/g⊕:3,50s/ABC/123/ 在第3行到第50行中用123替换一个ABC:3,50s/ABC/123/gp 在第3行到第50行中用123替换所有的ABC,并且显示所有被替换的行【例2-11】无名宏示例 要求在C程序中将输出从stdout改为stderr,即所有的“printf(”需要改为“fprintf(stderr,”,操作如下: :g/printf(/s//f&stderr,/<CR> 表示用无名宏&引用搜索缓冲区中的“printf(”【例2-12】有名宏示例 用有名宏完成上例的操作: :g/\(printf(\)/s//f\1stderr,/<CR> 表示用\(和\)定义“printf(”为有名宏,\1表示引用“printf(”。 要求将文件中含有以字母开头后缀为.c的字符串(C程序的文件名)改为后缀为.cpp的字符串(C++的文件名),操作如下: :g/\([_A-Za-z0-9]*\)\.\(c\)/s//\1.\2pp/g<CR> 其中,用\(和\)将文件前缀“[_A-Za-z0-9]*”定义为有名宏1,用\(和\)将“c”定义为有名宏2,然后分别用\1和\2引用有名宏。2.3.6块操作命令块操作概述 vi提供三个基本的动作:pick(拾取),cut(剪取)和put(粘贴)。由此完成按块(block)进行复制(copy)和移动(move)的功能。 其中,copy=pick+put,move=cut+put。 以字符(char)、词(word或WORD)为单位或者以行(line)为单位均可组成块。一个无名缓冲区用来存放无名块,若干个有名缓冲区用来存放用户定义的有名块。vi块操作命令 pick: [”x][n]yw或者[”x][n]yW 复制n个词(word或WORD)存入存入缓冲区。 pick: [”x][n]yy 复制含当前行在内的n行存入缓冲区。 cut: [”x][n]dd 剪取含当前行在内的n行存入缓冲区。 其中,y是yank(移出)的缩写。n缺省为1。字符x表示定义有名缓冲区,省略x表示存取无名缓冲区。已经介绍过的删除类命令都可以作为剪取命令。 put: [”x]p或者[”x]P 粘贴缓冲区内容 若块的内容以行为单位,则向下(p)或者向上(P)粘贴。 若块的内容以字符为单位,则向右(p)或者向左(P)粘贴。ex块操作命令 copy: :i[,j]cok<CR> 将第i行到第j行复制到第k行之下。 move: :i[,j]mk<CR> 将第i行到第j行移到第k行之下。 其中,省略j表示只对第i行实施复制或者移动。【例2-13】块操作命令示例 将第2行的you复制到第1行的问号前,操作过程为: yw/?/⊕Phoware?thank□you.goodbye!~~=>howare?thank□you.goodbye!~~=>howareyou?thank□you.goodbye!~~待编辑文本执行yw/?/⊕后执行P命令后 将第2行移到第3行(本行与下一行交换),操作过程为 ⊕ddphowareyou?thank□you.goodbye!~~=>howareyou?goodbye!~~~=>howareyou?goodbye!thank□you.~~待编辑文本执行⊕dd后执行p命令后 将当前行(第3行)复制到第1行,操作过程为 yy1GPhowareyou?goodbye!thank□you.~~=>howareyou?goodbye!thank□you.~~=>thank□you.howareyou?goodbye!thank□you.~待编辑文本执行yy1G后执行P命令后 利用有名缓冲区将“thank”复制到第3行行尾,操作过程为 ”ayw⊕⊕$”apthank□you.howareyou?goodbye!thank□you.~=>thank□you.howareyou?goodbye!thank□you.~=>thank□you.howareyou?goodbye!thankthank□you.~待编辑文本执行”ayw⊕⊕$后执行”ap命令后2.3.7杂类命令 . 重复执行编辑类命令(插入、删除和替代命令) u 撤消刚才执行的编辑类命令,^r 恢复刚才撤消的命令。 J 将下一行连到本行尾,等价于将换行符改为空格。 ^L 控制键CRTL+L,刷新屏幕。 :sh<CR> 转到shell状态,将显示shell的待命符,以便执行sh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024美发店与消防部门安全检查合同
- 2025年度校园食堂厨师劳务派遣合同4篇
- 2025年度图书代售及推广服务合同4篇
- 2024碎石原料交易市场建设合同
- 2024装修工程额外项目合同书一
- 2025年度智慧城市建设综合解决方案承包合作协议4篇
- 2025年度SEO风险管理与合规性审核合同3篇
- 2025年度山林土地流转与综合开发承包合同4篇
- 2024正规商铺买卖合同合同标的物权属核实协议3篇
- 2024年教学专用高清晰度数码集成背投行业发展趋势报告
- GB/T 16895.3-2024低压电气装置第5-54部分:电气设备的选择和安装接地配置和保护导体
- 2025湖北襄阳市12345政府热线话务员招聘5人高频重点提升(共500题)附带答案详解
- 计划合同部部长述职报告范文
- 2025年河北省职业院校技能大赛智能节水系统设计与安装(高职组)考试题库(含答案)
- 人教版高一地理必修一期末试卷
- 2024年下半年鄂州市城市发展投资控股集团限公司社会招聘【27人】易考易错模拟试题(共500题)试卷后附参考答案
- GB/T 29498-2024木门窗通用技术要求
- 《职业院校与本科高校对口贯通分段培养协议书》
- GJB9001C质量管理体系要求-培训专题培训课件
- 人教版(2024)英语七年级上册单词表
- 二手车车主寄售协议书范文范本
评论
0/150
提交评论