﻿<?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-开花流水-文章分类-软件</title><link>http://www.blogjava.net/zdq5337/category/50319.html</link><description>空山无人，水流花开。</description><language>zh-cn</language><lastBuildDate>Thu, 24 Aug 2017 09:41:15 GMT</lastBuildDate><pubDate>Thu, 24 Aug 2017 09:41:15 GMT</pubDate><ttl>60</ttl><item><title>Flask应用上下文应用：application not registered on db instance and no application bound to current context</title><link>http://www.blogjava.net/zdq5337/articles/432768.html</link><dc:creator>开花流水</dc:creator><author>开花流水</author><pubDate>Wed, 23 Aug 2017 10:28:00 GMT</pubDate><guid>http://www.blogjava.net/zdq5337/articles/432768.html</guid><wfw:comment>http://www.blogjava.net/zdq5337/comments/432768.html</wfw:comment><comments>http://www.blogjava.net/zdq5337/articles/432768.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zdq5337/comments/commentRss/432768.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zdq5337/services/trackbacks/432768.html</trackback:ping><description><![CDATA[@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
<div>flask web应用经常会有异步timer或者定时任务的需求，单独开启的进程会因为不在context环境管理而报错</div>
<div>解决方案,flask0.9以后，在代码块前引用：</div>
<div>
<pre class="lang-py prettyprint prettyprinted" style="margin-top: 0px; margin-bottom: 1em; padding: 5px; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-size: 13px; line-height: inherit; vertical-align: baseline; width: auto; max-height: 600px; overflow: auto; background-color: #eff0f1; color: #393318; word-wrap: normal;"><code style="margin: 0px; padding: 0px; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; font-style: inherit; font-variant-caps: inherit; line-height: inherit; vertical-align: baseline; white-space: inherit;"><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; vertical-align: baseline; color: #101094;">with</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; vertical-align: baseline; color: #303336;"> app</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; vertical-align: baseline; color: #303336;">.</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; vertical-align: baseline; color: #303336;">app_context</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant-caps: inherit; line-height: inherit; vertical-align: baseline; color: #303336;">():</span></code></pre>
</div>
<div>参考官方文档：<span style="color: #242729; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 15px; background-color: #ffffff;">&nbsp;</span><a href="http://flask.pocoo.org/docs/0.10/appcontext/" rel="nofollow" style="margin: 0px; padding: 0px; border: 0px; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 15px; line-height: inherit; vertical-align: baseline; color: #005999; text-decoration: none; cursor: pointer;">http://flask.pocoo.org/docs/0.10/appcontext/</a></div><img src ="http://www.blogjava.net/zdq5337/aggbug/432768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zdq5337/" target="_blank">开花流水</a> 2017-08-23 18:28 <a href="http://www.blogjava.net/zdq5337/articles/432768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>细数那些令人发狂的程序语言的特性 </title><link>http://www.blogjava.net/zdq5337/articles/366930.html</link><dc:creator>开花流水</dc:creator><author>开花流水</author><pubDate>Wed, 21 Dec 2011 06:49:00 GMT</pubDate><guid>http://www.blogjava.net/zdq5337/articles/366930.html</guid><wfw:comment>http://www.blogjava.net/zdq5337/comments/366930.html</wfw:comment><comments>http://www.blogjava.net/zdq5337/articles/366930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zdq5337/comments/commentRss/366930.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zdq5337/services/trackbacks/366930.html</trackback:ping><description><![CDATA[<div>
<div id="blog_content">
<p>这些最为奇怪的程序语言的特性，来自stackoverflow.com，原贴在<a style="color: #2970a6; text-decoration: none" href="http://stackoverflow.com/questions/1995113?sort=votes&amp;page=1" target="_blank">这里</a>。我摘选了一些例子，的确是比较怪异，让我们一个一个来看看。</p>
<h2>1、C语言中的数组</h2>
<p>在C/C++中，a[10] 可以写成 10[a]</p>
<p>&#8220;Hello World&#8221;[i] 也可以写成&nbsp;i["Hello World"]&nbsp;</p>
<h2>2、在Javascript中&nbsp;</h2>
<p>&nbsp;&#8217;5&#8242; + 3 的结果是：&#8217;53&#8242;</p>
<p>&nbsp;&#8217;5&#8242; &#8211; 3 的结果是：2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://blog.csdn.net/justjavac/article/details/7053910" target="_blank"><span style="color: #000080">更多</span></a>javascript点击<a href="http://blog.csdn.net/justjavac/article/details/7053910" target="_blank"><span style="color: #333399">这里</span></a></p>
<h2>3、C/C++中的Trigraphs&nbsp;</h2>
<div>
<div>
<div>Cpp代码 &nbsp;<a title="收藏这段代码"><img alt="收藏代码" src="http://justjavac.iteye.com/images/icon_star.png" /></a></div></div>
<ol><li><span>int&nbsp;main()&nbsp;{&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;<span>"LOL??!";&nbsp;&nbsp;</span></li><li>}&nbsp;&nbsp;</li></ol></div>
<p>&nbsp;上面的这段程序会输出：&nbsp;&#8220;LOL|&#8221;，这是因为 ??!&nbsp;被转成了 | ，关于Trigraphs，下面有个表格：&nbsp; </p>
<table style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; height: 184px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid" border="0" width="237">
<tbody>
<tr valign="top">
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">??=</td>
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">#</td></tr>
<tr valign="top">
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">??(</td>
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">[</td></tr>
<tr valign="top">
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">??/</td>
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">\</td></tr>
<tr valign="top">
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">??)</td>
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">]</td></tr>
<tr valign="top">
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">??&#8217;</td>
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">^</td></tr>
<tr valign="top">
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">??&lt;</td>
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">{</td></tr>
<tr valign="top">
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">??!</td>
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">|</td></tr>
<tr valign="top">
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">??&gt;</td>
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">}</td></tr>
<tr valign="top">
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">??-</td>
<td style="border-bottom: #cccccc 1px solid; text-align: left; border-left: #cccccc 1px solid; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; vertical-align: top; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 3px">~</td></tr></tbody></table>
<h2>4、JavaScript 的条件表&nbsp;</h2>
<p>看到下面这个表，不难理解为什么Javascript程序员为什么痛苦了</p>
<div>
<div>
<div>Js代码 &nbsp;<a title="收藏这段代码"><img alt="收藏代码" src="http://justjavac.iteye.com/images/icon_star.png" /></a></div></div>
<ol><li><span>''&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;==&nbsp;&nbsp;&nbsp;'0'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//false&nbsp;&nbsp;</span></li><li>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;==&nbsp;&nbsp;&nbsp;<span>''&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//true&nbsp;&nbsp;</span></li><li>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;==&nbsp;&nbsp;&nbsp;<span>'0'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//true&nbsp;&nbsp;</span></li><li><span>false&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;==&nbsp;&nbsp;&nbsp;'false'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//false&nbsp;&nbsp;</span></li><li><span>false&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;==&nbsp;&nbsp;&nbsp;'0'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//true&nbsp;&nbsp;</span></li><li><span>false&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;==&nbsp;&nbsp;&nbsp;undefined&nbsp;&nbsp;&nbsp;&nbsp;//false&nbsp;&nbsp;</span></li><li><span>false&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;==&nbsp;&nbsp;&nbsp;null&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//false&nbsp;&nbsp;</span></li><li><span>null&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;==&nbsp;&nbsp;&nbsp;undefined&nbsp;&nbsp;&nbsp;&nbsp;//true&nbsp;&nbsp;</span></li><li><span>"&nbsp;\t\r\n"&nbsp;==&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//true&nbsp;&nbsp;</span></li></ol></div>
<p>&nbsp;</p>
<h2>5、Java的Integer cache</h2>
<div>
<div>
<div>Java代码 &nbsp;<a title="收藏这段代码"><img alt="收藏代码" src="http://justjavac.iteye.com/images/icon_star.png" /></a></div></div>
<ol><li><span>Integer&nbsp;foo&nbsp;=&nbsp;1000;&nbsp;&nbsp;</span></li><li>Integer&nbsp;bar&nbsp;=&nbsp;<span>1000;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;</li><li>foo&nbsp;&lt;=&nbsp;bar;&nbsp;<span>//&nbsp;true&nbsp;&nbsp;</span></li><li>foo&nbsp;&gt;=&nbsp;bar;&nbsp;<span>//&nbsp;true&nbsp;&nbsp;</span></li><li>foo&nbsp;==&nbsp;bar;&nbsp;<span>//&nbsp;false&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;</li><li><span>//然后，如果你的&nbsp;foo&nbsp;和&nbsp;bar&nbsp;的值在&nbsp;127&nbsp;和&nbsp;-128&nbsp;之间（包括）&nbsp;&nbsp;</span></li><li><span>//那么，其行为则改变了：&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;</li><li>Integer&nbsp;foo&nbsp;=&nbsp;<span>42;&nbsp;&nbsp;</span></li><li>Integer&nbsp;bar&nbsp;=&nbsp;<span>42;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;</li><li>foo&nbsp;&lt;=&nbsp;bar;&nbsp;<span>//&nbsp;true&nbsp;&nbsp;</span></li><li>foo&nbsp;&gt;=&nbsp;bar;&nbsp;<span>//&nbsp;true&nbsp;&nbsp;</span></li><li>foo&nbsp;==&nbsp;bar;&nbsp;<span>//&nbsp;true&nbsp;&nbsp;</span></li></ol></div>
<p>为什么会这样呢？你需要了解一下Java Interger Cache，下面是相关的程序，注意其中的注释</p>
<div>
<div>
<div>Java代码 &nbsp;<a title="收藏这段代码"><img alt="收藏代码" src="http://justjavac.iteye.com/images/icon_star.png" /></a></div></div>
<ol><li><span>/**&nbsp;</span></li><li>&nbsp;</li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Returns&nbsp;a&nbsp;&lt;tt&gt;Integer&lt;/tt&gt;&nbsp;instance&nbsp;representing&nbsp;the&nbsp;specified&nbsp;</span></li><li>&nbsp;</li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&lt;tt&gt;int&lt;/tt&gt;&nbsp;value.&nbsp;</span></li><li>&nbsp;</li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;If&nbsp;a&nbsp;new&nbsp;&lt;tt&gt;Integer&lt;/tt&gt;&nbsp;instance&nbsp;is&nbsp;not&nbsp;required,&nbsp;this&nbsp;method&nbsp;</span></li><li>&nbsp;</li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;should&nbsp;generally&nbsp;be&nbsp;used&nbsp;in&nbsp;preference&nbsp;to&nbsp;the&nbsp;constructor&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&lt;a&nbsp;href="mailto:{@link"&gt;{@link&lt;/a&gt;&nbsp;#Integer(int)},&nbsp;as&nbsp;this&nbsp;method&nbsp;is&nbsp;likely&nbsp;to&nbsp;yield&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;significantly&nbsp;better&nbsp;space&nbsp;and&nbsp;time&nbsp;performance&nbsp;by&nbsp;caching&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;frequently&nbsp;requested&nbsp;values.&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;i&nbsp;an&nbsp;&lt;code&gt;int&lt;/code&gt;&nbsp;value.&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;a&nbsp;&lt;tt&gt;Integer&lt;/tt&gt;&nbsp;instance&nbsp;representing&nbsp;&lt;tt&gt;i&lt;/tt&gt;.&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@since&nbsp;&nbsp;1.5&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>public&nbsp;static&nbsp;Integer&nbsp;valueOf(int&nbsp;i)&nbsp;{&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>if(i&nbsp;&gt;=&nbsp;-128&nbsp;&amp;&amp;&nbsp;i&nbsp;&lt;=&nbsp;IntegerCache.high)&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>return&nbsp;IntegerCache.cache[i&nbsp;+&nbsp;128];&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>else&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>return&nbsp;new&nbsp;Integer(i);&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li></ol></div>
<h2>5、Perl的那些奇怪的变量</h2>
<div>
<div>
<div>Php代码 &nbsp;<a title="收藏这段代码"><img alt="收藏代码" src="http://justjavac.iteye.com/images/icon_star.png" /></a></div></div>
<ol><li><span>$.&nbsp;&nbsp;</span></li><li><span>$_&nbsp;&nbsp;</span></li><li><span>$_#&nbsp;&nbsp;</span></li><li>$$&nbsp;&nbsp;</li><li>$[&nbsp;&nbsp;</li><li>@_&nbsp;&nbsp;</li></ol></div>
<p>&nbsp;其所有的这些怪异的变量请参看：<a style="color: #2970a6; text-decoration: none" href="http://www.kichwa.com/quik_ref/spec_variables.html">http://www.kichwa.com/quik_ref/spec_variables.html</a></p>&nbsp; 
<h2>6、Java的异常返回</h2>
<p>请看下面这段程序，你觉得其返回true还是false？</p>
<div>
<div>
<div>Java代码 &nbsp;<a title="收藏这段代码"><img alt="收藏代码" src="http://justjavac.iteye.com/images/icon_star.png" /></a></div></div>
<ol><li><span>try&nbsp;{&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>return&nbsp;true;&nbsp;&nbsp;</span></li><li>}&nbsp;<span>finally&nbsp;{&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>return&nbsp;false;&nbsp;&nbsp;</span></li><li>}&nbsp;&nbsp;</li></ol></div>
<p>&nbsp;在&nbsp;javascript 和python下，其行为和Java的是一样的。&nbsp; </p>
<h2>7、C语言中的Duff device</h2>
<p>下面的这段程序你能看得懂吗？这就是所谓的Duff Device，相当的怪异。</p>
<div>
<div>
<div>C代码 &nbsp;<a title="收藏这段代码"><img alt="收藏代码" src="http://justjavac.iteye.com/images/icon_star.png" /></a></div></div>
<ol><li><span>void&nbsp;duff_memcpy(&nbsp;char*&nbsp;to,&nbsp;char*&nbsp;from,&nbsp;size_t&nbsp;count&nbsp;)&nbsp;{&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>size_t&nbsp;n&nbsp;=&nbsp;(count+7)/8;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>switch(&nbsp;count%8&nbsp;)&nbsp;{&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>case&nbsp;0:&nbsp;do{&nbsp;*to++&nbsp;=&nbsp;*from++;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>case&nbsp;7:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*to++&nbsp;=&nbsp;*from++;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>case&nbsp;6:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*to++&nbsp;=&nbsp;*from++;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>case&nbsp;5:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*to++&nbsp;=&nbsp;*from++;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>case&nbsp;4:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*to++&nbsp;=&nbsp;*from++;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>case&nbsp;3:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*to++&nbsp;=&nbsp;*from++;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>case&nbsp;2:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*to++&nbsp;=&nbsp;*from++;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>case&nbsp;1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*to++&nbsp;=&nbsp;*from++;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span>while(--n&gt;0);&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li><li>}&nbsp;&nbsp;&nbsp;</li></ol></div>
<h2>8、PHP中的字符串当函数用</h2>
<p>PHP中的某些用法也是很怪异的</p>
<div>
<div>
<div>Php代码 &nbsp;<a title="收藏这段代码"><img alt="收藏代码" src="http://justjavac.iteye.com/images/icon_star.png" /></a></div></div>
<ol><li><span>$x&nbsp;=&nbsp;"foo";&nbsp;&nbsp;</span></li><li><span>function&nbsp;foo(){&nbsp;echo&nbsp;"wtf";&nbsp;}&nbsp;&nbsp;</span></li><li><span>$x();&nbsp;&nbsp;</span></li></ol></div>
<h2>9、在C++中，你可以使用空指针调用静态函数</h2>
<div>
<div>
<div>Cpp代码 &nbsp;<a title="收藏这段代码"><img alt="收藏代码" src="http://justjavac.iteye.com/images/icon_star.png" /></a></div></div>
<ol><li><span>class&nbsp;Foo&nbsp;{&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;<span>public:&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span>static&nbsp;void&nbsp;bar()&nbsp;{&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&lt;&lt;&nbsp;<span>"bar()"&nbsp;&lt;&lt;&nbsp;std::endl;&nbsp;&nbsp;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li><li>};&nbsp;&nbsp;</li></ol></div>
<p>呵呵。的确是挺怪异的。 </p></div></div>转自iteye 
<div>http://justjavac.iteye.com/blog/1297756</div><img src ="http://www.blogjava.net/zdq5337/aggbug/366930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zdq5337/" target="_blank">开花流水</a> 2011-12-21 14:49 <a href="http://www.blogjava.net/zdq5337/articles/366930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vim基本命令</title><link>http://www.blogjava.net/zdq5337/articles/366325.html</link><dc:creator>开花流水</dc:creator><author>开花流水</author><pubDate>Wed, 14 Dec 2011 05:33:00 GMT</pubDate><guid>http://www.blogjava.net/zdq5337/articles/366325.html</guid><wfw:comment>http://www.blogjava.net/zdq5337/comments/366325.html</wfw:comment><comments>http://www.blogjava.net/zdq5337/articles/366325.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zdq5337/comments/commentRss/366325.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zdq5337/services/trackbacks/366325.html</trackback:ping><description><![CDATA[1.<br />vim<br />#在命令行中输入vim,进入vim编辑器<br />2.<br />i<br />#按一下i键,下端显示 --INSERT--<br />#插入命令,在vim中可能任意字符都有作用<br />3.<br />Esc<br />#退出i(插入)命令进行其它命令使用<br />4.<br />:r filename<br />#读入一个文件内容,并写入到当前编辑器中<br /><font color="#ff0000">5.<br />:w newfilename<br />#将该编辑器中的内容写入到一个新文件中<br /></font>6.<br />:w<br />#在编辑的过程中保存文件,相当于word中的ctrl+s<br />7.<br />:! command<br />暂时离开 vi 到指令列模式下执行 command 的显示结果！例如<br /><font color="#ff0000">:!ls<br />#在编辑过程中执行shell命令ls<br /></font>8.<br /><font color="#ff0000">:sh<br />#进入shell命令行,执行完命令后ctrl+d退出重新进入vim编辑继续编辑</font><br /><font color="#ff0000">在shell命令下，执行ctral+l完成清屏<br /></font>9.<br />:wq<br />#保存文件并退出<br />10.<br />ZZ<br />#保存文件并退出,同上一个命令,注意大写<br />11.<br />:q!<br />#强制退出,不保存<br />12.<br />:set number或者：set nu<br />#使编辑中的文件显示行号<br />13.<br />:set nonumber或者：set nonu <br />#与上一条命令相反,不显示行号<br />14.<br />:help i<br />#查看插入命令帮助<br />15.<br />u <br />#撤消上一步操作<br />16.<br />/Fedora<br />#查找Fedora字符<br />17.<br />:s /Fedora/Redhat<br />#将Fedora字符替换为Redhat(只替换在光标所在的行)<br />18.<br />dw<br />#删除单词<br />dd<br />#删除行<br />19.<br />o<br />#打开空白一行<br />20.<br />vim + filename<br />#进行文件最后一行进行编辑<br />21.<br />vim +n filename<br />#进入文件第n行进行编辑<br />22.<br />:1,.s/redhat/fedora<br />#.号表示当前行,即光标所在行<br />#将第1行到当前行(.)第一次出现的redhat字符代替为fedora<br />23.<br />:1,.s/redhat/fedora/g<br />#将第1行到当前行(.)所有出现的redhat字符代替为fedora,g<br />全局标志<br />24.<br />:1,$s/redhat/fedora/g<br />#$表示最后一行<br />#将第1行到最后一行所有出现的redhat字符代替为fedora<br />25.<br />:%s/redhat/fedora/g<br />#同上一个命令<br />26.<br />:%s/\/fedora/g<br />#将第1行到最后一行所有出现的redhat字代替为fedora<br />#字,而不是字符<br />27.<br />:f<br />#显示文件内容,状态等等<br />#同ctrl+g命令<br />28.<br />:e!<br />#当前文件,返回到上次保存<br />:e file<br />#切换编辑文件<br />29.<br />:n<br />#当编辑时有多个文件(比如vim file1 file2)时切换到下一个文件,与:e file<br />结合使用<br /><br /><br /><br /><br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <br /><br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;VIM命令大全<br />光标控制命令<br />命令&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 光标移动<br />h&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 向左移一个字符<br />j&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 向下移一行<br />k&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 向上移一行<br />l&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 向右移一个字符<br />G&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 移到文件的最后一行<br />w&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 移到下一个字的开头<br />W&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 移到下一个字的开头，忽略标点符号<br />b&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 移到前一个字的开头<br />B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 移到前一个字的开头，忽略标点符号<br />L&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 移到屏幕的最后一行<br />M&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 移到屏幕的中间一行<br />H&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 移到屏幕的第一行<br />e&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 移到下一个字的结尾<br />E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 移到下一个字的结尾，忽略标点符号<br />(&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;移到句子的开头<br />)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;移到句子的结尾<br />{&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;移到段落的开头<br />}&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;移到下一个段落的开头<br />0(数字), |&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 移到当前行的第一列<br />^&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;移到当前行的第一个非空字符<br />$&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;移到当前行的最后一个字符<br />+, Enter&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 移到下一行的第一个字符<br />-&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;移到前一行的第一个非空字符<br />在 vi 中添加文本<br />命令&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 插入动作<br />a&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 在光标后插入文本<br />A&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 在当前行插入文本<br />i&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 在光标前插入文本<br />I&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 在当前行前插入文本<br />o&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 在当前行的下边插入新行<br />O&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 在当前行的上边插入新行<br />s&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 删除光标所在处字符，并进入插入模式<br />S&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 删除光标所在的行，并进入插入模式<br />:r file&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 读入文件 file 内容，并插在当前行后<br />:nr file&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;读入文件 file 内容，并插在第 n 行后<br />Esc&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;回到命令模式<br />^v char&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 插入时忽略 char 的指定意义，这是为了插入特殊字符<br />在 vi 中删除文本<br />命令&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 删除操作<br />x&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 删除光标处的字符<br />dw&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;删至下一个字的开头<br />dG&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;删除行，直到文件结束<br />dd&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;删除整行<br />db&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;删除光标前面的字<br />:n,md&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;从第 m 行开始往前删除 n 行<br />d, d$&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;从光标处删除到行尾<br />^h, backspace&nbsp; &nbsp;&nbsp; &nbsp; 插入时，删除前面的字符<br />^w&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;插入时，删除前面的字<br />修改 vi 文本<br />每个命令前面的数字表示该命令重复的次数<br />命令&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 替换操作<br />rchar&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 用 char 替换当前字符<br />R text escape&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;用 text 替换当前字符直到按下 Esc 键<br />stext escape&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;用 text 代替当前字符<br />S 或 cctext escape&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 用 text 代替整行<br />cwtext escape&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;将当前字改为 text<br />Ctext escape&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;将当前行余下的改为 text<br />cG escape&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;修改至文件的末尾<br />ccursor_cmd text escape&nbsp; &nbsp;&nbsp; &nbsp; 从当前位置处到光标命令位置处都改为 text<br />在 vi 中查找与替换<br />命令&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 查找与替换操作<br />/text&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 在文件中向前查找 text<br />?text&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 在文件中向后查找 text<br />n&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;在同一方向重复查找<br />N&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;在相反方向重复查找<br />ftext&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 在当前行向前查找 text<br />Ftext&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 在当前行向后查找 text<br />ttext&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 在当前行向前查找 text，并将光标定位在 text 的第一个字符<br />Ttext&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 在当前行向后查找 text，并将光标定位在 text 的第一个字符<br />:set ic&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;查找时忽略大小写<br />:set noic&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;查找时对大小写敏感<br />:ranges/pat1/pat2/g&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;用 newtext 替换 oldtext<br />:m,ns/oldtext/newtext&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;在 m 行通过 n，用 newtext 替换 oldtext<br />&amp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 重复最后的 :s 命令<br />:g/text1/s/text2/text3&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;查找包含 text1 的行，用 text3 替换 text2<br />:g/text/command&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;在所有包含 text 的行运行 command 所表示的命令<br />:v/text/command&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;在所有不包含 text 的行运行 command 所表示的命令<br />在 vi 中复制文本<br />命令&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 复制操作<br />yy&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;将当前行的内容放入临时缓冲区<br />nyy&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 将 n 行的内容放入临时缓冲区<br />p&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;将临时缓冲区中的文本放入光标后<br />P&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;将临时缓冲区中的文本放入光标前<br />"(a-z)nyy&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 复制 n 行放入名字为圆括号内的可命名缓冲区，省略 n 表示当前行<br />"(a-z)ndd&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 删除 n 行放入名字为圆括号内的可命名缓冲区，省略 n 表示当前行<br />"(a-z)p&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;将名字为圆括号的可命名缓冲区的内容放入当前行后<br />"(a-z)P&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;将名字为圆括号的可命名缓冲区的内容放入当前行前<br />在 vi 中撤消与重复<br />命令&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;撤消操作<br />u&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;撤消最后一次修改<br />U&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;撤消当前行的所有修改<br />.&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;重复最后一次修改<br />,&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;以相反的方向重复前面的 f、F、t 或 T 查找命令<br />;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;重复前面的 f、F、t 或 T 查找命令<br />"np&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 取回最后第 n 次的删除(缓冲区中存有一定次数的删除内容，一般为 9)<br />n&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;重复前面的 / 或 ? 查找命令<br />N&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;以相反方向重复前面的 / 或 ? 命令<br />保存文本和退出 vi<br />命令&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 保存和/或退出操作<br />:w&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;保存文件但不退出 vi<br />:w file&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;将修改保存在 file 中但不退出 vi<br />:wq 或 ZZ 或 :x&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;保存文件并退出 vi<br />:q!&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 不保存文件，退出 vi<br />:e!&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 放弃所有修改，从上次保存文件开始再编辑<br />vi 中的选项<br />选项&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 作用<br />:set all&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;打印所有选项<br />:set nooption&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;关闭 option 选项<br />:set nu&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;每行前打印行号<br />:set showmode&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;显示是输入模式还是替换模式<br />:set autoindent&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 继承前一行的缩进方式，特别适用于多行注释<br />:set smartindent&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;为C程序提供自动缩进<br />:set list&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 显示制表符(^I)和行尾符号<br />:set ts=8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 为文本输入设置 tab stops<br />:set window=n&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;设置文本窗口显示 n 行<br />:set number&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;显示行数<br />:set nonumber&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;取消显示行数<br />vi 的状态<br />选项&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 作用<br />:.=&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;打印当前行的行号<br />:=&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;打印文件中的行数<br />ctrl+g&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 显示文件名、当前的行号、文件的总行数和文件位置的百分比<br />:l&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;使用字母 "l" 来显示许多的特殊字符，如制表符和换行符<br />在文本中定位段落和放置标记<br />选项&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 作用<br />{&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 在第一列插入 { 来定义一个段落<br />[[&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 回到段落的开头处<br />]]&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 向前移到下一个段落的开头处<br />m(a-z)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 用一个字母来标记当前位置，如用 mz 表示标记 z<br />'(a-z)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 将光标移动到指定的标记，如用 'z 表示移动到 z<br />在 vi 中连接行<br />选项&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 作用<br />J&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;将下一行连接到当前行的末尾<br />nJ&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;连接后面 n 行<br />光标放置与屏幕调整<br />选项&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 作用<br />H&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;将光标移动到屏幕的顶行<br />nH&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;将光标移动到屏幕顶行下的第 n 行<br />M&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;将光标移动到屏幕的中间<br />L&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;将光标移动到屏幕的底行<br />nL&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;将光标移动到屏幕底行上的第 n 行<br />^e(ctrl+e)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;将屏幕上滚一行<br />ctrl+y&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 将屏幕下滚一行<br />ctrl+u&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 将屏幕上滚半页<br />ctrl+d&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 将屏幕下滚半页<br />ctrl+b&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 将屏幕上滚一页<br />ctrl+f&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 将屏幕下滚一页<br />ctrl+l&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 重绘屏幕<br />z-return&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;将当前行置为屏幕的顶行<br />nz-return&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 将当前行下的第 n 行置为屏幕的顶行<br />z.&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;将当前行置为屏幕的中央<br />nz.&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 将当前行上的第 n 行置为屏幕的中央<br />z-&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;将当前行置为屏幕的底行<br />nz-&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 将当前行上的第 n 行置为屏幕的底行<br />vi 中的 shell 转义命令<br />选项&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 作用<br />:!command&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 执行 shell 的 command 命令，如 :!ls<br />:!!&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 执行前一个 shell 命令<br />:r!command&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;读取 command 命令的输入并插入，如 :r!ls 会先执行 ls，然后读入内容<br />:w!command&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;将当前已编辑文件作为 command 命令的标准输入并执行 command 命令，如 :w!grep all<br />:cd directory&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;将当前工作目录更改为 directory 所表示的目录<br />:sh&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 将启动一个子 shell，使用 ^d(ctrl+d) 返回 vi<br />:so file&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;在 shell 程序 file 中读入和执行命令<br />vi 中的宏与缩写<br />(避免使用控制键和符号，不要使用字符 K、V、g、q、v、*、= 和功能键)<br />选项&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 作用<br />:map key command_seq 定义一个键来运行 command_seq，如 :map e ea，无论什么时候都可以 e 移到一个字的末尾来追加文本<br />:map&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;在状态行显示所有已定义的宏<br />:umap key&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 删除该键的宏<br />:ab string1 string2&nbsp; &nbsp;定义一个缩写，使得当插入 string1 时，用 string2 替换 string1。当要插入文本时，键入 string1 然后按 Esc 键，系统就插入了 string2<br />:ab&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 显示所有缩写<br />:una string&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;取消 string 的缩写<br />在 vi 中缩进文本<br />选项&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;作用<br />ctrl+i或 tab&nbsp; &nbsp;&nbsp;&nbsp;插入文本时，插入移动的宽度，移动宽度是事先定义好的<br />:set ai&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;打开自动缩进<br />:set sw=n&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 将移动宽度设置为 n 个字符<br />n&gt;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 使 n 行都向右移动一个宽度，例如 3&gt;&gt; 就将接下来的三行每行都向右移动一个移动宽度<br /> <img src ="http://www.blogjava.net/zdq5337/aggbug/366325.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zdq5337/" target="_blank">开花流水</a> 2011-12-14 13:33 <a href="http://www.blogjava.net/zdq5337/articles/366325.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux下vi命令大全【转】</title><link>http://www.blogjava.net/zdq5337/articles/365887.html</link><dc:creator>开花流水</dc:creator><author>开花流水</author><pubDate>Thu, 08 Dec 2011 07:25:00 GMT</pubDate><guid>http://www.blogjava.net/zdq5337/articles/365887.html</guid><wfw:comment>http://www.blogjava.net/zdq5337/comments/365887.html</wfw:comment><comments>http://www.blogjava.net/zdq5337/articles/365887.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zdq5337/comments/commentRss/365887.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zdq5337/services/trackbacks/365887.html</trackback:ping><description><![CDATA[<div id="cnblogs_post_body">
<p>进入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 />VI的使用<br />--------------------------------------------------------------------------------<br /><br />一、插入文本 <br />&#9484;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488; <br />&#9474;命令&#9474;描述　　　　　　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;i 　&#9474;在当前字符前插入文本　　&#9474; <br />&#9500;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;I 　&#9474;在行首插入文本 　　　 　&#9474; <br />&#9500;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;a 　&#9474;在当前字符后添加文本　　&#9474; <br />&#9500;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;A 　&#9474;在行末添加文本　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;o 　&#9474;在当前行后面插入一空行　&#9474; <br />&#9500;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;O 　&#9474;在当前行前面插入一空行　&#9474; <br />&#9500;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;R 　&#9474;以改写方式输入文本　　　&#9474; <br />&#9492;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496; <br />二、移动光标 <br />&#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488; <br />&#9474;命令　　　&#9474;描述　　　　　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;j或下箭头 &#9474;向下移动一行　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;k或上箭头 &#9474;向上移动一行　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;h或左箭头 &#9474;左移一个字符　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;l或右箭头 &#9474;右移一个字符　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;w 　　　　&#9474;右移一个词　　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;W 　　　　&#9474;右移一个以空格分隔的词&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;b 　　　　&#9474;左移一个词　　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;B 　　　　&#9474;左移一个以空格分隔的词&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;0 　　　　&#9474;移到行首　　　　　　　&#9474; <br />&#9474;Ctrl-F　　&#9474;向前翻页　　　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;Ctrl-B　　&#9474;向后翻页　　　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;nG　　　　&#9474;到第n行 　　　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;G 　　　　&#9474;到最后一行　　　　　　&#9474; <br />&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496; <br />三、替换文本 <br />&#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488; <br />&#9474;命令　　　&#9474;描述　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;$ 　　　　&#9474;到行尾　　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;( 　　　　&#9474;到句子的开头&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;) 　　　　&#9474;到句子的末尾&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;{　 　　　&#9474;到段落的开头&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;}　　 　　&#9474;到段落的末尾&#9474; <br />&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496; <br /><br />四、删除文本 <br />&#9484;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488; <br />&#9474;命令　&#9474;描述 　　　　　　 　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;r 　　&#9474;替换一个字符 　　　　 &#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;c 　　&#9474;修改文本直到按下Esc健 &#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;cw　　&#9474;修改下一个词 　　　 　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;cnw　 &#9474;修改接下来的n个词 　　&#9474; <br />&#9492;&#9472;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496; <br />五、文本编辑 <br />&#9484;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488; <br />&#9474;命寺&#9474;描述　　　　　　　　　　　　　　　　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;yy　&#9474;将一行文本移到缺省缓冲区中 　　　　 　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;yn　&#9474;将下一个词移到缺省缓冲区中 　　 　　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;ynw &#9474;将后面的n个词移到缺省缓冲区中　　　　 　　　&#9474; <br />&#9500;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;p 　&#9474;如果缺省缓冲区中包含一行文本，则在当前　　　&#9474; <br />&#9474;　　&#9474;行后面插入一个空行井将缺省缓冲区中的声　　　&#9474; <br />&#9474;　　&#9474;容粘贴到这一行中；如果缺省缓冲区中包含　　　&#9474; <br />&#9474;　　&#9474;多个词，把这些词粘贴到光标的右边．　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;P 　&#9474;如果缺省缓冲区中包含一行文本，则正当前 　 　&#9474; <br />&#9474; 　 &#9474;行前面插入一个空行井将缺省缓冲区中的内 　 　&#9474; <br />&#9474;　　&#9474;容粘贴到这一行中；如果缺省缓冲区中包含 　　 &#9474; <br />&#9474; 　 &#9474;多个词，把这些词粘贴到光标的左边 　 　<br /><br />　　&#9474; <br />&#9492;&#9472;&#9472;&#9524;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496; <br />六、保存退出 <br />&#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488; <br />&#9474;命令　　　　　　　　　&#9474;描述　　　　　　　　　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;zz　　　　　　　　　　&#9474;保存并退出　　　　　　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;:w filename　　　　 　&#9474;写入文件　　　　　　　　　 　 &#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;:W　　　　　　　　　　&#9474;写入文件　　　　　　　　　　　&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;:x　　　　　　　　　　&#9474;保存(如果当前文件修改过)并退出&#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;:q!　　　　　　　　　 &#9474;不保存文件，直接退出　　 　　 &#9474; <br />&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508; <br />&#9474;:q　　　　　　　　　　&#9474;退出vi　　　　　　　　　　　　&#9474; <br /><br />VI常用技巧<br /><br />VI命令可以说是Unix/Linux世界里最常用的编辑文件的命令了，但是因为它的命令集众多，很多人都不习惯使用它，其实您只需要掌握基本命令，然后加以灵活运用，就会发现它的优势，并会逐渐喜欢使用这种方法。本文旨在介绍VI的一些最常用命令和高级应用技巧。 <br /><br />一、基本命令介绍 <br /><br />---- 1．光标命令 <br /><br />k、j、h、l&#8212;&#8212;上、下、左、右光标移动命令。虽然您可以在Linux中使用键盘右边的4个光标键，但是记住这4个命令还是非常有用的。这4个键正是右手在键盘上放置的基本位置。 <br />nG&#8212;&#8212;跳转命令。n为行数，该命令立即使光标跳到指定行。 <br />Ctrl+G&#8212;&#8212;光标所在位置的行数和列数报告。 <br />w、b&#8212;&#8212;使光标向前或向后跳过一个单词。 <br />---- 2．编辑命令 <br />i、a、r&#8212;&#8212;在光标的前、后以及所在处插入字符命令(i=insert、a=append、r=replace)。 <br />cw、dw&#8212;&#8212;改变(置换)/删除光标所在处的单词的命令 (c=change、d=delete)。 <br />x、d$、dd&#8212;&#8212;删除一个字符、删除光标所在处到行尾的所有字符以及删除整行的命令。 <br />---- 3．查找命令 <br />---- /string、?string&#8212;&#8212;从光标所在处向后或向前查找相应的字符串的命令。 <br />---- 4．拷贝复制命令 <br />---- yy、p&#8212;&#8212;拷贝一行到剪贴板或取出剪贴板中内容的命令。 <br /><br />二、常见问题及应用技巧 <br /><br />---- 1．在一个新文件中读/etc/passwd中的内容，取出用户名部分。 <br />---- vi file <br />---- :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd <br />---- :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。 <br />---- 您也可以在指定的行号后读入文件内容，例如使用命令&#8220;:3r /etc/passwd&#8221;从新文件的第3行开始读入 /etc/passwd的所有内容。 <br />---- 我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。 <br />---- #cat squid.conf.default | grep -v ^$ | grep -v ^# <br /><br />---- 2．在打开一个文件编辑后才知道登录的用户对该文件没有写的权限，不能存盘，需要将所做修改存入临时文件。 <br />---- vi file <br />---- :w /tmp/1 保存所做的所有修改，也可以将其中的某一部分修改保存到临时文件，例如仅仅把第20～59行之间的内容存盘成文件/tmp/1，我们可以键入如下命令。 <br />---- vi file <br />---- :20,59w /tmp/1 <br /><br />---- 3．用VI编辑一个文件，但需要删除大段的内容。 <br />---- 首先利用编辑命令&#8220;vi file&#8221;打开文件，然后将光标移到需要删除的行处按Ctrl+G显示行号，再到结尾处再按Ctrl+G，显示文件结尾的行号。 <br />---- :23,1045d 假定2次得到的行号为23和1045，则把这期间的内容全删除，也可以在要删除的开始行和结束行中用ma、mb命令标记，然后利用&#8220;:a,bd&#8221;命令删除。 <br /><br />---- 4．在整个文件的各行或某几行的行首或行尾加一些字符串。 <br />---- vi file <br />---- :3,$s/^/some string / 在文件的第一行至最后一行的行首插入&#8220;some string&#8221;。 <br />---- :%s/$/some string/g 在整个文件每一行的行尾添加&#8220;some string&#8221;。 <br />---- :%s/string1/string2/g 在整个文件中替换&#8220;string1&#8221;成&#8220;string2&#8221;。 <br />---- :3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的&#8220;string1&#8221;成&#8220;string2&#8221;。 <br />---- 注意: 其中s为substitute，%表示所有行，g表示global。 <br /><br />---- 5．同时编辑2个文件，拷贝一个文件中的文本并粘贴到另一个文件中。 <br />---- vi file1 file2 <br />---- yy 在文件1的光标处拷贝所在行 <br />---- :n 切换到文件2 (n=next) <br />---- p 在文件2的光标所在处粘贴所拷贝的行 <br />---- :n 切换回文件1 <br /><br />---- 6．替换文件中的路径。 <br />---- 使用命令&#8220;:%s#/usr/bin#/bin#g&#8221;可以把文件中所有路径/usr/bin换成/bin。也可以使用命令&#8220;:%s//usr/bin//bin/g&#8221;实现，其中&#8220;&#8221;是转义字符，表明其后的&#8220;/&#8221;字符是具有实际意义的字符，不是分隔符。</p></div><script type="text/javascript">
if ($ != jQuery) {
	$ = jQuery.noConflict();
}
var isLogined = false;
var cb_blogId = 61271;
var cb_entryId = 1581524;
var cb_blogApp = "88999660";
var cb_blogUserGuid = "8ecd2971-53a8-de11-ba8f-001cf0cd104b";
var cb_entryCreatedDate = '2009/10/12 9:44:00';
</script> <img src ="http://www.blogjava.net/zdq5337/aggbug/365887.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zdq5337/" target="_blank">开花流水</a> 2011-12-08 15:25 <a href="http://www.blogjava.net/zdq5337/articles/365887.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>