vi命令详解.doc_第1页
vi命令详解.doc_第2页
vi命令详解.doc_第3页
vi命令详解.doc_第4页
vi命令详解.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

vi命令详解 整理人:廖天宇vi(Visual)是以视觉为导向的全屏幕编辑器、共分为三种方式(mode): command方式:任何输入都会作为编辑命令,而不会出现在屏幕上,若输入错误则有“岬”的声音;任何输入都引起立即反映 insert方式:任何输入的数据都置于编辑寄存器。在command方式下输入(I,a,A等),可进入insert方式,insert方式下按ESC或者Ctrl+c或者Ctrl+,可跳回command方式。 escape方式:以“:”或者“/”为前导的命令,出现在屏幕的最下一行,任何输入都被当成特别命令。一、进入vi(在系统提示符下面输入以下命令):vi 进入vi而不读入任何文档。vi filename 进入vi并读入指定名称的文档(新建文档或者已有文档均可)。vi +n filename进入vi并且由文档的第n行开始。vi +$ filename 进入vi并且由文档的最后一行开始。vi +/word filename进入vi并且由文档的word这个字开始。vi r列出所有可能恢复的文件。vi r filename 恢复系统崩溃时正在编辑的文件(如果此文件不是崩溃时正在编辑的文件,则打开文件为空)。vi R filename 以只读方式打开文档,并且禁止文档被覆盖。vi filename(s) 进入vi并且将各指定文档列入名单内,第一个文档先读入。如vi *.c。vedit 进入vi并且在输入方式时会在状态行显示“INSERT MODE。view 用view代替上述vi使用时,表示以只读方式打开文档,如果不小心对文档做了修改,在:w存盘时,将提示“. File is read only”不能存盘。如果以只读方式打开,同时确实要保存对文档的改动,则按:w!命令强行保存文档。Ctrl+l刷新屏幕显示Ctrl+g或:f告诉用户有关现行编辑文档的名称、总行数、光标所在行数等信息。二、编辑数个文档(利用vi filename(s)进入vi后):args 显示编辑名单中的各个文档名:n读入编辑名单中的下一个文档:n filename(s)读入并编辑filename(s)文档名单:rew读入编辑名单中的第一个文档:e#/Ctrl+A/Ctrl+ 读入编辑名单内的前一个文档:e filename 不离开vi编辑另一文档filename(此文档可不在编辑名单内)。若原文档经修改还没有存档,则应先以:w 存档。 :e +n filename不离开vi编辑另一文档filename,同时将光标定位于filename的第n行,如果n大于filename总行数则定位于filename的末尾,+$表示定位于文档filename的末尾。 :e! 强迫原文档不作存档动作并重新载入(恢复到上一次存盘状态)。:e! filename强迫读入另一个文档进入vi,原文档不作存档动作。:r filename 将指定文档的内容读入到光标所在行的下一行。:0r filename 将指定文档的内容读入到当前文档的第零下面(最开始)。:$r filename 将指定文档的内容读入到当前文档的最后一行的下面。:80r filename 将指定文档的内容读入到当前文档的第80行的下面。:r !command 运行shell命令command,并将运行结果插入到光标当前行的下面。:$r !command 运行shell命令command,并将运行结果插入到当前文档的最后一行的下面。三、存储及退出vi:w filename 存入指定文档,但未退出vi(若未指定文档名则为当前工作的文档名)。:wq 或者 :x或者zz 存文档,并且退出vi.:q不作任何修改并退出vi。:q! 放弃任何修改并退出vi。:w! 覆盖当前文件(强行保存当前文档)。:w filename 文档另存为filename。:w! filename 用当前文档覆盖filename(如果filenam不存在则新建,如果filename存在则覆盖原内容)。:w filename 将当前文档的内容添加到文档filename的末尾。:.,$wfilename 将当前文档光标当前行最文档末尾的内容添加到文档filename的末尾。:26,50w filename 将当前文档中第26行到第50行的内容写入文档filename。:108w filename 将当前文档中第108行的内容写入文档filename。:/str/w filename向下搜索,并将第一次找到的str所在的行写入文档filename。:/str1/,/str2/w filename 向下搜索,并将第一次找到的str1所在的行与第一次找到的str2所在的行之间的内容写入文档filename。:?str1?,?str2?w filename 向上搜索,并将第一次找到的str1所在的行与第一次找到的str2所在的行之间的内容写入文档filename。:?str1?,/str2/w filename 向上搜索第一次找到的str1所在的行与向下搜索第一次找到的str2所在的行之间的内容写入文档filename。:/str1/,?str2?w filename 向下搜索第一次找到的str1所在的行与向上搜索第一次找到的str2所在的行之间的内容写入文档filename。:!command 执行shell命令并返回结果,回车后回到vi。:! 重复执行上一个shell命令并返回结果,回车后回到vi。:f filename 将当前文档重命名为filename。:recover 意外退出重新进入后恢复当前文档。:sh 暂时退出vi到系统下执行其它操作,结束时 按Ctrl+d 或者 执行exit 回到vi。:so filename 读取filename,并执行filename里的ex命令(vi下以:开头的命令),执行完后回到vi。四、关标移动0 C.移动到光标当前行的第一个字符 C.移动到光标当前行的第一个非空格非TAB字符$ C.移动到光标当前行的最后一个字符n|C.移动到光标当前行的第n列。|表示将光标移动到当前行的第一列。h C.往左移一位。j L.往右移一位。同spacebark L.向上移一行。l C.向下移一行。nhC.往左移n位。nj L.向下移n行。nkL.向上移n行。nl C.往右移n位。同spacebarn+L.向下移n行,光标在该行的第一个非空字符处n-L.向上移n行,光标在该行的第一个非空字符处H L.移到屏幕的第一行开头M L.移到屏幕的中间行开头L L.移到屏幕的最后一行开头nH L.移到屏幕的第n行开头nL L.移到屏幕的倒数第n行开头G L.移到文档的最后一行nGL.移到文档的第n行。同:nw C.向右移到一个字组开头,分隔符为标点符号或特殊符号,数字和字符不分W C.向右移到一个字串开头,分隔符为空格或TAB键等。数字、字符、特殊符号、标点符号不分e C.向右移到一个字组结尾,分隔符为标点符号或特殊符号,数字和字符不分E C.向右移到一个字串结尾,分隔符为空格或TAB键等。数字、字符、特殊符号、标点符号不分b C.向左移到一个字组开头,分隔符为标点符号或特殊符号,数字和字符不分B C.向左移到一个字串开头,分隔符为空格或TAB键等。数字、字符、特殊符号、标点符号不分nwC.向右移到第n个字组开头(不包含光标当前字组)。nWC.向右移到第n个字串开头(不包含光标当前字串)。neC.向右移到第n个字组结尾(不包含光标当前字组)。nEC.向右移到第n个字串结尾(不包含光标当前字串)。nbC.向左移到第n个字组开头(包含光标当前字组)。nBC.向左移到第n个字串开头(包含光标当前字串)。% C.从光标位置开始向行尾搜索(,等,如果在本行中搜索到,则将光标定位到与第一次出现的(或或相匹配的)或或字符上。如果从光标当前位置开始向后搜索且在本行中没有找到(或或,则光标位置不动。) C.向后移动到下一语句开始处,语句分隔标识为句号(.)、空行($)或者字符。( C.向前移动到上一语句开始处,语句分隔标识为句号(.)、空行($)或者字符。 C.向后移动到下一段落开始处,段落分隔符为空行($)或者字符。 C.向前移动到上一段落开始处,段落分隔符为空行($)或者字符。n)C.向后移动到第n个语句开始处(包含当前语句),语句分隔标识为句号(.)、空行($)或者字符。n(C.向前移动到第n个语句开始处(不包含当前语句),语句分隔标识为句号(.)、空行($)或者字符。nC.向后移动到第n个段落开始处(包含当前段落),段落分隔符为空行($)或者字符。nC.向前移动到第n个段落开始处(不包含当前段落),段落分隔符为空行($)或者字符。 C.从光标当前位置开始向后移动到一个函数的开始行,即以开始的行。如果找不到,则移动到文档最后一行。是后一块的开始,的前一字符是前一块的结束。实际就是将光标移动到下一节开始处。 C.从光标当前位置开始向前移动到一个函数的开始行,即以开始的行。如果找不到,则移动到文档第一行。是后一块的开始,的前一字符是前一块的结束。实际就是将光标移动到上一节开始处。fcC.将光标向右移动到当前行中光标当前字符右边第一次出现的字符c上。tcC.将光标向右移动到当前行中光标当前字符右边第一次出现的字符c的前一字符。FcC.将光标向左移动到当前行中光标当前字符左边第一次出现的字符c上。TcC.将光标向左移动到当前行中光标当前字符左边第一次出现的字符c的后一字符。; C.配合f或t继续向右移动到下一位置。, C.配合f或t反向向左移动到下一位置。mk在光标当前位置作标记,记号为字母k。(k可以用其它合法字母代替)作记号,为移动光标作准备。kC.将光标移动到记号为字母k的标记处。kL.将光标移动到记号为字母k的标记处所在行的开头。C.将光标移动到最后一次所做的标记处。L.将光标移动到最后一次所做的标记处所在行的开头。以上操作为光标移动,C表示按字符操作,L表示按行操作。如果在移动操作前先按一下y,再移动光标,则将原光标位置到新光标位置之间的内容复制。如果在移动操作前先按一下d,再移动光标,则将原光标位置到新光标位置之间的内容删除并复制。如果在移动操作前先按一下c,再移动光标,则将原光标位置到新光标位置之间的内容复制后删除并进入插入模式。如果在移动操作前先按一下,再移动光标,则将原光标所在行到新光标所在行之间的行全部向右移动一个位移并复制。如果在移动操作前先按一下结合使用且有数字n时,数字n放在y或d的前面和后面都可以。如 y3w 等效于 3yw,以次类推。按y键复制时,光标位置虽然不动,但内容实际上已经被复制。 Ctrl + e 屏幕下卷一行Ctrl + d 屏幕下卷半屏Ctrl + f 屏幕下卷一屏Ctrl + y屏幕上卷一行Ctrl + u屏幕上卷半屏Ctrl + b 屏幕上卷一屏五、查找命令/text C.从光标位置向后循环查找字串text,如果找不到,则返回到文档第一行继续向下查找。最后定位于text串的第一个字符,text串作为下一块的开始,text的前一字符作为上一块的结尾。与其它命令结合使用时,操作对象不包括text串。/text/+n C.从光标位置向后循环查找字串text,如果找不到,则返回到文档第一行继续向下查找。最后定位于text串所在行的下面第n行(不包括text所在行)的开头,此行为上面块的最后一行,下面一块不包括此行。/text/-n C.从光标位置向后循环查找字串text,如果找不到,则返回到文档第一行继续向下查找。最后定位于text串所在行的上面第n行(不包括text所在行)的开头,此行为上面块的最后一行,下面一块不包括此行。?text C.从光标位置向上查找字串text,如果找不到,则返回到文档最后一行继续向上查找。最后定位于text串的第一个字符,与其它命令结合使用时,操作对象包括text串。?text?+n C.从光标位置向上循环查找字串text,如果找不到,则返回到文档最后一行继续向上查找。最后定位于text串所在行的下面第n行(不包括text所在行)的开头,此行为上面块的最后一行,下面一块不包括此行。?text?-n C.从光标位置向上循环查找字串text,如果找不到,则返回到文档最后一行继续向上查找。最后定位于text串所在行的上面第n行(不包括text所在行)的开头,此行为上面块的最后一行,下面一块不包括此行。/ C.从光标位置向后循环查找字组text(text作为一个完整的字组,而不一个长字组的一部分),如果找不到,则返回到文档第一行继续向下查找。最后定位于text的第一个字符,text作为下一块的开始,text的前一字符作为上一块的结尾。与其它命令结合使用时,操作对象不包括text。相似/、?、?,字组分隔符为标点符号、特殊符号、空格、TAB等。n C.相同方向继续找下一个字串(在输入上面的寻找命令之后使用)。同/。N C.相反方向继续找下一个字串(在输入上面的寻找命令之后使用)。同?。以上操作也属于光标移动的范畴,它们与ydc的结合操作也适用于光标移动命令的说明(使用较少)。六、修改命令与c相关的修改命令参见光标移动命令的说明和查找命令的说明。i 在关标字符之前开始插入字符,结束时候按ESC键。I 在光标所在行的最前面开始插入字符,结束时按ESC键。a 在光标字符之后开始插入字符,结束时按ESC键。A 在光标所在行的最后面开始插入字符,结束时按ESC键。ni 插入字符串一遍,在按回车键或ESC键时将所插入的内容再重复n-1遍,共n遍。相似:nI、na、nA等。如要插入10个1234567890时,可以在命令模式下先按10,再按插入命令(i/I/a/A),再输入串1234567890,然后按ESC退出编辑或者按回车键继续编辑,此时串会再自动重复输入9次,共10次。o 在光标下加一空白行并开始插入字符,结束时按ESC键。O 在光标上加一空白行并开始插入字符,结束时按ESC键。!command执行shell命令,并把结果加在光标所在行的下一行。r 将光标位置的字符修改为随后输入的一个字符,修改完后自动返回命令模式。nr 将光标位置的字符开始的n个字符都修改为随后输入的一个字符,修改完后自动返回命令模式。R 从光标位置开始改写原内容,结束时按ESC键。s 将光标位置的一个字符修改为随后输入的内容,结束时按ESC键。ns 从光标位置开始的n个字符修改为随后输入的内容,结束时按ESC键。S 将光标所在行内容清除,并将光标定位在该行原内容第一个字符处,且为输入模式,结束时按ESC键。同cc。C 将光标所在字符到行尾的所有字符替换成随后随后输入的内容,结束时按ESC键。如果不输入新内容,直接按ESC键,效果同D,即删除光标所在字符到行尾的内容。cc将光标所在行内容删除并进入编辑模式,结束时按ESC键ncc 将光标所在行到向下第n行(包含光标当前行)删除并进入编辑模式,结束时按ESC键J 把下一行的数据连接到本行之后将光标当前行向右移动一个位移宽度。n 将光标当前行到向下的第n行(包含当前行)同时向右移动一个位移宽度。 将光标所在字符大小写互换并向右移动到下一个字符上。. 重复前一操作。u 撤销前一操作。U 撤销当前行的操作。:e! 撤销前一次存盘w以来的所有操作。七、复制与粘贴命令与ydc z.txt将文档中第101行到第165行之间的内容追加到文档z.txt的最后,原文档内容不变。:101,165w z.txt将文档中第101行到第165行之间的内容追加到文档z.txt的最后,原文档内容不变。:%!sort 对当前文档进行排序。:20,50!sort 对当前文档第20行到第50行之间的内容进行排序。十、vi命令索引.是指有些东西需要在命令之前或之后指明,文档的开始是前面,文档的最后是后面。 #这里的#代表一个数字 :进入ex模式 )下一句 (上一句 下一段 上一段下一节上一节 0行的开头 $行的末尾 行的第一个非空白字符 +下一行的开头 -上一行的开头(空格)下一个字符(回车)下一行 /向后搜索 ?向前搜索 %查找当前小(中,大)括号的匹配字符 ,反方向重复上一个f,F,t或T操作 ;同方向重复上一个f,F,t或T操作 .重复上一个操作 转到标记处 转到标记所在行的开头查找前回到上一个做标记的地方查找前回到上一个做标记所在行的开头 切换字符的大小写 保存到寄存器中!重复上一次SHELL命令 !把后面的文本送给命令,取代输出(例如,!fmt把当前的段落送给命令fmt处理,然后用fmt返回的东西替换输出.)右移当前段落一个移动宽度(shiftwidth)%从当前到匹配小(中,大)括号之间的文本右移%从当前到匹配小(中,大)括号之间的文本左移#|移动到当前行的第#列 a在当前位置之后添加 A在当前行的末尾添加a返回到前一编辑文档 b移动到上一个字组的开头 B移动到上一个字串的开头,忽略标点符号b上移一屏 c覆盖.(光标移动的区域) C覆盖到行末尾c插入模式下终止插入模式,在命令模式没有用 d删除.(光标移动的区域) D删除到行末尾d命令模式下移半屏,插入模式下移到上一个位移宽度(ShiftTab)处 e移动到字组的末尾 E移动到字串的末尾,忽略标点符号e屏幕下卷一行 f向后到.(某一字符处) F向前到.(某一字符处)f下移一屏 g未用 G.跳至某一行缺省是到文件末尾g显示状态栏 h向左移动一个字符 H移动到屏幕上的第一行h命令模式下是左移,插入模式下是退格 i在当前的光标位置前面插入 I在本行的第一个非空白字符前面插入i插入模式下是制表键(TAB),命令模式下未用 j光标下移一行 J把下一行合并到本行j命令模式下是下移,插入模式下是建一个新行 k光标向上移动一行 K未用k未用 l光标向右移动一个字符 L光标移动到屏幕的最后一行l重绘屏幕(刷新屏幕) m把当前位置标记到.(某个寄存器)中 M光标移动到屏幕的中间行m回车 n相同方向重复上次查找(与/或?配合使用) N相反方向重复上次查找(与/或?配合使用)n命令模式下是光标下移一行 o在当前行的下面建一个新行 O在当前行的上面建一个新行o未用 p在当前位置的后面粘贴 P在当前位置的前面粘贴p命令模式下是上移 q未用 Q退出并且启动exq去s加的锁 r用随后输入的字符覆盖当前的字符 R在插入模式下一直覆盖当前行光标后面的字符r在命令模式下面重绘屏幕 s用随后输入的内容替换光标当前一个字符 S用随后输入的内容替换光标当前整行内容s锁工作界面(去锁q) t向后到.(某一字符前) T向前到.(某一字符后)t移到下一个移动宽度(shifttab)处 u撤消上一次操作 U撤消对本行的所有修改u上移半屏 v未用 V未用v未用 w下一个字组的开头 W下一个字串的开头,忽略标点符号w插入模式下是到上一个单词的开头处,命令模式下未用 x删除光标所在字符 X删除光标位置的前一个字符x未用 y复制.(光标移动的区域) Y复制光标所在行的整行内容y屏幕上卷一行 z重新配置当前行周围的屏幕ZZ保存之后退出zUNIX暂停未用:g、K、k、o、q、v、V、v、x 十一、vi设置选项set设置选项时,可以使用括号里的缩写形式。语法::set 选项 选项参数 (如果有参数的话)可以在一行中指定多个选项:set 选项 ? 显示出一个选项的当前值:set显示当前所有已经修改过的选项的值:set all显示所有选项的当前值对于那些没有选项参数的选项来说,使用:set no 就可以把它给关闭vi打开时,先执行.profile中的选项设置,再执行$HOME/.exrc中的选项设置,再执行当前目录下.exrc中的选项设置autoindent(ai) noai使新行自动缩进,和上(下)行的位置对齐 autoprint(ap) noap每条命令之后都显示出修改之处 autowrite(aw) noaw在:n,:!命令之前都自动保存

温馨提示

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

评论

0/150

提交评论