﻿<?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-栖息地-随笔分类-linux </title><link>http://www.blogjava.net/drecry/category/39348.html</link><description>家园</description><language>zh-cn</language><lastBuildDate>Sat, 02 May 2009 04:23:27 GMT</lastBuildDate><pubDate>Sat, 02 May 2009 04:23:27 GMT</pubDate><ttl>60</ttl><item><title>初学者使用的vi的命令</title><link>http://www.blogjava.net/drecry/archive/2009/05/02/268591.html</link><dc:creator>王宏利</dc:creator><author>王宏利</author><pubDate>Sat, 02 May 2009 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/drecry/archive/2009/05/02/268591.html</guid><wfw:comment>http://www.blogjava.net/drecry/comments/268591.html</wfw:comment><comments>http://www.blogjava.net/drecry/archive/2009/05/02/268591.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/drecry/comments/commentRss/268591.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/drecry/services/trackbacks/268591.html</trackback:ping><description><![CDATA[<p>1、vi的基本概念<br />
<clk>&nbsp;基本上vi可以分为三种状态，分别是命令模式（command mode）、插入模式（Insert mode）和底行模式（last line mode），各模式的<nobr id="clickeyekey1" style="border-bottom: 1px dotted #6600ff; text-decoration: underline; color: #6600ff; background-color: transparent;" onclick='kwC(event,1,"")' oncontextmenu="return false" onmouseover="kwE(event,1, this)" onmouseout="kwL(event,this)" onmousemove="kwM(1)">功能</nobr>区分如下：</clk></p>
<p>1) 命令行模式command mode）</p>
<p><clk>&nbsp;<nobr id="clickeyekey2" style="border-bottom: 1px dotted #6600ff; text-decoration: underline; color: #6600ff; background-color: transparent;" onclick='kwC(event,2,"")' oncontextmenu="return false" onmouseover="kwE(event,2, this)" onmouseout="kwL(event,this)" onmousemove="kwM(2)">控制</nobr>屏幕光标的移动，字符、字或行的删除，移动复制某区段及进入Insert mode下，或者到 last line mode。</clk></p>
<p>2) 插入模式（Insert mode）</p>
<p>　　只有在Insert mode下，才可以做文字输入，按「ESC」键可回到命令行模式。</p>
<p>3) 底行模式（last line mode）</p>
<p>　　将文件保存或退出vi，也可以设置编辑环境，如寻找字符串、列出行号&#8230;&#8230;等。</p>
<p>不过一般我们在使用时把vi简化成两个模式，就是将底行模式（last line mode）也算入命令行模式command mode）。</p>
<p>2、vi的基本操作<br />
a) 进入vi</p>
<p>　　在系统提示符号输入vi及文件名称后，就进入vi全屏幕编辑画面：</p>
<p>　　　$ vi myfile</p>
<p><br />
<clk>&nbsp;不过有一点要特别注意，就是您进入vi之后，是处于「命令行模式（command mode）」，您要切换到「插入模式（Insert mode）」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标，结果<nobr id="clickeyekey0" style="border-bottom: 1px dotted #6600ff; text-decoration: underline; color: #6600ff; background-color: transparent;" onclick='kwC(event,0,"")' oncontextmenu="return false" onmouseover="kwE(event,0, this)" onmouseout="kwL(event,this)" onmousemove="kwM(0)">电脑</nobr>一直哔哔叫，把自己气个半死，所以进入vi后，先不要乱动，转换到「插入模式（Insert mode）」再说吧！</clk></p>
<p>b) 切换至插入模式（Insert mode）编辑文件</p>
<p>　　在「命令行模式（command mode）」下按一下字母「i」就可以进入「插入模式（Insert mode）」，这时候你就可以开始输入文字了。</p>
<p>c) Insert 的切换</p>
<p><clk>&nbsp;您目前处于「插入模式（Insert mode）」，您就只能一直输入文字，如果您发现输错了字！想用光标键往回<nobr id="clickeyekey5" style="border-bottom: 1px dotted #6600ff; text-decoration: underline; color: #6600ff; background-color: transparent;" onclick='kwC(event,5,"")' oncontextmenu="return false" onmouseover="kwE(event,5, this)" onmouseout="kwL(event,this)" onmousemove="kwM(5)">移动</nobr>，将该字删除，就要先按一下「ESC」键转到「命令行模式（command mode）」再删除文字。</clk></p>
<p>d) 退出vi及保存文件</p>
<p>　　在「命令行模式（command mode）」下，按一下「：」冒号键进入「Last line mode」，例如：</p>
<p>: w filename （输入 「w filename」将文章以指定的文件名filename保存）</p>
<p>: wq (输入「wq」，存盘并退出vi)</p>
<p>: q! (输入q!， 不存盘强制退出vi)</p>
<p><br />
3、命令行模式（command mode）功能键<br />
1）. 插入模式</p>
<p>　　按「i」切换进入插入模式「insert mode」，按&#8220;i&#8221;进入插入模式后是从光标当前位置开始输入文件；</p>
<p>　　按「a」进入插入模式后，是从目前光标所在位置的下一个位置开始输入文字；</p>
<p>　　按「o」进入插入模式后，是插入新的一行，从行首开始输入文字。</p>
<p>2）. 从插入模式切换为命令行模式</p>
<p>　　按「ESC」键。</p>
<p>3）. 移动光标</p>
<p>　　vi可以直接用键盘上的光标来上下左右移动，但正规的vi是用小写英文字母「h」、「j」、「k」、「l」，分别控制光标左、下、上、右移一格。</p>
<p>　　按「ctrl」+「b」：屏幕往&#8220;后&#8221;移动一页。</p>
<p>　　按「ctrl」+「f」：屏幕往&#8220;前&#8221;移动一页。</p>
<p>　　按「ctrl」+「u」：屏幕往&#8220;后&#8221;移动半页。</p>
<p>　　按「ctrl」+「d」：屏幕往&#8220;前&#8221;移动半页。</p>
<p>　　按数字「0」：移到文章的开头。</p>
<p>　　按「G」：移动到文章的最后。</p>
<p>　　按「$」：移动到光标所在行的&#8220;行尾&#8221;。</p>
<p>　　按「^」：移动到光标所在行的&#8220;行首&#8221;</p>
<p>　　按「w」：光标跳到下个字的开头</p>
<p>　　按「e」：光标跳到下个字的字尾</p>
<p>　　按「b」：光标回到上个字的开头</p>
<p>　　按「#l」：光标移到该行的第#个位置，如：5l,56l。</p>
<p>4）. 删除文字</p>
<p>　　「x」：每按一次，删除光标所在位置的&#8220;后面&#8221;一个字符。</p>
<p>　　「#x」：例如，「6x」表示删除光标所在位置的&#8220;后面&#8221;6个字符。</p>
<p>　　「X」：大写的X，每按一次，删除光标所在位置的&#8220;前面&#8221;一个字符。</p>
<p>　　「#X」：例如，「20X」表示删除光标所在位置的&#8220;前面&#8221;20个字符。</p>
<p>　　「dd」：删除光标所在行。</p>
<p>　　「#dd」：从光标所在行开始删除#行</p>
<p>5）. 复制</p>
<p>　　「yw」：将光标所在之处到字尾的字符复制到缓冲区中。</p>
<p>　　「#yw」：复制#个字到缓冲区</p>
<p>　　「yy」：复制光标所在行到缓冲区。</p>
<p>　　「#yy」：例如，「6yy」表示拷贝从光标所在的该行&#8220;往下数&#8221;6行文字。</p>
<p>　　「p」：将缓冲区内的字符贴到光标所在位置。注意：所有与&#8220;y&#8221;有关的复制命令都必须与&#8220;p&#8221;配合才能完成复制与粘贴功能。</p>
<p>6）. 替换</p>
<p>　　「r」：替换光标所在处的字符。</p>
<p>　　「R」：替换光标所到之处的字符，直到按下「ESC」键为止。</p>
<p>7）. 回复上一次操作</p>
<p>　　「u」：如果您误执行一个命令，可以马上按下「u」，回到上一个操作。按多次&#8220;u&#8221;可以执行多次回复。</p>
<p>8）. 更改</p>
<p>　　「cw」：更改光标所在处的字到字尾处</p>
<p>　　「c#w」：例如，「c3w」表示更改3个字</p>
<p>9）. 跳至指定的行</p>
<p>　　「ctrl」+「g」列出光标所在行的行号。</p>
<p>　　「#G」：例如，「15G」，表示移动光标至文章的第15行行首。</p>
<p>4、Last line mode下命令简介<br />
在使用「last line mode」之前，请记住先按「ESC」键确定您已经处于「command mode」下后，再按「：」冒号即可进入「last line mode」。</p>
<p>A) 列出行号</p>
<p>　「set nu」：输入「set nu」后，会在文件中的每一行前面列出行号。</p>
<p>B) 跳到文件中的某一行</p>
<p>　「#」：「#」号表示一个数字，在冒号后输入一个数字，再按回车键就会跳到该行了，如输入数字15，再回车，就会跳到文章的第15行。</p>
<p>C) 查找字符</p>
<p>　「/关键字」：先按「/」键，再输入您想寻找的字符，如果第一次找的关键字不是您想要的，可以一直按「n」会往后寻找到您要的关键字为止。</p>
<p>　「?关键字」：先按「?」键，再输入您想寻找的字符，如果第一次找的关键字不是您想要的，可以一直按「n」会往前寻找到您要的关键字为止。</p>
<p>D) 保存文件</p>
<p>　「w」：在冒号输入字母「w」就可以将文件保存起来。</p>
<p>E) 离开vi</p>
<p>　「q」：按「q」就是退出，如果无法离开vi，可以在「q」后跟一个「!」强制离开vi。</p>
<p><clk>&nbsp;「qw」：一般建议离开时，<nobr id="clickeyekey4" style="border-bottom: 1px dotted #6600ff; text-decoration: underline; color: #6600ff; background-color: transparent;" onclick='kwC(event,4,"")' oncontextmenu="return false" onmouseover="kwE(event,4, this)" onmouseout="kwL(event,this)" onmousemove="kwM(4)">搭配</nobr>「w」一起使用，这样在退出的时候还可以保存文件。</clk></p>
<p>5、vi命令列表<br />
1、下表列出命令模式下的一些键的功能：</p>
<p>h<br />
左移光标一个字符</p>
<p>l<br />
右移光标一个字符</p>
<p>k<br />
光标上移一行</p>
<p>j<br />
光标下移一行</p>
<p>^<br />
光标移动至行首</p>
<p>0<br />
数字&#8220;0&#8221;，光标移至文章的开头</p>
<p>G<br />
光标移至文章的最后</p>
<p>$<br />
光标移动至行尾</p>
<p>Ctrl+f<br />
向前翻屏</p>
<p>Ctrl+b<br />
向后翻屏</p>
<p>Ctrl+d<br />
向前翻半屏</p>
<p>Ctrl+u<br />
向后翻半屏</p>
<p>i<br />
在光标位置前插入字符</p>
<p>a<br />
在光标所在位置的后一个字符开始增加</p>
<p>o<br />
插入新的一行，从行首开始输入</p>
<p>ESC<br />
从输入状态退至命令状态</p>
<p>x<br />
删除光标后面的字符</p>
<p>#x<br />
删除光标后的＃个字符</p>
<p>X<br />
(大写X)，删除光标前面的字符</p>
<p>#X<br />
删除光标前面的#个字符</p>
<p>dd<br />
删除光标所在的行</p>
<p>#dd<br />
删除从光标所在行数的#行</p>
<p>yw<br />
复制光标所在位置的一个字</p>
<p>#yw<br />
复制光标所在位置的#个字</p>
<p>yy<br />
复制光标所在位置的一行</p>
<p>#yy<br />
复制从光标所在行数的#行</p>
<p>p<br />
粘贴</p>
<p>u<br />
取消操作</p>
<p>cw<br />
更改光标所在位置的一个字</p>
<p>#cw<br />
更改光标所在位置的#个字</p>
<p><br />
2、下表列出行命令模式下的一些指令<br />
w filename<br />
储存正在编辑的文件为filename</p>
<p>wq filename<br />
储存正在编辑的文件为filename，并退出vi</p>
<p>q!<br />
放弃所有修改，退出vi</p>
<p>set nu<br />
显示行号</p>
<p>/或?<br />
查找，在/后输入要查找的内容</p>
<p>n<br />
与/或?一起使用，如果查找的内容不是想要找的关键字，按n或向后（与/联用）或向前（与?联用）继续查找，直到找到为止。</p>
<p><br />
对于第一次用vi，有几点注意要提醒一下：<br />
1、用vi打开文件，是处于「命令行模式（command</p>
<div align="center"><br />
</div>
<img src ="http://www.blogjava.net/drecry/aggbug/268591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/drecry/" target="_blank">王宏利</a> 2009-05-02 10:51 <a href="http://www.blogjava.net/drecry/archive/2009/05/02/268591.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>