您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 第5章 全屏幕文本编辑器vi
第五章全屏幕文本编辑器vi内容提要:vi的三种模式进入vi的多种方法及打开多个文件的方法熟悉vi中保存和退出的命令熟悉光标移动命令,掌握光标移动与文本修改命令的配合多种修改文件的命令模式的概念,查找和替换命令复制文件内容的方法5.1vi简介vi是visualinterface的简称,是交互式的全屏幕编辑程序.5.1.1vi的特点文本编辑器(没有排版功能,处理纯文本字符)全屏幕编辑(从行编辑发展过来)命令模式,不提供菜单,与dos提供的edit有很大的差异.用户可以根据自己的需要和爱好定制vi25.1.2vi的工作模式图末行模式命令模式输入模式自动【ESC】a,i,oLinuxvi退出vi:5.1.2vi的工作模式在vi中工作一定要注意在什么模式中工作,否则会造成混乱三种模式是:命令模式、输入模式、末行模式命令模式:用户一进入vi就进入了命令模式,在该模式中任何键入的字符都被看成vi的命令,键入后立即执行。输入模式:当用户需要输入文本时,使用某个命令,进入输入模式,才可开始输入文本。末行模式:也称ex模式,在命令模式中键入冒号(:),就进入了末行模式,在末行模式中输入exล瘄命令,例如w(写)和回车,就可将编辑的内容存入文件。5.1.2vi的工作模式(续)三种工作模式之间转换(1)在操作系统提示符下键入vi,就进入了命令模式(2)由命令模式进入输入模式,键入编辑命令,如插入命令i、添加命令a、建立新行命令o、取代命令r、替换命令s等等。(3)由命令模式进入末行模式,只需键入冒号(:),每次只执行一条,执行完毕立即回到命令模式(4)不论在什么模式,只要键入【ESC】键,就可回到命令模式。(5)输入模式和末行模式之间不能直接切换,必须通过命令模式。(6)在命令模式,用二个ZZ(大写),可以退出vi;在末行模式用q或q!,还可以用wq。5.2vi的进入与退出5.2.1vi的进入(二种方法)vifilename这是编辑一个新文件或编辑一个已经存在的文件的方法如果是新文件,系统会为你创建一个文件名是filename的文件如果你需要对一个存在的文件进行修改,系统会把文件的内容读入vi使用的缓冲区,供你进行编辑,完成编辑后,用相关命令写入原文件或写入一个另一个新的文件.vi这是编辑一个新的文件的方法在编辑完成后必须用相关命令写入一个新的文件,否则一切编辑动作都无效.5.2.1vi的进入(续)进入vi后光标停留在文件的第一行行首,如希望停留在其他行,可用下面的命令:vi+nfillename(进入vi后当前光标位置为第n行)vi+filename(进入vi后当前光标位置为文件尾)vi+/stringfilename(进入vi后当前光标位置为字符串srting所在行的行首。)5.2.2输入一段文本进入vi后,键入i(或a)命令,就可输入文本了,不仅在当前光标位置可输入,也可用带箭头的方向键移动光标后再输入。如果输入有错误,按【Delete】键删除前一字符。(光标移动过则【Delete】不起作用。)文本输入完毕,用【ESC】结束本次输入模式,回退到命令模式.5.2.3退出退出vi有三种情形:(1)以原有的文件名保存已经作过的编辑,退出vi进入末行模式下退出,用以下命令::wq(等价于:w及:q)或:x在命令模式下退出,用二个大写的ZZ即可(2)以新的文件名保存,必须进入末行模式,用以下命令::wnewfilename(保存到新文件):q(退出)(3)不保存所作过的一切编辑动作,在末行模式下退出vi::q!在末行模式可以不离开vi执行一条linux命令::!cmd5.2.4vi的帮助在操作系统提示符下使用man命令:$manvi在vi的末行模式下使用help命令::help(用:q!退出):helpvcmd(用:q!退出)5.3vi的编辑操作和命令移动光标文本插入操作修改文本5.3.1行号vi的工作是在文本缓冲区中做的,为了帮助用户观看,可为文本的行设置一个行号,放在文本的左侧(行首前)可以用末行命令set来设置和取消::setnumber(:setnu):setnonumber(:setnonu)可以用:nu来获得当前光标的行号和当前行的内容可以用【crtl+g】来获得当前行在文件中的相对位置,在系统提示行上显示在整个文件中的百分数5.3.2移动光标光标可移动的单位:(1)字符:汉字由二个ASCII字符宽度,移动的单位是一个汉字,英文或数字等是一个ASCII字符宽度(2)行:文本的一行,可用行号定位(3)屏幕:分成半个屏幕高或整个屏幕高(页)(4)行首和行尾:文本行的行尾和行首(5)字:广义字和狭义字广义字:由空格作为间隔符狭义字:英文单词、标点符号及一些特殊字符均作为一个字(6)句:以逗号、句号、问号、感叹号结尾且后面有二个以上(含二个)空格或一个换行符的字符序列。(7)段:以一个空白行开始和结束的字符序列5.3.2移动光标(续)按字符移动的键:(1)四个带箭头的方向键:各自按方向移动一个字符(2)j、k、h、l:各自按上、下、左、右移动一个字符(3)【spacebar】:光标右移一个字符【backspace】:光标左移一个字符【ctrl+n】:光标下移一个字符【ctrl+p】:光标上移一个字符按行来移动光标:【Home】:光标移动到本行行首?(0行首,^第一个非空白字符)$或【End】(?):光标移动到本行行尾-:光标移动到上一行的行首5.3.2移动光标(续)跳到指定的行[行号]G缺省为到文件的最后行在屏幕上移动H:光标移动到屏幕首行行首M:光标移动到屏幕显示文件的中间行行首L:光标移动到屏幕最底行行首按字移动光标(小写字母对狭义的字,大写字母对广义的字)w和W将光标移动到下一个字的字首e和E将光标移动到下一个字的字尾b和B将光标移动到前一个字的字首5.3.2移动光标(续)按句移动(:将光标移到上一个句子的开头):将光标移到下一个句子的开头按段移动:{:将光标移到上一个段的开头}:将光标移到下一个段的开头屏幕滚动【ctrl+u】:将屏幕向文件头方向翻滚半屏【ctrl+d】:将屏幕向文件尾方向翻滚半屏【ctrl+f】:将屏幕向文件尾方向翻滚一整屏【ctrl+b】:将屏幕向文件头方向翻滚一整屏5.3.3文本插入操作输入任意的文本,都要将vi的工作模式从命令模式切换到文本输入模式.切换的命令有:i:在当前光标之前插入文本I:在当前行的行首插入文本a:在当前光标之后添加文本A:在当前行的行尾添加文本o:在当前行的下面开一个新行O:在当前行的上面开一个新行5.3.4修改文本文本的删除x:删除光标处的字符nx:删除光标位置起的右n个字符X:删除光标前的字符nX:删除光标位置前的左n个字符dd:删除当前行ndd:删除当前行起的n行D或d$:删除光标起到行尾的内容d0:删除光标前一个字符到行首的内容dw:删除一个单词ndw:删除n个单词5.3.4修改文本(续)恢复删除u、U命令和重复(.)命令u:取消上一次的编辑动作(可多次)U:取消在本行所有的编辑动作重复命令(.):再一次执行刚执行过的命令九个寄存器的使用vi提供九个寄存器,以数字1,2,…,9命名,每次用dd命令删除一行就送往寄存器1,而原寄存器1的内容则送往寄存器2,寄存器2的内容送往寄存器3,…。超过9次,则最早被删除的内容就不再保留。如果要恢复第n次用d命令删除的内容,则可用np命令(n10).5.3.4修改文本(续)修改命令c注意键入命令后就进入了输入模式,所以输入完毕必须用【ESC】回到命令模式.cobject:改变光标位置起到object位置的内容.C或c$:改变光标位置起到行尾的内容.nC:改变光标位置起的n行内容cc:改变当前行的内容.ncc:改变当前行起n行的内容5.3.4修改文本(续)文本替换文本替换是用新的文本替换原有的文本命令:r和Rrx:用x字符替换光标位置的字符nrx:用x字符替换光标位置起的n个字符R:用跟随其后的字符一对一地替换文本,结束后应用【ESC】键回到命令模式nR:表示R后面输入的内容重复n次5.3.4修改文本(续)s和S命令s:用跟随在其后的字符串替换光标位置的字符,结束后应用【ESC】键回到命令模式ns:用跟随在其后的字符串替换光标位置起的n个字符,结束后应用【ESC】键回到命令模式S:用跟随在其后的字符串替换当前行,结束后应用【ESC】键回到命令模式nS:用跟随在其后的字符串替换当前行起的n行,结束后应用【ESC】键回到命令模式字替换cw:用跟随在其后的字符串替换光标位置的字(狭义),结束后应用【ESC】键回到命令模式5.3.4修改文本(续)行的合并J:把光标所在行与下一行合并成一行nJ:把光标所在行与下面的n-1行合并成一行5.3.4修改文本(续)文本行的移动“”:将限定的文本右移8个空格,限定的文本由当前行与在后的光标移动命令所限定.例如:L表示将当前行到屏幕末行为至的文本都右移8个空格。“”:将限定的文本左移8个空格,限定的文本由当前行与在后的光标移动命令所限定.例如:H表示将当前行到屏幕首行为至的文本都左移移8个空格。“”:将当前行右移8个空格.“”:将当前行左移8个空格.“n”:将当前行和其后的n-1行右移8个空格.“n”:将当前行和其后的n-1行左移8个空格.5.3.4修改文本(续)文本行的异行移动:其实质是先把要移动的n行先删除,然后粘贴到目的行,步骤如下:(1)将光标移到要移动的n行首行(2)ndd(3)将光标移到目的行处(4)键入1p,将被删除的n行从1号寄存器中取出.使用末行命令:n1,n2mk(将从n1行到n2行的文本移动到k行处,其中m是移动命令)5.3.4修改文本(续)屏幕调零命令[行号]z[行数]回车:将由行号(缺省为当前行)指定的行显示在屏幕的首行,行数指定了显示的行数[行号]z[行数].:将由行号(缺省为当前行)指定的行显示在屏幕的中间,行数指定了显示的行数[行号]z[行数]-:将由行号(缺省为当前行)指定的行显示在屏幕的最末行,行数指定了显示的行数5.4字符串的查找字符串查找重复查找:n和N命令字符查找命令光标靠近字符命令全局替换命令模式表达式5.4.1字符串查找向前(文件的尾部)查找命令方式/模式【Enter】:光标将停留在查找到的第一个和模式匹配的字符上/模式/-:光标将停留在查找到的第一个和模式匹配的字符所在行的上一行上/模式/+:光标将停留在查找到的第一个和模式匹配的字符所在行的下一行上/模式/-n:光标将停留在查找到的第一个和模式匹配的字符所在行的上n行上/模式/+n:光标将停留在查找到的第一个和模式匹配的字符所在行的下n行上5.4.1字符串查找(续)向后(文件的头部)查找命令方式?模式【Enter】:光标将停留在查找到的第一个和模式匹配的字符上?模式?-:光标将停留在查找到的第一个和模式匹配的字符所在行的上一行上?模式?+:光标将停留在查找到的第一个和模式匹配的字符所在行的下一行上?模式?-n:光标将停留在查找到的第一个和模式匹配的字符所在行的上n行上?模式?+n:光标将停留在查找到的第一个和模式匹配的字符所在行的下n行上5.4.2检索下一个字符串n命令:重复上一个查找,查找方向与上一次相同.N命令:重复上一个查找,查找方向与上一次相反.5.4.3字符检索使用f命令可在当前行上向前查找给定的字符:f字符5.4.4光标靠近字符t:从光标当前行向前查找指定的字符,光标停留在指定字符之前的字符.T:从光标当前行向后查找指定的字符,光标停留在指定字符之后的字符.5.4.5全局替换命
本文标题:第5章 全屏幕文本编辑器vi
链接地址:https://www.777doc.com/doc-3371770 .html