﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-byterat-随笔分类-UNIX &amp; LINUX</title><link>http://www.blogjava.net/byterat/category/22465.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 16 May 2007 23:27:25 GMT</lastBuildDate><pubDate>Wed, 16 May 2007 23:27:25 GMT</pubDate><ttl>60</ttl><item><title>vi 命令解析</title><link>http://www.blogjava.net/byterat/archive/2007/05/15/117554.html</link><dc:creator>比特鼠</dc:creator><author>比特鼠</author><pubDate>Tue, 15 May 2007 03:33:00 GMT</pubDate><guid>http://www.blogjava.net/byterat/archive/2007/05/15/117554.html</guid><wfw:comment>http://www.blogjava.net/byterat/comments/117554.html</wfw:comment><comments>http://www.blogjava.net/byterat/archive/2007/05/15/117554.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/byterat/comments/commentRss/117554.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/byterat/services/trackbacks/117554.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 10pt; FONT-FAMILY: Courier">vi 是visual edit 的缩写<br>文本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等，其中，使用最为广泛的是vi，而vi命令繁多，论坛里好像这方面的总结不多，以下稍做总结，以资共享！渴望更正和补充！ <br><br>进入vi的命令<br>vi filename :打开或新建文件，并将光标置于第一行首<br>vi +n filename ：打开文件，并将光标置于第n行首<br>vi + filename ：打开文件，并将光标置于最后一行首<br>vi +/pattern filename：打开文件，并将光标置于第一个与pattern匹配的串处<br>vi -r filename ：在上次正用vi编辑时发生系统崩溃，恢复filename<br>vi filename....filename ：打开多个文件，依次进行编辑<br><br>移动光标类命令<br>h ：光标左移一个字符<br>l ：光标右移一个字符<br>space：光标右移一个字符<br>Backspace：光标左移一个字符<br>k或Ctrl+p：光标上移一行<br>j或Ctrl+n ：光标下移一行<br>Enter ：光标下移一行<br>w或W ：光标右移一个字至字首<br>b或B ：光标左移一个字至字首<br>e或E ：光标右移一个字至字尾<br>) ：光标移至句尾<br>( ：光标移至句首<br>}：光标移至段落开头<br>{ ：光标移至段落结尾<br>nG：光标移至第n行首<br>n+：光标下移n行<br>n-：光标上移n行<br>n$：光标移至第n行尾<br>H ：光标移至屏幕顶行<br>M ：光标移至屏幕中间行<br>L ：光标移至屏幕最后行<br>0：（注意是数字零）光标移至当前行首<br>$：光标移至当前行尾<br><br>屏幕翻滚类命令<br>Ctrl+u：向文件首翻半屏<br>Ctrl+d：向文件尾翻半屏<br>Ctrl+f：向文件尾翻一屏<br>Ctrl＋b；向文件首翻一屏<br>nz：将第n行滚至屏幕顶部，不指定n时将当前行滚至屏幕顶部。<br><br>插入文本类命令<br>i ：在光标前<br>I ：在当前行首<br>a：光标后<br>A：在当前行尾<br>o：在当前行之下新开一行<br>O：在当前行之上新开一行<br>r：替换当前字符<br>R：替换当前字符及其后的字符，直至按ESC键<br>s：从当前光标位置处开始，以输入的文本替代指定数目的字符<br>S：删除指定数目的行，并以所输入文本代替之<br>ncw或nCW：修改指定数目的字<br>nCC：修改指定数目的行<br><br>删除命令<br>ndw或ndW：删除光标处开始及其后的n-1个字<br>do：删至行首<br>d$：删至行尾<br>ndd：删除当前行及其后n-1行<br>x或X：删除一个字符，x删除光标后的，而X删除光标前的<br>Ctrl+u：删除输入方式下所输入的文本<br><br>搜索及替换命令<br>/pattern：从光标开始处向文件尾搜索pattern<br>?pattern：从光标开始处向文件首搜索pattern<br>n：在同一方向重复上一次搜索命令<br>N：在反方向上重复上一次搜索命令<br>：s/p1/p2/g：将当前行中所有p1均用p2替代<br>：n1,n2s/p1/p2/g：将第n1至n2行中所有p1均用p2替代<br>：g/p1/s//p2/g：将文件中所有p1均用p2替换<br><br>选项设置<br>all：列出所有选项设置情况<br>term：设置终端类型<br>ignorance：在搜索中忽略大小写<br>list：显示制表位(Ctrl+I)和行尾标志（$)<br>number：显示行号<br>report：显示由面向行的命令修改过的数目<br>terse：显示简短的警告信息<br>warn：在转到别的文件时若没保存当前文件则显示NO write信息<br>nomagic：允许在搜索模式中，使用前面不带&#8220;\&#8221;的特殊字符<br>nowrapscan：禁止vi在搜索到达文件两端时，又从另一端开始<br>mesg：允许vi显示其他用户用write写到自己终端上的信息<br><br>最后行方式命令<br>：n1,n2 co n3：将n1行到n2行之间的内容拷贝到第n3行下<br>：n1,n2 m n3：将n1行到n2行之间的内容移至到第n3行下<br>：n1,n2 d ：将n1行到n2行之间的内容删除<br>：w ：保存当前文件<br>：e filename：打开文件filename进行编辑<br>：x：保存当前文件并退出<br>：q：退出vi<br>：q!：不保存文件并退出vi<br>：!command：执行shell命令command<br>：n1,n2 w!command：将文件中n1行至n2行的内容作为command的输入并执行之，若不指定n1，n2，则表示将整个文件内容作为command的输入<br>：r!command：将命令command的输出结果放到当前行<br><br>寄存器操作<br>"?nyy：将当前行及其下n行的内容保存到寄存器？中，其中?为一个字母，n为一个数字<br>"?nyw：将当前行及其下n个字保存到寄存器？中，其中?为一个字母，n为一个数字<br>"?nyl：将当前行及其下n个字符保存到寄存器？中，其中?为一个字母，n为一个数字<br>"?p：取出寄存器？中的内容并将其放到光标位置处。这里？可以是一个字母，也可以是一个数字<br>ndd：将当前行及其下共n行文本删除，并将所删内容放到1号删除寄存器中。 <br><br><br>进入vi<br>vi test<br>离开vi<br>:q! 离开vi,并放弃刚在缓冲区内编辑的内容。<br>　　 :wq 将缓冲区内的资料写入磁盘中，并离开vi。<br>　　 :ZZ 同wq<br>同wq<br>:w 将缓冲区内的资料写入磁盘中，但并不离开vi。<br>　　:q 离开vi,若文件被修改过，则会被要求确认是否放弃修改的内容，此指令可与: w 配合使用。<br>Vi 的操作模式<br>Vi 提供两种操作模式：<br>输入模式（insert mode）<br>指令模式（command mode）<br>当使用者进入vi后，既处于指令模式下，此刻键入任何字元皆被视为指令。<br><br>输入模式：a(append) 游标之后加入资料。<br>A 该行之末加入资料<br>i (insert) 游标之前加入资料<br>I 该行之首加入资料<br>o (open) 新增一行与该行之下供输入资料<br>O 新增一行与该行之上供输入资料<br><br>指令模式：B 　 　　　移至该行第一个字符，若光标在该行第一字符则光标移至上一行第一字符。<br>　　 b 　　 由游标所在位置之前一个字串的第一个字元<br>　　　　　cc 删除整行，修改整行的内容。<br>　　　　　D　　　　　 以行为单位，删除游标在内后面的所有字符。<br>db 删除该行光标前字符<br>　　　　　dd 删除该行<br>　　　　　de 删除自光标开始后面的字符<br>　　　　　d加字符　　　删除光标所在位置至字符之间的单<br>　　　　　E　　　　　　移至该行最后字符，若光标在该行最后字符则光标移至下一行最后字符<br>　e　　　　　　由游标所在位置至该字串的最后一个字元<br>　　　　　G 移至该档案的最后一行　<br>　　　　　h 向前移一个字元<br>j 向下移一个字元<br>k 向上移一个字元<br>0 移至该行之首<br>M 移至视窗的中间那行<br>L 移至视窗的最后一行<br>　　　　　l 向后移一个字符<br>0 由游标所在位置该行的第一个字元<br>nG 移至该档案的第n行<br>n+ 自游标所在位置向后移n行至该行的第一字符<br>n- 自游标所在位置向前移n行至该行的第一字符<br>R 进入取代状态，直到《ESC》为止<br>s 删除游标所在字元，并进入取代模式直到《ESC》<br>S 删除游标所在之该行资料，并进入输入模式直到《ESC》<br>w 由游标所在位置之下一个字串的第一个字元<br>x 删除游标所在该字元。<br>X 删除游标所在之前一字元。<br>r 用接于此指令之后的字元取代（replace）游标所在字元<br>yy yank整行，使游标所在该行复制到记忆体缓冲区<br><ctrl><g>显示该行之行号、档案名称、档案中最末之行号、游标所在行号占<br>总行号之百分比<br>$ 由游标所在位置至该行的最后一个字元。<br>） 由游标所在位置至下一个句子的第一个字元。<br>（ 由游标所在位置至该句子的第一个字元。<br>{ &nbsp;由游标所在位置至该段落的最后一个字元。<br>} 由游标所在位置至该段落的第一个字元<br><br>yank和delete可将指定的资料复制到记忆体缓冲区，而藉有put指令可将缓冲区内的资料复制到荧幕上<br>例如：搬移一行 ：在该行执行dd<br>游标移至目的地<br>执行p<br>复制一行 ：在该行执行yy<br>游标移至目的地<br>执行p<br>视窗移动：<br><ctrl><f>视窗往下卷一页<br><ctrl>视窗往上卷一页<br><ctrl><d>视窗往下卷半页<br><ctrl>视窗往上卷半页<br><ctrl><e>视窗往下卷一行<br><ctrl><y>视窗往上卷一行<br>删除、复制及修改指令介绍：<br>d(delete)、c(change)和y(yank)这一类的指令在vi 中的指令格式为：<br>operation+scope=command<br>(运算子)（范围）<br>运算子：<br>d 删除指令。删除资料，但会将删除资料复制到记忆体缓冲区。<br>y 将资料（字组、行列、句子或段落）复制到缓冲区。<br>p 放置（put）指令，与d和y配合使用。可将最后delete或yank的资料放置于游标所在位置之行列下。<br>c 修改（change）指令，类似delete于insert的组合。删除一个字组、句子等资料，并插入新键入的<br><br><br><br><img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/byterat/vi.jpg" width=747 border=0><br></ctrl></ctrl></ctrl></ctrl></ctrl></ctrl></ctrl></g></f></d></e></y><!-- Added by RelatedTopic, plugin for Bo-Blog 2.0.0 --></span>
<img src ="http://www.blogjava.net/byterat/aggbug/117554.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/byterat/" target="_blank">比特鼠</a> 2007-05-15 11:33 <a href="http://www.blogjava.net/byterat/archive/2007/05/15/117554.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>