vi和vim编辑命令大全.doc_第1页
vi和vim编辑命令大全.doc_第2页
vi和vim编辑命令大全.doc_第3页
vi和vim编辑命令大全.doc_第4页
vi和vim编辑命令大全.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Vi编辑器如同很多在Unix早期阶段开发的应用程序一样,有着不易使用的名声。Bram Molenaar的克隆加强版,vim(Vi Improved)已经走了很长的一段路来消除这样的印象。Vim包含了很多的便利功能,如直观的指示、帮助页面等。它可能已经成为一种最流行的vi编辑器版本,所以本书的第七版为此专门在第二部分辟出七个新单元,并命名为vim。当然,还有很多其它有价值的vi克隆版本同样存在,我们在第三部分选取了它们中的三个,并命名为other vi in clones。本文档分成了四个单元。第一单元,vi的基础与进阶,是为了让你快速入手vi,并且后面的高级技巧会让你vi用的更加得心应手。最初的两个部分,单元1,vi文本编辑器,和单元2,简单的编辑,介绍了一些你可以入门的简单vi命令。你应当不断练习直到这些命令成为你的第二天性。你可以在第2单元后停止阅读,在已经学习了一些基础的编辑工具后。但是vi意味着干很多又不仅仅是和基本词汇有关的过程;各种各样的命令和选项能使你应对很多编辑的苦差事时更加简便。第3,4单元,专注于用更简单的方法去完成目标。在你第1次阅读期间,你至少会了解到vi能做什么和你可以利用什么命令来完成你特定的需求。你可以回过来再看这些单元做更深一步的学习。第5单元,介绍ex编辑器,第6单元,全局替换,和第7单元高级编辑,提供工具帮助你转移更多的编辑重担到电脑上。首先给出常用命令总结,方便您的查询使用!表格1 编辑命令文本对象 修改 删除 复制一个单词 cw dw yw两个单词,不包括标点 2cW或c2W 2dW或d2W 2yW或y2W前三个单词 3cb或c3b 3db或d3b 3yb或y3b一行 cc dd yy或Y到行末 c$或C d$或D y$到行头 c0 d0 y0单个字符 r x或X yl或yh五个字符 5s 5x 5yl表格2 移动移动 命令 h,j,k,l当下一行的第一个字符 +但前一行的第一个字符 -到单词的末尾 e或E向前一个单词 w或W向后一个单词 b或B到行末 $到行首 0表格3 其它操作操作 命令从缓存区粘贴文本 P或p打开vi,打开文本 vi 文件名保存编辑,退出文件 ZZ不保存编辑,退出文件 :q!表格4 文本创建和操控命令编辑行为 命令在当前位置插入文本 i在行首插入文本 I附加文本在当前位置 a在行首附加文本 A在光标下开新的一行 o在光标上开新的一行 O删除行并替代文本 S重击存在的字符代以新字符 R连接当前和下一行 J切换大小写 重复上一次操作 .取消上一次修改 u恢复行到原来的状态 U表格5 定位光标命令移动 命令正向滚动一个屏幕 F反向滚动一个屏幕 B正向滚动半个屏幕 D反向滚动半个屏幕 U正向滚动一行 E反向滚动一行 Y移动当前行到屏幕顶端并滚动 z ENTER移动当前行到屏幕中部并滚动 z .移动当前行到屏幕底端并滚动 z -刷新屏幕 L移动到家屏幕的最顶行 H移动到屏幕中间一行 M移动到屏幕最底一行 L移动到下一行的开头字符 ENTER移动到下一行的开头字符 +移动到前一行的开头字符 -移动到当前行第一个非空字符 移动到当前行的第n列 n|移动到单词的尾部 e移动到单词的尾部(忽略标点) E移动到当前句子的开头 (移动到下一个句子的开头 )移动到当前段落的开头 移动到下一段落的开头 移动到当前章节的开头 移动到下一章节的开头 正向搜索模式 /pattern反向搜索模式 ?pattern重复上一次搜索 n转换方向的重复上一次搜索 N正向重复上一次搜索 /反向重复上一次搜索 ?移动到当前行下一次出现x的地方 fx移动到当前行上一次出现x的地方 Fx移动到当前行后一个之前出现的x tx移动到当前行前一个之后出现的x Tx在相同方向重复先前的查找命令 ;在相反方向重复先前的查找命令 ,去给出的行n nG去文件的末行 G回到先前的标记和上下文 回到行的起初包含先前的标记 显示当前行(不是一个移动命令) G表格 6 复杂组合命令修改 删除 复制 从光标到cH dH yH 屏幕顶端cL dL yL 屏幕底端c+ d+ y+ 下一行c5| d5| y5| 当前行的第5列2c) 2d) 2y) 到句子的第二个字符c d y 前一个段落c/pattern d/pattern y/pattern 模式cn dn yn 下一个模式cG dG yG 文件的结尾c13G d13G y13G 第13行第一单元Vi文本编辑器一个简洁的历史观点在全世界有成百上千不同类型的终端存在并被使用。每一种都做着相同的事情(清屏,移动光标等等),但是那些被用来让它们执行的命令却是不同的。另外,unix系统让你自己选择字符用作退格,产生一个中断信号,或是其它有用的命令在串行终端上,例如暂停和恢复输出。这些设备以前是(现在仍然是)管理着设备终端。打开和关闭文件Vi工作原理你可以用vi编辑任何文本文件。Vi复制需要编辑的文件到缓冲区中(一个在储存器中临时储存数据的地方),并显示缓冲区的内容(虽然你同时只能看到一屏幕的东西),然后你可以进行增加,删除,和更改文本等操作。在保存已编辑好的文本时,vi把编辑好的缓存区的内容复制到外存贮器,覆盖相同名字的旧文件。要记住你一直在复制了你的文件的缓冲区上工作,你的编辑将不会影响你的原始文件直到你保存文件。储存你的编辑文件也叫做“写入缓冲区”,或更普通“写入你的文件”。打开文件Vi是用来启动vi编辑器来打开一个已存在的文件或是一个全新的文件的unix命令。Vi命令的语法是:$vi【文件名】括号在如上的命令行中显示出文件名是可选择的。括号不可以被打出来。$符号是unix的提示。如果文件名被忽略,vi编辑器将打开一个没有名字的缓冲区。你可以指定名字当将缓冲区写入文件。不过,还是让我们坚持在命令行给文件起名。文件名在它的目录下必须是独一无二的。一个文件名可以包括任何8-bit的字符除了斜线号(/),这个符号是保留用来在路径名中分离文件名和目录名的,空字符,零bit的字符。你甚至可以在文件名中包括空格通过打反斜杠号在空格之前。实际上,不过,文件名通常包含各种组合的大小写字母,数字,点号(.),和下划线(_)。记住unix系统是区分大小写:小写字母和大写字母是区分的。也要记住你必须按ENTER去告诉unix你已经输入完你的命令。当你在目录下想打开一个新文件是,在文件名前加上vi命令。例如,如果你想打开一个新文件叫practice在当前目录下,你需要输入:$vi practice既然这是一个新文件,缓冲区是空的,屏幕显示如下:practicenew file波浪线()递降排列在屏幕左边显示出在文件中没有内容,甚至不空行。在底部的提示行(也叫状态行)显示文件名和文件状态。你也能编辑在目录下任何存在的文本文件只要通过指定文件名。如果有unix文件有这样的路径/home/john/letter。如果你已经在/home/john目录下,用相对路径。例如:$vi letter将文件letter副本复制到屏幕。如果你在另一个目录,要给出完全路径才能开始编辑:$vi /home/john/letter打开文件的问题当你调用vi是,信息open mode出现。你的终端类型可能没有被正确的识别。快速退出编辑模式通过输入:q。检查环境变量$TERM。它应当符合你的终端名。或者去告诉你的系统管理员提供准确的终端类型设置。你看见如下信息之一:Visual needs addressable cursor or upline capabilityBad termcap entryTermcap entry too long Terminal:Unknown terminal typeBlock device requiredNot a typewriter你的终端类型要么没有定义,要么terminfo和termcap进入方面可能有一些问题。输入:q退出。检查你的$TERM环境变量,或者告诉你的系统管理员为你的环境选择一个终端类型。当你觉得这个文件已存在,却出现new file信息检查一下你的文件名是否用对了大小写(unix的文件名是区分大小写的)。如果你没有错,你可能在错误的目录下。输入:q退出。然后检查文件是否在正确的目录下(在unix提示下输入pwd)。如果你在正确的目录下,检查在这目录下的文件列表(通过ls)是否有存在文件名相近的名字。你调用vi,但是你却得到冒号提示(显示你在ex行编辑模式)。你可能在输入了什么东西在vi刷屏前。进入vi通过输入vi在ex提示(:)下。如下之一的信息出现:Read onlyFile is read onlyPermission denied“Read only”表明你只能查看文件;你不能保存你的修改。你可能调用了vi的查看模式(按了view或是vi -R),或者你对此文件没有权限。看一下在第10页标题为“保存文件的问题”的内容。如下之一的信息出现:Bad file numberBlock special fileCharacter special fileDirectoryExecutableNon-ascii fileFile non-ASCII你要打开编辑的文件不是一个正常的文本文件。输入:q!退出,然后检查你想编辑的文件,可能有文件命令。当你输入:q因为前面提到的任一困难出现时,出现如下信息:No write since last change (:quit! Overrides)你已经不小心修改了文件。通过输入:q!退出vi。你在对话期间的修改将不会保存在文件中。做法正如先前提到的,对于vi的工作来说,现在的“模式”的概念是非常重要的。有两种模式,命令模式和插入模式,你起始于命令模式,你的任何键盘敲击都将被看做是命令。在插入模式,你输入的任何东西都将变成你文件中的文本。有时,你可能不小心进入插入模式,或是相反的,离开插入模式一不小心。不论发生何种情况,你输入的东西将会影响你的文件时是你所不期望。按ESC键去强制vi进入命令模式。如果你早已进入命令模式,vi编辑器会嘟嘟响提示当你按ESC键时。(因此命令模式此时有时又叫做“嘟嘟响模式”)保存和退出一个文件你任何时候都可以退出文件编辑,并保存你的编辑,然后退出到unix的提示界面。Vi编辑器的退出并保存的命令是ZZ。ZZ是大写的。让我们假定你创建了一个文件叫practice来练习vi命令,你打了六行的内容。为了保存文件,首先通过按ESC键进入命令模式,然后按ZZ。你同样可以用ex命令保存你的编辑。输入:w保存你的文件但是不会退出vi;输入:q退出如果你没有做任何编辑;输入:wq同时保存你的文件和退出(:wq和ZZ相等。)。我们会在第5章详尽解释如何用ex命令;暂时,你只需要记住一些关于编辑和保存的命令。退出并不保存编辑当你第一次学习vi编辑器,尤其如果你是一个无谓的实验者,有两个ex命令可以容易的解除你创造的任何混乱。:e! ENTER清除所有你在对话框内的编辑然后回到原始文件重新开始:q! ENTER你想清除你的编辑内容并退出vi,回到了unix的提示符这两个命令,你将失去自从你上一次保存到现在所有你编辑在缓冲区的东西。:!rm junkfile删除没用的文件释放空间。(通过一个感叹号开始ex命令让你使用unix。):!df看一下在其它的文件系统里是否有空间。:w newfile将缓冲区的内容写出到新的文件:w pathname写入你的文件到那目录下:!ls /tmp看一下是否有其它文件你可以移走来得到一些磁盘空间:sh或CTRL+Z如果你正在用作业控制系统,搬离vi和移除文件fg或CTRL+D 回到viVi一般不会让你知道扔掉了你的编辑。感叹号加到:e和:q命令后面让vi忽略这个禁止,继续操作即使缓冲区已经被修改。保存文件的问题你尝试写入文件,但是得到如下之一的信息: File exists File file exists -use w! Existing file File is read only输入:w! file覆盖已存在的文件,或是输入:w newfile保存已编辑的文件到新的文件。你想写入文件,但是你没有写入这个文件的权限。你得到信息“Permisson denied”用:w newfile将缓冲区的内容写出到新的文件,如果你在这个目录下有写入的权限,你可以用mv取代原来版本通过复制这个文件。如果你没有这个目录下写入的权限,输入:w pathname/file 将缓冲区的内容保存到你有权限写入的目录下去(例如你的主目录或是/tmp). 你尝试写入你的文件,但是你得到信息告诉你文件系统已满。输入:!rm junkfile删除没用的文件释放一些空间。(通过一个感叹号开始ex命令让你使用unix。)或是输入:!df看一下在其它的文件系统里是否有空间。如果有,在文件系统上选择一个目录,写入你的文件到那目录下:w pathname。(df是unix命令检查一个磁盘上的空闲空间。)系统让你处在打开状态然后告诉你文件系统已满。Vi在磁盘上的临时文件已被存满。输入:!ls /tmp看一下是否有其它文件你可以移走已得到一些磁盘空间。#如果有,建立一个临时的unix shell以移除文件或建立其它的unix命令。你可以建立一个Shell通过输入:sh;输入CTRL-D或exit终止shell回到vi。(在现在的unix系统上,当使用一个作业控制shell,你可以简单的输入CTRL-Z暂停vi回到unix提示符;输入fg回到vi。)一旦你已经释放一些空间,写入你的文件用:w!。你尝试写入你的文件,但是你得到一个信息说你的磁盘配额已经达标。尝试强行系统保存你缓冲区的内容通过ex命令:pre(:preserve的缩写)。如果没用,找一些文件移除。用:sh(或CTRL-Z如果你正在用作业控制系统)搬离vi和移除文件。用CTRL-D(或fg)回到vi当你已经做完。然后写入你的文件用:w!。练习学习vi的唯一方法就是练习。你现在知道了足够的知识去创建新的文件和回到unix提示符。创建一个文件叫practice,插入一些文本,然后保存并退出文件。打开一个叫practice的文件在当前目录下: vi practice插入文本: i am text you like回到命令模式: ESC退出vi,保存编辑: ZZ第二单元 简单编辑这一章将介绍用vi编辑,用来当自学教程的。本章我们将学习如何移动光标和如何做一些简单的编辑。如果你从没有用vi工作过,你应该阅读全章。稍后本章将向你展示如何长进你的技术以更快更好的编辑。对于精于vi的用户来说一个最大的好处就是有很多的选项可供选择。(对于新手来说一个最大的坏处就是vi有太多的复杂编辑命令。)当你学习vi,注意让更多的任务你是可以交给编辑器的,然后找到命令完成它。在接下来的一章你会学到更多vi高级的特征,但是在你掌握高级的之前,你必须先掌握简单的。这一章包括:移动光标加入和改变文本删除,移动,和复制文本更多的方法进入插入模式Vi命令Vi有两个模式:命令模式和插入模式。你一进入文件,你就进入命令模式,编辑器就一直等你输入命令。命令能让你移动到文件的任何地方,去编辑,或是进入插入模式和加入新的文本。命令同样可以被用来退出文件(保存或忽视你的编辑)以回到unix的提示符。你可以理解为不同的模式代表了两种不同的键盘。在插入模式,你的键盘功能相当于一个打字机。在命令模式,每一个键有一个新的意义或初始一些指令。进入插入模式最常用的方法之一就是按i。i不会出现在屏幕上,但是之后,无论你按什么都将会出现在屏幕上也将会存入缓冲区。光标标记现在插入点。停止插入文本按ESC。按ESC就移动光标回到你最后输入的字符地方,回到vi的命令模式。例如,假如你已经打开一个新文件想插入单词“introduction。”如果你输入了iintroduction,在屏幕上显示的是 introduction当你打开一个新的文件,vi开始于命令模式只要第一个按(i)就打断进入插入模式。之后所有的键盘输入都将被认为是文本输入直到你按ESC。如果你需要修正一个错误然而你却在插入模式,退格并修正错误。基于你在使用的终端类型,退格可能会清除你先前已经输入的或可能只是回退了。在其它的事情中,所有你回退的都将被删除。记住你不能用退格键回退到你进入插入模式的点的前面。(如果你已经禁用了vi的兼容性,vim允许你用退格回退到你进入到插入模式的点的之前。)Vi有一个选择让你定义一个正确的页边白和提供自动回车当你到达它的时候。就目前,当你正在插入文本,按ENTER换行。有时你自己不知道是在插入模式还是在命令模式。无论什么时候vi不会回应如你所期望的,按ESC一两次以检查你在什么模式下。当你听到蜂鸣声,你就在命令模式。移动光标你可能用只用一小会的时间在编辑会话加入新的文本在插入模式;很多时候你会很多时间编辑以退出文本。在插入模式你可以定位光标到文件的任何地方。既然你开始所有基础编辑(改变,删除和复制文本)通过定位光标到你想改变的地方,你想能移动光标到目的地越快越好。*一些版本在状态行显示你在(input mode)插入模式有以下vi命令来移动光标:上,下,做和右每一次移动一个字母向前或向后一个文本块如一个单词,一个句子,一个段落。向前或向后翻过一个文件,一屏幕一次。在图2-1,一个下划线表示出现在光标的位置。圈圈显示了光标从它现在的位置移动到通过不同的vi命令到的位置。图2-1,简单的移动命令。简单的移动键h,j,k和l,权利在你指尖,将移动光标。h 左,一个空l 右,一个空格j 下,一行k 上,一行你同样可以用光标箭头键(,),用+和-上升和下降,或用ENTER和BACKSPACE,但它们不常用。一开始,似乎用字母键替代箭头键移动光标有点麻烦。过了一段时间,然而,你就会发现这将是你最喜欢vi的一点之你可以移动光标甚至不用将你的手指离开中心键盘区域。在你移动光标之前,按ESC以确认你已经在命令模式下。用h,j,k和l在文件中从光标现在的位置前后的移动。当你在一个位置已经移动到极限时,你会听一记嘟声然后光标停止了。例如,一旦你在一行的开始或者结尾处,你就不能用h或l回到前一行或下一行;你必须用j或k。+简单说来,就是你不能移动光标超过代表空行的波浪线(),你也不能移动光标到第一行文本之上。数值参数你可以先于移动命令前加入数字。4l命令如何光标向左移动四个字符,就好像你已经输入l四遍了(llll)。复合命令给你更多的选择和更强的功能。把这个记住就如你被介绍了额外的命令。当你保存文件practice时,vi显示一个信息告诉你有在那个文件里有多少行。行不一定如出现在屏幕上的轮廓线一样有相同长度(一般限制在80个字符)。一行就是任何文本被插入在新行之间(新的一行将被插入进文件当你在插入模式中按ENTER键。)如果你在按ENTER键之前输入了200个字符,vi认为这200个字符就是一行(即使这些200个字符在屏幕上明显的被分成了好几行)。正如我们在第一章中提到的,vi有一个选项允许你设置到右边白的距离然后vi会自动换行。这个选项是wrapmargin(它的缩写是wm)。你可以设置一个wrapmargin 10个字符::set wm=10设置每一行最多输入的字符数。我们会谈论更多的设置选项在第7章。(这个真的不能等!)如果你不用vi的自动wrapmargin选项,你应该换行用回车键以保持可控制的行的长度。+vim,有nocompatible(兼容模式)设置,允许你“跳过空白”行的尾部到下一个用l或空格。两个在一行中移动的有用的命令:0(数字零) 移动到行首。$ 移动到行尾。在如下的例子中,行号被显示出来。(行号可以在vi中被显示出来通过用数字选项,通过在命令模式下输入:set nu开启这个功能。这个操作将在第七章介绍。)逻辑上的第(3)行并不符合你在屏幕上所看见的第(5)行。如果光标现在在单词word的d上,然后你按$,光标会移动到这一周期最后的单词word。如果你输入0,光标会移回到单词move中的m,第2行的开头。文本块的移动你同样可以在文本块间移动光标:单词,句子,段落,等等。w命令光标每一次向前移动一个单词,计数符号和标点符号相当于单词。如下的一行显示出用w命令的光标的移动:Cursor,delete,lines,insert characters,你同样可以移动光标通过一个单词,而不包括计数符号和标点符号,用W命令。(你可以把它看做一个“大的”或“大写”的Word。)光标的移动用W就是这样:Cursor,delete,lines,insert characters,一个单词的向后移动,就用b命令。大写的B允许你回移一个单词,不包括计数符号。正如先前所提到的,移动命令采取数值参数;所以,用无论是w 或 b命令以可以用数字增加移动。2w向前移动两个单词;5B向后移动5个单词,不包括计数符号。为了移动到专门的一行,你可以用G命令。单个G移动到文件末尾,1G到文件的开头,还有42G则到第42行。这个将会有更多的细节描述在接下来的第43页的一章“G(GO TO)命令”。简单的编辑当你进入你文件的文本时,它很少是完美的。你找到打字错误或是想改进短语;有时你的程序有一个错误。一旦你进入文本,你就能去改变它,删除它,移动它,或复制它。在vi编辑器中你可以实现这些编辑通过一些简单的基础的按键:i是插入;a是附加;c是改变;和d是删除。要移动或复制文件你用了很多组命令。你移动文本用d为了“删除”,然后用p为了“放置”;你复制文本用y为了“移出”,然后p为了“放置”。每一种编辑在本节中都会被描述。图2-4显示出你所用的vi命令编辑在图2-3中所做的标记。插入新的文本你已经看到在插入模式下向文件中输入新的文本。你同样可以在插入模式下当编辑存在的文本增加遗失的字母,单词和句子。在文件practice,如果你有以下句子:You can scrollThe page, move the cursor,deleteLine,and insert characters.正如光标标示出来的位置。要插入With a screen editor在句子的开头,输入如下:按键 结果2k 用k命令移动光标向上两个,移动到你想要插入的地方iwith a 按i进入插入模式开始编辑文本屏幕编辑器ESC 完成编辑文本,按ESC结束插入模式回到命令模式附加文本你可以附加文本在你文件的任何地方只要用附加命令a,附加命令a 和i是一个样的,除了文本被插入在光标后而不是光标前。按i进入插入模式,光标不会移动直到你输入了一些文本之后。相反,当你按a进入插入模式,光标向右移动一个空格。当你输入文本,它出现原始光标位置的后面。改变文本你可以替换你文件中的任何文本用修改命令,c。要告诉c多少文本要修改,你可以符合c和移动命令。这种方式,一个移动命令充当成文本对象让c命令去影响。例如,c可以被用来从光标改变文本:cw 到单词的末尾c2b 回到前两个单词 c$ 到行的末尾cO 到行的开头发表一个修改命令之后,你可以用选中的文本替换任何多的新文本,一个字母没有,一个字母,或成百上千行也行。C,就像i和a一样,让你进入插入模式直到你按ESC键。当修改只在本行起效时,vi在文本的末尾用$标记要被修改的东东,所以你可以看到行的什么部分被影响。(再看cw的例子。)单词去修改一个单词,结合c命令(修改)与w对付单词。你可以用一个长一点的或短一点的单词(或任何文本)替换一个单词(cw)。cw可以被认为是“标示删除单词和插入新的文本直到ESC被按。”假如你有如下一行文本在你的文件practice中:With an editor you can scroll the page,你想修改an成a screen。你只需要修改一个单词:按键 结果w 用w移动到你想开始编辑的地方cw 敲修改单词的命令。文本的末尾将会被标示一个$(英镑符号)A screen 输入替换的文本,然后按ESC回到命令模式。cw同样可以用在一个单词的部分上,例如,要修改spelling到 spelled,你可以定位光标到i,输入cw,然后输入ed,用ESC完成操作。 一般vi命令的组成在修改命令我们也提到到这一点,你可能已经注意到如下形式:(命令)(文本对象)命令就是修改命令c,文本对象就是移动命令(你不需要输入括号)。但是c不是唯一一个需要文本对象的命令。d命令(删除)和y命令(拷贝)如同这样的形式一样。记住移动命令同样可以采取数值参数,所以数字可以被加到文本对象的c,d和y命令。例如,d2w和2dw是删除两个单词的命令。按照这种思路,你可以看到很多vi命令有如下一般形式:(命令)(数字)(文本对象)或者等价的形式:(数字)(命令)(文本对象)这就是如何工作的。数字和命令是可选择的。没有它们,你只简单的有移动命令。如果你加入一个数字,你有一个复合移动。在另一个方面,复合一个命令(c,d或y)与一个文本对象组成一个编辑命令。当你意识到有多少复合体以这样一种方式出现,vi就确实变成了一个强大的编辑器!行要替换当前整个一行,用到特殊修改命令,cc修改整个一行,用输入无论多少的文本替换这一行直到输入ESC。它不关注光标在这一行的哪里;cc替换整个一行的文本。一个命令像cw工作与cc这样的命令是不同的。在使用cw,原来的文本保持直到你输入替换它,任何原来的遗留下来的文本(到$)消失当你按ESC。在使用cc,然而,原来文本先被删除,让你在空行插入文本。“覆盖”发生时的任何修改命令只会影响少于一整行,但是“空行”发生时的任何修改命令会影响到一或更多行。C替换字母从当前光标的位置到行末。它有相同的功能如复合c与特殊行末标志$(c$)。命令cc和C对于其他命令来说是真的很简洁,所以它们和其它vi命令的一般形式是不一样的。你会看到其它快捷键当我们讨论删除和拷贝命令的时候。 字符一个其它的替换编辑就是r命令。r以一个字符替换另一个字符。当编辑完之后,不用按ESC键退回到命令模式。如下这行中有一个拼写错误:Pith a screen editor you can scroll the page,只有一个字母需要改正。你不希望用cw在这个例子中因为那样的话你就需要重打整个单词。用r替换光标所在的一个字母:按键 结果rW 输入替换命令r,接着输入要替换的字母W。替换文本假如你想修改只是一些字母,不是整个单词。替换命令(s),它本身,替换一个字母。与前面的计数,你可以替换许多字符。正如修改命令(c),文本的最后一个字符将会被标记上一个$所以你可以看到多少文本将被修改。大写的S命令,删除光标所在位置的整个一行。大写的C命令,删除从当前光标开始行剩余的部分。执行该命令后进入插入模式。S和s命令都让你进入插入模式;当你结束输入,按ESC。大写R命令,替换文本,当输入ENTER,vi将开始新的一行,高效的让你进入插入模式。不同的是R简单的进入重击模式。你输入的字母替换了屏幕上显示的,字母替换字母,直到你输入ESC。 修改大小写修改字母的大小写是一项特殊的替换工作。波浪()命令会修改一个小写字母成一个大写字母或一个大写字母成小写。定位你的光标到你想改变大小的字母下,然后输入一个。这个字母的大小写将会修改。光标将会移动到下一个字母。在老的vi版本中,你不能指定一个数字前缀或文本对象用去起作用。现在的版本允许数字前缀。如果你想同时修改多于一行的大小写,你必须筛选文本通过unix命令如tr,将在第7单元描述。删除文本你同样可以删除你文件中任何文本用删除命令,d。想修改命令,删除命令要求一个文本对象(一部分要修改的文本)。你可以删除单词(dw),行(dd或D),或用其它移动命令我们以后会学到。所有这些删除,你要移动到你想开始编辑的地方,给出用删除命令(d)和文本对象,如w代表单词。单词假如你有如下的文本段:Screen editors are are very popular,Since they allowed you to makeChange as you read though file.光标正如显示的。你想删除在第一行的一个are:按键 结果2w 移动光标到你想开始编辑的地方(are)dw 给出删除单词命令(dw)去删除单词aredw删除光标标记开头的这个单词。注意单词后面的空格也被删除了。 dw同样可以被用来删除单词的一部分。在这个例子中:Since they allowed you to make你想删除allowed结尾的ed。按键 结果dw 给出删除命令(dw)去删除单词,开始于光标所在的位置。dw一直删除在这一行中下一个单词前的空格,但是我们不想这么干在这个例子中。要保留单词间的空格,用de,只删除一个单词的末尾。输入dE删除单词的末尾,包括 标点符号。你同样可以删除反向(db)或到一行的开头或结尾(d$或d0)行dd命令删除光标所在的整个行。dd不会删除行的一部分。像它的补充,cc,dd是一个特殊的命令。使用在前面的例子中相同的文本,正如所示的光标所在的第一行的位置:Screen editors are are very popular,Since they allowed you to makeChange as you read though file.你可以删除前两行:按键 结果2dd 给出命令删除前两行,注意即使光标没有定位在行的开头D(D是d$的缩写)命令删除从光标开始到行末。例如,与光标定位所示:Screen editors are are very popular,Since they allowed you to makeChange as you read though file.你可以删除行的一部分即从光标往右的部分。 按键 结果D 给出命令删除行的一部分即光标的右边(D)。字符通常你只想删除一个或两个字符。x删除一个光标所在的字符,一个大写的X删除光标之前的字符。前缀在前面任一命令加上一个数字就是删除字符的个数。例如:5x会删除光标下和右边的五个字符。删除出现的问题你已经删除错文本你想恢复到原来。有好几种方法恢复已删除的文本。如果你刚刚删除什么东西然后你意识到你想恢复,只要简单的输入u取消上一次操作即可(例如,一个dd)。这个只对你还没有给出其它进一步操作时有效,因为u只能取消最近一次操作。U会还原行到它原始的状态,这个方法不管前面做过任何次修改都可以使用。你可以还是回复最近一次删除,然而,用命令p,由于vi保存最近九次删除到九个删除缓存区。如果你知道,例如,第三次删除时你想恢复的,输入:“3p”去把缓存区的数字为3的内容放到行光标下。这只对一个已经删除的行有效。单词,或行的一部分,不被保存进缓存区。如果你想恢复一个已经删除的单词或行的碎片,u就没用了,用p命令自身。这恢复任何你已经删除的。在后来的分段中将讨论更多关于命令u和p。注意vim支持“无限”取消,使得生活方式更加简便。看一下在296页的“撤销取消”一章以获得更多信息。x的记忆一般认为像“x光透射”打字机的错误。当然,谁还在用打字机呢? 移动文本在vi,你移动文本通过删除它然后把它移动已删除的文本到文件中的任何地方,像一个“剪切和粘贴”每一次你删除一个文本块,删除的东西一般暂时保存在特殊的缓存区。移动到你的文件中的其它地方用放置命令(p)把文本放到新的地方。你可以移动任何文本块,尽管移动行比移动单词要有用。放置命令(p)把缓存区的文本放在光标后的地方。大写版本的命令,P,把文本放在文本之前。如果你删除一个或更多的行,p把删除的文本放到新的一行光标之下。如果你删除少于一整行,p把已经删除的文本插入当前行,在光标之后。假如在你的文件practice中有以下文本:You can move text by deleting it and thenLike a cut and pastePlacing the deleted text elsewhere in the file.Each time you delete a text block你想移动第二行,like acut and paste,到第三行下。使用删除,你可以做以下编辑:按键 结果dd 光标在第二行,删除这一行。文本被放进了缓存区(保留记忆)p 给出粘贴命令p,恢复已经删除的行到光标下。结束这个句子 的记录,你可能同样需要修改开头的大小写和标点符号(用r) 以适应新的结构。一旦你删除文本,你必须恢复它在下一次修改命令和删除命令之前。如果你做了其它的编辑影响了缓存区,你已删除的文本将彻底消失。你可以重复粘贴一遍又一遍,只要你不做新的编辑。在第四单元,你会学到如何保存删除的文本进编号的缓存区所以你可以恢复以后。交换两个字母 你可以用xp(删除字符和粘贴在光标之后)交换两个字母。例如:在单词mvoe中,字母vo被颠倒了。为了更正颠倒,把光标放在v上然后按x,再按p。单词transpose帮你记住xp的顺序;x代表trans,p代表pose。没有命令交换两个单词。在单元“

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论