<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>老韩</title>
	<atom:link href="http://www.handaoliang.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.handaoliang.com</link>
	<description>沉迷于玩技术是病，被技术玩得沉迷是命。</description>
	<lastBuildDate>Thu, 02 Sep 2010 17:49:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>让iPhone跑得更快，对iPhone进行系统盘瘦身</title>
		<link>http://www.handaoliang.com/article_115.html</link>
		<comments>http://www.handaoliang.com/article_115.html#comments</comments>
		<pubDate>Thu, 02 Sep 2010 17:49:42 +0000</pubDate>
		<dc:creator>hdl</dc:creator>
				<category><![CDATA[杂七杂八]]></category>

		<guid isPermaLink="false">http://www.handaoliang.com/article_115.html</guid>
		<description><![CDATA[iPhone有一个Fonts文件夹，是放在系统盘下的，占据了90多M的磁盘空间。对于像Fonts这种不经常替换的文件，完全可以移到别的磁盘，以节约系统盘有限的空间。下面，我们就通过SSH来连接到iPhone，对iPhone进行一次小小的系统盘瘦身。
先看一下fonts文件夹的大小，94M：


<span class="readmore"><a href="http://www.handaoliang.com/article_115.html" title="让iPhone跑得更快，对iPhone进行系统盘瘦身" target="_blank">阅读全文——共992字</a></span>]]></description>
			<content:encoded><![CDATA[<p>iPhone有一个Fonts文件夹，是放在系统盘下的，占据了90多M的磁盘空间。对于像Fonts这种不经常替换的文件，完全可以移到别的磁盘，以节约系统盘有限的空间。下面，我们就通过SSH来连接到iPhone，对iPhone进行一次小小的系统盘瘦身。</p>
<p>先看一下fonts文件夹的大小，94M：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline">handaoliang-iphone:/System/Library/Fonts root# du -lh</li>
<li>94M&nbsp; &nbsp; &nbsp;.</li>
</ol>
</div>
<p>再看磁盘空间，发现系统盘已经被占用了89%：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline">handaoliang-iphone:~ root# df -lh</li>
<li>Filesystem&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Size&nbsp; Used Avail Use% Mounted on</li>
<li>/dev/disk0s1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 750M&nbsp; 654M&nbsp; &nbsp;89M&nbsp; 89% /</li>
<li>devfs&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 33K&nbsp; &nbsp;33K&nbsp; &nbsp; &nbsp;0 100% /dev</li>
<li>/dev/disk0s2s1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;30G&nbsp; 4.9G&nbsp; &nbsp;25G&nbsp; 17% /private/var</li>
</ol>
</div>
<p>那么首先，我们把/System/Library/Fonts目录拷贝到 /private/var目录下：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline">handaoliang-iphone:~ cp -r /System/Library/Fonts /private/var</li>
</ol>
</div>
<p>然后把/System/Library/Fonts目录重新命名为/System/Library/Fonts.bak：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline">handaoliang-iphone:~ mv /System/Library/Fonts /System/Library/Fonts.bak</li>
</ol>
</div>
<p>建立一个软连接，把新的/System/Library/Fonts指向/private/var/Fonts目录：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline">ln -s /private/var/Fonts /System/Library/Fonts</li>
</ol>
</div>
<p>重新启动IPHONE，如果工作正常，putty重新登录进入iphone。</p>
<p>删掉备份，删除/System/Library/Fonts.bak目录：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline">rm -rf /System/Library/Fonts.bak</li>
</ol>
</div>
<p>再看系统盘空间，可用空间已经增加到了23%：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline">handaoliang-iphone:/System/Library root# df -lh</li>
<li>Filesystem&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Size&nbsp; Used Avail Use% Mounted on</li>
<li>/dev/disk0s1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 750M&nbsp; 560M&nbsp; 183M&nbsp; 76% /</li>
<li>devfs&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 33K&nbsp; &nbsp;33K&nbsp; &nbsp; &nbsp;0 100% /dev</li>
<li>/dev/disk0s2s1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;30G&nbsp; 4.9G&nbsp; &nbsp;25G&nbsp; 17% /private/var</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.handaoliang.com/article_115.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOS4下安装最新的MyWi4.6.2</title>
		<link>http://www.handaoliang.com/article_114.html</link>
		<comments>http://www.handaoliang.com/article_114.html#comments</comments>
		<pubDate>Thu, 02 Sep 2010 16:51:44 +0000</pubDate>
		<dc:creator>hdl</dc:creator>
				<category><![CDATA[杂七杂八]]></category>

		<guid isPermaLink="false">http://www.handaoliang.com/article_114.html</guid>
		<description><![CDATA[　　MyWi不用我介绍了吧？它可以让你的iPhone成为一个Wifi热点，如果你有一个iPhone以及3G卡，那么使用这个软件即可实现其它设备通过iPhone wifi热点来共享3G带宽上网。
　　网上流传的大部分教程都是过期的，装完之后根本不能打开，一启动就退出。找了半天，终于在国外的一个论坛找到一个贴子。
　　直接翻译过来吧：
　　1、通过Cydia安装当前版本的Rockapp，并且创建一个Rock ID。
<span class="readmore"><a href="http://www.handaoliang.com/article_114.html" title="iOS4下安装最新的MyWi4.6.2" target="_blank">阅读全文——共1076字</a></span>]]></description>
			<content:encoded><![CDATA[<p>　　MyWi不用我介绍了吧？它可以让你的iPhone成为一个Wifi热点，如果你有一个iPhone以及3G卡，那么使用这个软件即可实现其它设备通过iPhone wifi热点来共享3G带宽上网。</p>
<p>　　网上流传的大部分教程都是过期的，装完之后根本不能打开，一启动就退出。找了半天，终于在国外的一个论坛找到一个贴子。</p>
<p>　　直接翻译过来吧：</p>
<p>　　1、通过Cydia安装当前版本的Rockapp，并且创建一个Rock ID。<br />
　　2、通过Rock来安装MyWi以及My3G的试用版本，装完了打开他们，确认获得试用License。<br />
　　3、使用iPhoneBrowser或者类似的程序（译者注：我用的是SSH直接登录到命令行，Tar一个包出来就可以了），备份：/var/mobile/library/ryp folder<br />
　　4、删除Rockapp－－同时会将MyWi和My3G一起删除。<br />
　　5、通过Cydia安装ElPelle源的MyWi4.6.2以及My3G的No Rock版本。（译者注：Elepelle源通过Source添加：http:/elpelle6.com/repo）；<br />
　　6、恢复/var/mobile/library/ryp文件夹。<br />
　　7、退出SSH，再打开MyWi，就可以用了。</p>
<p>　　以上步骤亲自实验通过，并且使用iPad成功连接上网。可以开启11个通道，有iPhone WiFi的同学，可以省一笔买华为E5的银子了。</p>
<p>　　1. Installed current version of Rockapp via Cydia, create new account<br />
　　2. Installed current trial versions of MyWi and My3G, open each to confirm trial license<br />
　　3. Using iPhonebrowser (or similar program), backup the /var/mobile/library/ryp folder<br />
　　4. Delete Rockapp (dependencies i.e. MyWi and My3G will be removed too)<br />
　　5. Install MyWi 4.6.2 and My3G (No Rock) from the ElPelle repository using Cydia<br />
　　6. Restore the /var/mobile/library/ryp folder<br />
　　7. Everything works!</p>
<p>　　参考贴子：http://www.sinfuliphone.com/showthread.php?t=26444&#038;page=41</p>
<p><img src="http://www.laohan.org/upload_files/mywi.jpg" alt="mywi install" style="padding:3px; border:1px solid #999;" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.handaoliang.com/article_114.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mailman2.1.9系统的一些BUG修复</title>
		<link>http://www.handaoliang.com/article_111.html</link>
		<comments>http://www.handaoliang.com/article_111.html#comments</comments>
		<pubDate>Mon, 21 Jun 2010 07:20:22 +0000</pubDate>
		<dc:creator>hdl</dc:creator>
				<category><![CDATA[杂七杂八]]></category>

		<guid isPermaLink="false">http://www.handaoliang.com/article_111.html</guid>
		<description><![CDATA[1、邮件列表归档中文乱码问题。
　　A.错误描述：如果客户端发送的邮件编码为GB2312编码，则当把邮件归档时，会出现信体为乱码的现象。
　　B.问题分析：经过对邮件原文的分析，邮件本身没有问题，信头上也有编码信息，比如我发送的测试信信体为：

<span class="readmore"><a href="http://www.handaoliang.com/article_111.html" title="Mailman2.1.9系统的一些BUG修复" target="_blank">阅读全文——共1598字</a></span>]]></description>
			<content:encoded><![CDATA[<p><strong>1、邮件列表归档中文乱码问题。</strong></p>
<p>　　<strong>A.错误描述：</strong>如果客户端发送的邮件编码为GB2312编码，则当把邮件归档时，会出现信体为乱码的现象。</p>
<p>　　<strong>B.问题分析：</strong>经过对邮件原文的分析，邮件本身没有问题，信头上也有编码信息，比如我发送的测试信信体为：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline">------=_NextPart_000_0180_01CB096D.0DEF1A50</li>
<li>Content-Type: text/plain;</li>
<li>&nbsp;&nbsp; &nbsp;charset=&quot;gb2312&quot;</li>
<li>Content-Transfer-Encoding: base64</li>
<li>&nbsp;</li>
<li>1eLKx9K7t+K3otfUT3V0bG9va7XEsuLK1NPKvP6jrNPKvP6x4MLrzqqjukdCMjMxMg0KDQpUaGlz</li>
<li>IGlzIGEgdGVzdCBtYWlsIHNlbmRlZCBieSBPVVRMT09LLCBhbmQgaXShr3MgZW5jb2RpbmcgYnkg</li>
<li>R0IyMzEyLi4NCg0KIA0KDQpIYW5kYW9saWFuZw0KDQq6q7XAwcENCg0K</li>
<li>&nbsp;</li>
<li>------=_NextPart_000_0180_01CB096D.0DEF1A50</li>
</ol>
</div>
<p>　　经过对信体进行Base64解码，发现信体信息正常，编码正常。这就跟踪到问题可能出现在解码的模块。经过读代码发现，Mailman是调用pipermail进行解码的，据此跟踪到信体的解解码在HyperArch.py模块的Article类里完成。</p>
<p>　　<strong>C.问题修正：</strong>在Article类里加入编码判断并进行转码：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline"><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Blue;">body</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">charset</span><span style="color: Gray;"> != </span><span style="color: Blue;">Utils</span><span style="color: Gray;">.</span><span style="color: Blue;">GetCharSet</span><span style="color: Olive;">(</span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">_lang</span><span style="color: Olive;">)</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;"># decode body</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">try</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">#body = body.decode(charset)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">charset</span><span style="color: Gray;"> == </span><span style="color: #8b0000;">'</span><span style="color: Red;">gb2312</span><span style="color: #8b0000;">'</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">body</span><span style="color: Gray;">&nbsp; =&nbsp; </span><span style="color: Blue;">body</span><span style="color: Gray;">.</span><span style="color: Blue;">decode</span><span style="color: Olive;">(</span><span style="color: Blue;">charset</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">ignore</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">encode</span><span style="color: Olive;">(</span><span style="color: Blue;">Utils</span><span style="color: Gray;">.</span><span style="color: Blue;">GetCharSet</span><span style="color: Olive;">(</span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">_lang</span><span style="color: Olive;">))</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">else</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">body</span><span style="color: Gray;"> = </span><span style="color: Teal;">unicode</span><span style="color: Olive;">(</span><span style="color: Blue;">body</span><span style="color: Gray;">, </span><span style="color: Blue;">charset</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">except</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Green;">UnicodeError</span><span style="color: Gray;">, </span><span style="color: Green;">LookupError</span><span style="color: Olive;">)</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">body</span><span style="color: Gray;"> = </span><span style="color: Green;">None</span></li>
</ol>
</div>
<p><strong>2、邮件列表的List页面乱码问题</strong>：</p>
<p>　　<strong>A.问题描述：</strong>在Mailman2.1.9版本中，如果管理员后台设置了语言为中文，而系统又没有进行编码设置，那么Mailman邮件列表中文界面极有可能显示为乱码。</p>
<p>　　<strong>B.问题分析：</strong>通过查看网页源代码发现，此时的编码为“us-ascii”，这是默认的编码。再检查模板，发现模板的编码都是UTF-8，此时编码是混淆的。</p>
<p>　　<strong>C.修正：</strong>更改Default.py或者mm_cfg.py文件，把zh_CN编码改成：add_language('zh_CN', _('Chinese (China)'), 'utf-8')。</p>
<p>　　<strong>3、脚本change_pw无法找到列表错误。</strong></p>
<p>　　<strong>A.错误描述：</strong>当邮件列表的名字有大小写字母时，会出现无法修改邮件列表的错误，例如：<br />
当我在命令行下输入：./change_pw --listname=Mailman-dev-test --password=123456，此时可能出现：No such list "Mailman-dev-test"的错误。</p>
<p>　　<strong>B.问题分析：</strong>这是因为没有把所有字母转成小写的缘故，邮件列表在本地都存储为小写。如果没有转换，则Mailman/MailList.py模块第616会抛出：Errors.MMUnknownListError错误：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline"><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Green;">not</span><span style="color: Gray;"> </span><span style="color: Blue;">Utils</span><span style="color: Gray;">.</span><span style="color: Blue;">list_exists</span><span style="color: Olive;">(</span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">internal_name</span><span style="color: Olive;">())</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">raise</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Errors</span><span style="color: Gray;">.</span><span style="color: Blue;">MMUnknownListError</span></li>
</ol>
</div>
<p>　　<br />
　　<strong>C. 修正：</strong>在change_pw脚本的openlist方法中，将传入的listname转成小写：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline"><span style="color: Blue;">listname</span><span style="color: Gray;"> = </span><span style="color: Blue;">listname</span><span style="color: Gray;">.</span><span style="color: Blue;">lower</span><span style="color: Olive;">()</span><span style="color: Gray;">.</span><span style="color: Blue;">strip</span><span style="color: Olive;">()</span></li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.handaoliang.com/article_111.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>转换Putty ppk 文件到OpenSSH格式的Key文件</title>
		<link>http://www.handaoliang.com/article_106.html</link>
		<comments>http://www.handaoliang.com/article_106.html#comments</comments>
		<pubDate>Thu, 20 May 2010 16:19:16 +0000</pubDate>
		<dc:creator>hdl</dc:creator>
				<category><![CDATA[MacOS]]></category>

		<guid isPermaLink="false">http://www.handaoliang.com/article_106.html</guid>
		<description><![CDATA[出于安全的考虑，我的服务器SSH远程认证去掉了通过用户名＋密码模式的认证机制。转而使用Windows下的Puttygen生成的Key（以.ppk结尾）来验证登录，同时为了增强安全性，把SSH的端口配到了高端端口上。然而转到Mac平台下去之后，因其本身就带有Shell（Mac是基于FreeBSD进行的包装），所以本身也就有了SSH，用不上Putty了，但是因此所导致的问题是，我在Windows下的Key到了Mac平台上也就用不上了，在这种情况下，迫不得已，就只有去找转变认证机制的方法。
出于思维的习惯（人类避重就轻的惰性），一开始考虑的是把服务器改回使用用户名加密码的认证机制，但显然这不是一个明智的做法。于是就把眼光转向了转换ppk key的方向，基于这个想法，再想到解铃还得系铃人，所以目光自然又重新定位回了Putty这个开源的东东，下载下源码一读，发现它对Uninx的支持也还是很好的。那好，我只需要一个puttygen，编译无非是一点体力活。
<span class="readmore"><a href="http://www.handaoliang.com/article_106.html" title="转换Putty ppk 文件到OpenSSH格式的Key文件" target="_blank">阅读全文——共915字</a></span>]]></description>
			<content:encoded><![CDATA[<p>出于安全的考虑，我的服务器SSH远程认证去掉了通过用户名＋密码模式的认证机制。转而使用Windows下的Puttygen生成的Key（以.ppk结尾）来验证登录，同时为了增强安全性，把SSH的端口配到了高端端口上。然而转到Mac平台下去之后，因其本身就带有Shell（Mac是基于FreeBSD进行的包装），所以本身也就有了SSH，用不上Putty了，但是因此所导致的问题是，我在Windows下的Key到了Mac平台上也就用不上了，在这种情况下，迫不得已，就只有去找转变认证机制的方法。</p>
<p>出于思维的习惯（人类避重就轻的惰性），一开始考虑的是把服务器改回使用用户名加密码的认证机制，但显然这不是一个明智的做法。于是就把眼光转向了转换ppk key的方向，基于这个想法，再想到解铃还得系铃人，所以目光自然又重新定位回了Putty这个开源的东东，下载下源码一读，发现它对Uninx的支持也还是很好的。那好，我只需要一个puttygen，编译无非是一点体力活。</p>
<p>以下是全过程：<br />
1、下载Putty 0.6源代码并编译：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline"><span style="color: Blue;">wget</span><span style="color: Gray;"> </span><span style="color: Blue;">http</span><span style="color: Gray;">://</span><span style="color: Blue;">putty</span><span style="color: Gray;">.</span><span style="color: Blue;">very</span><span style="color: Gray;">.</span><span style="color: Blue;">rulez</span><span style="color: Gray;">.</span><span style="color: Blue;">org</span><span style="color: Gray;">/</span><span style="color: Blue;">latest</span><span style="color: Gray;">/</span><span style="color: Blue;">putty</span><span style="color: Gray;">-</span><span style="color: Maroon;">0.60</span><span style="color: Gray;">.</span><span style="color: Blue;">tar</span><span style="color: Gray;">.</span><span style="color: Blue;">gz</span></li>
<li><span style="color: Blue;">tar</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">xzvf</span><span style="color: Gray;"> </span><span style="color: Blue;">putty</span><span style="color: Gray;">-</span><span style="color: Maroon;">0.60</span><span style="color: Gray;">.</span><span style="color: Blue;">tar</span><span style="color: Gray;">.</span><span style="color: Blue;">gz</span></li>
<li><span style="color: Blue;">cd</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">putty</span><span style="color: Gray;">-</span><span style="color: Maroon;">0.60</span></li>
<li><span style="color: Blue;">configure</span><span style="color: Gray;"> –</span><span style="color: Blue;">prefix</span><span style="color: Gray;">=/</span><span style="color: Blue;">opt</span><span style="color: Gray;">/</span><span style="color: Blue;">iApps</span><span style="color: Gray;">/</span><span style="color: Blue;">putty</span></li>
<li><span style="color: Blue;">make</span></li>
</ol>
</div>
<p>嗯，不用讶异，接下来没有make install的过程，因为我们不需要真的把Putty安装到/opt/iApps/putty里，当你在Make的时候，Puttygen已经编译完成，这里在Configure写上一个prefix路径，只是想提醒你，如果想安装的话，最好指定一个目录，以便于管理。</p>
<p>那么接下来转换我们Windows下的Putty key：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline"><span style="color: Blue;">putty</span><span style="color: Gray;">-</span><span style="color: Maroon;">0.60</span><span style="color: Gray;">/</span><span style="color: Blue;">unix</span><span style="color: Gray;">/</span><span style="color: Blue;">puttygen</span><span style="color: Gray;"> </span><span style="color: Blue;">my_ssh_key</span><span style="color: Gray;">.</span><span style="color: Blue;">ppk</span><span style="color: Gray;"> -</span><span style="color: Blue;">O</span><span style="color: Gray;"> </span><span style="color: Blue;">private</span><span style="color: Gray;">-</span><span style="color: Blue;">openssh</span><span style="color: Gray;"> -</span><span style="color: Blue;">o</span><span style="color: Gray;"> </span><span style="color: Blue;">my_openssh_key</span><span style="color: Gray;">.</span><span style="color: Blue;">ssh</span></li>
</ol>
</div>
<p>顺利的生成my_openssh_key.ssh文件，此时就可以通过以下命令来进行登录了：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline"><span style="color: Blue;">ssh</span><span style="color: Gray;"> </span><span style="color: Blue;">root</span><span style="color: #00008b;">@172</span><span style="color: Maroon;">.16.1.99</span><span style="color: Gray;"> -</span><span style="color: Blue;">i</span><span style="color: Gray;"> </span><span style="color: Blue;">my_openssh_key</span><span style="color: Gray;">.</span><span style="color: Blue;">ssh</span><span style="color: Gray;"> -</span><span style="color: Blue;">p</span><span style="color: Gray;"> </span><span style="color: Maroon;">9999</span></li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.handaoliang.com/article_106.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>盛大在线游戏格子客开始封测</title>
		<link>http://www.handaoliang.com/article_100.html</link>
		<comments>http://www.handaoliang.com/article_100.html#comments</comments>
		<pubDate>Tue, 20 Apr 2010 07:50:37 +0000</pubDate>
		<dc:creator>hdl</dc:creator>
				<category><![CDATA[杂七杂八]]></category>

		<guid isPermaLink="false">http://www.handaoliang.com/article_100.html</guid>
		<description><![CDATA[　　格子客是我来到盛大创新院之后参与的第一个项目，这是一款新概念的在线游戏，首推“玩游戏！为乐趣更为奖品！”的全新概念！与其它传统游戏不同，它不是单纯依靠同质化的游戏乐趣吸引玩家，而是把丰富，刺激的“奖品”有机化的融入到游戏当中，玩游戏的同时不但可以体验到冒险的刺激，而且可以拿到奖品，这个奖品不是虚拟的，是实物的，比如：PSP、Ipod等。
　　2010年4月19日格子客开始邀请封测，如果你想体验一下这个游戏，可以找我要邀请码。要邀请码的同学请在回复中留下Email。：）
]]></description>
			<content:encoded><![CDATA[<p>　　<a href="http://gzk.sdo.com" target="_blank">格子客</a>是我来到盛大创新院之后参与的第一个项目，这是一款新概念的在线游戏，首推“玩游戏！为乐趣更为奖品！”的全新概念！与其它传统游戏不同，它不是单纯依靠同质化的游戏乐趣吸引玩家，而是把丰富，刺激的“奖品”有机化的融入到游戏当中，玩游戏的同时不但可以体验到冒险的刺激，而且可以拿到奖品，这个奖品不是虚拟的，是实物的，比如：PSP、Ipod等。<br />
　　2010年4月19日格子客开始邀请封测，如果你想体验一下这个游戏，可以找我要邀请码。要邀请码的同学请在回复中留下Email。：）</p>
<p><img src="http://laohan.org/upload_files/gzk_01.jpg" alt="格子客截图" style="padding:3px;border:1px solid #999;" /></p>
<p><img src="http://www.laohan.org/upload_files/gzk_02.jpg" alt="格子客截图" style="padding:3px;border:1px solid #999;" /></p>
<p><img src="http://www.laohan.org/upload_files/gzk_03.jpg" alt="格子客截图" style="padding:3px;border:1px solid #999;" /></p>
<p><img src="http://www.laohan.org/upload_files/gzk_04.jpg" alt="格子客截图" style="padding:3px;border:1px solid #999;" /></p>
<p><img src="http://www.laohan.org/upload_files/gzk_05.jpg" alt="格子客截图" style="padding:3px;border:1px solid #999;" /></p>
<p><img src="http://www.laohan.org/upload_files/gzk_06.jpg" alt="格子客截图" style="padding:3px;border:1px solid #999;" /></p>
<p><img src="http://www.laohan.org/upload_files/gzk_07.jpg" alt="格子客截图" style="padding:3px;border:1px solid #999;" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.handaoliang.com/article_100.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>我的GVim配置</title>
		<link>http://www.handaoliang.com/article_99.html</link>
		<comments>http://www.handaoliang.com/article_99.html#comments</comments>
		<pubDate>Tue, 20 Apr 2010 07:00:25 +0000</pubDate>
		<dc:creator>hdl</dc:creator>
				<category><![CDATA[杂七杂八]]></category>

		<guid isPermaLink="false">http://www.handaoliang.com/article_99.html</guid>
		<description><![CDATA[　　工作中，我大部分时间都是和VIM打交道的，甚至Windows下的编程也开始完全用GVIM替代Editplus。这两天对自己的vimrc文件做了一下整理。同时给每一行的配置增加了注释。整理完成之后，好用多了，因为借鉴了很多网友的经验，所以本着分享的精神公布出来，希望有朋友能用上。
　　另外，我这份_vimrc配置使用的字体是：YaHei Mono，如果您没有此字体，可以到这里下载：（下载YaHei Mono字体）。下载后放到Windows文件夹下的fonts目录里即可。如果你不想用YaHei Mono字体，那么有一个替代方案就是用Courier_New字体，需要修改以下配置：


<span class="readmore"><a href="http://www.handaoliang.com/article_99.html" title="我的GVim配置" target="_blank">阅读全文——共3417字</a></span>]]></description>
			<content:encoded><![CDATA[<p>　　工作中，我大部分时间都是和VIM打交道的，甚至Windows下的编程也开始完全用GVIM替代Editplus。这两天对自己的vimrc文件做了一下整理。同时给每一行的配置增加了注释。整理完成之后，好用多了，因为借鉴了很多网友的经验，所以本着分享的精神公布出来，希望有朋友能用上。<br />
　　另外，我这份_vimrc配置使用的字体是：<a href="http://85y.org/blog/20090705898.html" target="_blank">YaHei Mono</a>，如果您没有此字体，可以到这里下载：（<a href="http://85y.org/blog/20090705898.html" target="_blank">下载YaHei Mono字体</a>）。下载后放到Windows文件夹下的fonts目录里即可。如果你不想用YaHei Mono字体，那么有一个替代方案就是用Courier_New字体，需要修改以下配置：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline"><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 设置显示字体</span></li>
<li><span style="color: Red;">if has(</span><span style="color: #8b0000;">&quot;</span><span style="color: Blue;">win32</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">guifont</span><span style="color: Gray;">=</span><span style="color: Blue;">Courier_New</span><span style="color: Gray;">:</span><span style="color: Blue;">h11</span><span style="color: Gray;">:</span><span style="color: Blue;">cANSI</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">guifont</span><span style="color: Gray;">=</span><span style="color: Blue;">YaHei</span><span style="color: Gray;">\ </span><span style="color: Blue;">Mono</span><span style="color: Gray;">:</span><span style="color: Blue;">h11</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">set guifontwide=Microsoft\ Yahei\ Monotype:h11</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">guifont</span><span style="color: Gray;">=</span><span style="color: Blue;">YaHei</span><span style="color: Gray;">\ </span><span style="color: Blue;">Consolas</span><span style="color: Gray;">\ </span><span style="color: Blue;">Hybrid</span><span style="color: Gray;">:</span><span style="color: Blue;">h12</span></li>
<li><span style="color: Blue;">endif</span></li>
</ol>
</div>
<p>将“set guifont=YaHei\ Mono:h11”注掉，同时把“set guifont=Courier_New:h11:cANSI”项打开即可。</p>
<p>以下是配置文件全部内容：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline"><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> ***************Vimrc files for GVim *************</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> * </span><span style="color: Blue;">CreateDate</span><span style="color: Gray;"> : </span><span style="color: Blue;">Apr</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">20</span><span style="color: Gray;">,</span><span style="color: Maroon;">2010</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> * LastModified : Apr 20,2010</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 全局设定&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: #8b0000;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 不要使用</span><span style="color: Blue;">vi</span><span style="color: Gray;">的键盘模式，而是</span><span style="color: Blue;">vim</span><span style="color: Gray;">自己的</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">nocompatible</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 加载配置。</span></li>
<li><span style="color: Red;">behave mswin</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">设置快速编辑.</span><span style="color: Blue;">vimrc</span><span style="color: Gray;">文件 ,</span><span style="color: Blue;">e</span><span style="color: Gray;"> 编辑.</span><span style="color: Blue;">vimrc</span></li>
<li><span style="color: Green;">map</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">silent</span><span style="color: Gray;">&gt; &lt;</span><span style="color: Blue;">leader</span><span style="color: Gray;">&gt;</span><span style="color: Blue;">e</span><span style="color: Gray;"> :</span><span style="color: Blue;">call</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">SwitchToBuf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">~/_vimrc</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">cr</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;">保存.vimrc文件后会自动调用新的.vimrc</span></li>
<li><span style="color: Red;">autocmd! bufwritepost .vimrc source ~/_vimrc</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 设定解码</span></li>
<li><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">has</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">multi_byte</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> When 'fileencodings' starts with 'ucs-bom', don't do this manually</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">bomb</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">fileencodings</span><span style="color: Gray;">=</span><span style="color: Blue;">ucs</span><span style="color: Gray;">-</span><span style="color: Blue;">bom</span><span style="color: Gray;">,</span><span style="color: Blue;">utf</span><span style="color: Gray;">-</span><span style="color: Maroon;">8</span><span style="color: Gray;">,</span><span style="color: Blue;">chinese</span><span style="color: Gray;">,</span><span style="color: Blue;">taiwan</span><span style="color: Gray;">,</span><span style="color: Blue;">japan</span><span style="color: Gray;">,</span><span style="color: Blue;">korea</span><span style="color: Gray;">,</span><span style="color: Blue;">latin1</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> CJK environment detection and corresponding setting</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; if v:lang =~ </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">^</span><span style="color: Blue;">zh_CN</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Simplified</span><span style="color: Gray;"> </span><span style="color: Blue;">Chinese</span><span style="color: Gray;">, </span><span style="color: Blue;">on</span><span style="color: Gray;"> </span><span style="color: Blue;">Unix</span><span style="color: Gray;"> </span><span style="color: Blue;">euc</span><span style="color: Gray;">-</span><span style="color: Blue;">cn</span><span style="color: Gray;">, </span><span style="color: Blue;">on</span><span style="color: Gray;"> </span><span style="color: Blue;">MS</span><span style="color: Gray;">-</span><span style="color: Blue;">Windows</span><span style="color: Gray;"> </span><span style="color: Blue;">cp936</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">encoding</span><span style="color: Gray;">=</span><span style="color: Blue;">utf</span><span style="color: Gray;">-</span><span style="color: Maroon;">8</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">termencoding</span><span style="color: Gray;">=</span><span style="color: Blue;">utf</span><span style="color: Gray;">-</span><span style="color: Maroon;">8</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;"> &amp;</span><span style="color: Blue;">fileencoding</span><span style="color: Gray;"> == </span><span style="color: #8b0000;">''</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">fileencoding</span><span style="color: Gray;">=</span><span style="color: Blue;">utf</span><span style="color: Gray;">-</span><span style="color: Maroon;">8</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">endif</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">elseif</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">v</span><span style="color: Gray;">:</span><span style="color: Blue;">lang</span><span style="color: Gray;"> =~ </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">^zh_TW</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> Traditional Chinese, on Unix euc-tw, on MS-Windows cp950</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; set encoding=euc-tw</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; set termencoding=euc-tw</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; if &amp;fileencoding == ''</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set fileencoding=euc-tw</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; endif</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; elseif v:lang =~ </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">^</span><span style="color: Blue;">ja_JP</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Japanese</span><span style="color: Gray;">, </span><span style="color: Blue;">on</span><span style="color: Gray;"> </span><span style="color: Blue;">Unix</span><span style="color: Gray;"> </span><span style="color: Blue;">euc</span><span style="color: Gray;">-</span><span style="color: Blue;">jp</span><span style="color: Gray;">, </span><span style="color: Blue;">on</span><span style="color: Gray;"> </span><span style="color: Blue;">MS</span><span style="color: Gray;">-</span><span style="color: Blue;">Windows</span><span style="color: Gray;"> </span><span style="color: Blue;">cp932</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">encoding</span><span style="color: Gray;">=</span><span style="color: Blue;">euc</span><span style="color: Gray;">-</span><span style="color: Blue;">jp</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">termencoding</span><span style="color: Gray;">=</span><span style="color: Blue;">euc</span><span style="color: Gray;">-</span><span style="color: Blue;">jp</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;"> &amp;</span><span style="color: Blue;">fileencoding</span><span style="color: Gray;"> == </span><span style="color: #8b0000;">''</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">fileencoding</span><span style="color: Gray;">=</span><span style="color: Blue;">euc</span><span style="color: Gray;">-</span><span style="color: Blue;">jp</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">endif</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">elseif</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">v</span><span style="color: Gray;">:</span><span style="color: Blue;">lang</span><span style="color: Gray;"> =~ </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">^ko</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> Korean on Unix euc-kr, on MS-Windows cp949</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; set encoding=euc-kr</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; set termencoding=euc-kr</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; if &amp;fileencoding == ''</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set fileencoding=ecu-kr</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; endif</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; endif</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Detect</span><span style="color: Gray;"> </span><span style="color: Blue;">UTF</span><span style="color: Gray;">-</span><span style="color: Maroon;">8</span><span style="color: Gray;"> </span><span style="color: Blue;">locale</span><span style="color: Gray;">, </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">override</span><span style="color: Gray;"> </span><span style="color: Blue;">CJK</span><span style="color: Gray;"> </span><span style="color: Blue;">setting</span><span style="color: Gray;"> </span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Blue;">needed</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">v</span><span style="color: Gray;">:</span><span style="color: Blue;">lang</span><span style="color: Gray;"> =~ </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">utf8$</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> || </span><span style="color: Blue;">v</span><span style="color: Gray;">:</span><span style="color: Blue;">lang</span><span style="color: Gray;"> =~ </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">UTF-8$</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">encoding</span><span style="color: Gray;">=</span><span style="color: Blue;">utf</span><span style="color: Gray;">-</span><span style="color: Maroon;">8</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">endif</span></li>
<li><span style="color: Green;">else</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">echoerr</span><span style="color: Gray;">&nbsp;</span><span style="color: #8b0000;">'</span><span style="color: Red;">Sorry, this version of (g)Vim was not compiled with &quot;multi_byte&quot;</span><span style="color: #8b0000;">'</span></li>
<li><span style="color: Blue;">endif</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> browsedir设置</span></li>
<li><span style="color: Red;">set browsedir=buffer</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 自动格式化设置</span></li>
<li><span style="color: Blue;">filetype</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">indent</span><span style="color: Gray;"> </span><span style="color: Blue;">on</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">autoindent</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">smartindent</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 设置备份及备份目录。</span></li>
<li><span style="color: Red;">set backspace=indent,eol,start</span></li>
<li><span style="color: Red;">set backupdir=D:\vim_back_files</span></li>
<li><span style="color: Red;">set autochdir</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">history</span><span style="color: Gray;">文件中需要记录的行数，恢复必须用到。</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">history</span><span style="color: Gray;">=</span><span style="color: Maroon;">1024</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 窗口最大化</span></li>
<li><span style="color: Red;">autocmd GUIEnter * simalt ~x</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 解决菜单乱码，先指定语言。</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">langmenu</span><span style="color: Gray;">=</span><span style="color: Blue;">zh_CN</span><span style="color: Gray;">.</span><span style="color: Blue;">UTF</span><span style="color: Gray;">-</span><span style="color: Maroon;">8</span></li>
<li><span style="color: Blue;">source</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">$VIMRUNTIME</span><span style="color: Gray;">/</span><span style="color: Blue;">vimrc_example</span><span style="color: Gray;">.</span><span style="color: Blue;">vim</span></li>
<li><span style="color: Blue;">source</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">$VIMRUNTIME</span><span style="color: Gray;">/</span><span style="color: Blue;">mswin</span><span style="color: Gray;">.</span><span style="color: Blue;">vim</span></li>
<li><span style="color: Blue;">language</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">message</span><span style="color: Gray;"> </span><span style="color: Blue;">zh_CN</span><span style="color: Gray;">.</span><span style="color: Blue;">UTF</span><span style="color: Gray;">-</span><span style="color: Maroon;">8</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">fileencodings</span><span style="color: Gray;">=</span><span style="color: Blue;">utf</span><span style="color: Gray;">-</span><span style="color: Maroon;">8</span><span style="color: Gray;">,</span><span style="color: Blue;">GB2312</span><span style="color: Gray;">,</span><span style="color: Blue;">cp936</span><span style="color: Gray;">,</span><span style="color: Blue;">gb18030</span><span style="color: Gray;">,</span><span style="color: Blue;">big5</span><span style="color: Gray;">,</span><span style="color: Blue;">euc</span><span style="color: Gray;">-</span><span style="color: Blue;">jp</span><span style="color: Gray;">,</span><span style="color: Blue;">euc</span><span style="color: Gray;">-</span><span style="color: Blue;">kr</span><span style="color: Gray;">,</span><span style="color: Blue;">latin1</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 在处理未保存或只读文件的时候，弹出确认</span></li>
<li><span style="color: Red;">set confirm</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 共享外部剪贴板</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">clipboard</span><span style="color: Gray;">+=</span><span style="color: Blue;">unnamed</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 显示未完成命令</span></li>
<li><span style="color: Red;">set showcmd</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 侦测文件类型</span></li>
<li><span style="color: Blue;">filetype</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">on</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 载入文件类型插件</span></li>
<li><span style="color: Red;">filetype plugin on</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 为特定文件类型载入相关缩进文件</span></li>
<li><span style="color: Blue;">filetype</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">indent</span><span style="color: Gray;"> </span><span style="color: Blue;">on</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 保存全局变量</span></li>
<li><span style="color: Red;">set viminfo+=!</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 带有如下符号的单词不要被换行分割</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">iskeyword</span><span style="color: Gray;">+=</span><span style="color: Blue;">_</span><span style="color: Gray;">,$,@,%,</span><span style="color: #ffa500;">#,-</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 语法高亮</span></li>
<li><span style="color: Red;">syntax on</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 设置不兼容模式</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">nocp</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 设置鼠标支持</span></li>
<li><span style="color: Red;">set mouse=a</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 不要生成</span><span style="color: Blue;">swap</span><span style="color: Gray;">文件</span></li>
<li><span style="color: Blue;">setlocal</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">noswapfile</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 当buffer被丢弃时隐藏</span></li>
<li><span style="color: Red;">set bufhidden=hide</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 保存窗口大小</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">sessionoptions</span><span style="color: Gray;">+=</span><span style="color: Blue;">resize</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> C++头文件识别</span></li>
<li><span style="color: Red;">au BufEnter /usr/include/c++/* setf cpp</span></li>
<li><span style="color: Red;">au BufEnter /usr/include/g++-3/* setf cpp</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">GNU</span><span style="color: Gray;">标准</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">BufEnter</span><span style="color: #8b0000;"> /</span><span style="color: Red;">usr</span><span style="color: #8b0000;">/</span><span style="color: Gray;">* </span><span style="color: Blue;">call</span><span style="color: Gray;"> </span><span style="color: Blue;">GnuIndent</span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 显示行号</span></li>
<li><span style="color: Red;">set number</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tab</span><span style="color: Gray;">宽度</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tabstop</span><span style="color: Gray;">=</span><span style="color: Maroon;">4</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">cindent</span><span style="color: Gray;"> </span><span style="color: Blue;">shiftwidth</span><span style="color: Gray;">=</span><span style="color: Maroon;">4</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">autoindent</span><span style="color: Gray;"> </span><span style="color: Blue;">shiftwidth</span><span style="color: Gray;">=</span><span style="color: Maroon;">4</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> C/C++注释</span></li>
<li><span style="color: Red;">set comments=://</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 修正自动</span><span style="color: Blue;">C</span><span style="color: Gray;">式样注释功能 &lt;</span><span style="color: Maroon;">2005</span><span style="color: Gray;">/</span><span style="color: Maroon;">07</span><span style="color: Gray;">/</span><span style="color: Maroon;">16</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">comments</span><span style="color: Gray;">=</span><span style="color: Blue;">s1</span><span style="color: Gray;">:/*,</span><span style="color: Blue;">mb</span><span style="color: Gray;">:*,</span><span style="color: Blue;">ex0</span><span style="color: Gray;">:/</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 增强检索功能</span></li>
<li><span style="color: Red;">set tags=./tags,./../tags,./**/tags</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 保存文件格式</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">fileformats</span><span style="color: Gray;">=</span><span style="color: Blue;">unix</span><span style="color: Gray;">,</span><span style="color: Blue;">dos</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 文件被其他程序修改时自动载入</span></li>
<li><span style="color: Red;">set autoread</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 高亮字符，让其不受</span><span style="color: Maroon;">100</span><span style="color: Gray;">列限制</span></li>
<li><span style="color: Gray;">:</span><span style="color: Blue;">highlight</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">OverLength</span><span style="color: Gray;"> </span><span style="color: Blue;">ctermbg</span><span style="color: Gray;">=</span><span style="color: Blue;">red</span><span style="color: Gray;"> </span><span style="color: Blue;">ctermfg</span><span style="color: Gray;">=</span><span style="color: Blue;">white</span><span style="color: Gray;"> </span><span style="color: Blue;">guibg</span><span style="color: Gray;">=</span><span style="color: Blue;">red</span><span style="color: Gray;"> </span><span style="color: Blue;">guifg</span><span style="color: Gray;">=</span><span style="color: Blue;">white</span></li>
<li><span style="color: Gray;">:</span><span style="color: Blue;">match</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">OverLength</span><span style="color: Gray;"> </span><span style="color: #8b0000;">'</span><span style="color: Red;">\%101v.*</span><span style="color: #8b0000;">'</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 总是显示状态行</span></li>
<li><span style="color: Red;">set laststatus=2</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 状态行颜色</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> highlight StatusLine guifg=SlateBlue guibg=Yellow</span></li>
<li><span style="color: Red;">highlight StatusLine guifg=SlateBlue guibg=White</span></li>
<li><span style="color: Red;">highlight StatusLineNC guifg=Gray guibg=White</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 我的状态行显示的内容（包括文件类型和解码）</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">statusline</span><span style="color: Gray;">=</span><span style="color: Olive;">[</span><span style="color: #00008b;">%n</span><span style="color: Olive;">]</span><span style="color: Gray;">%&lt;</span><span style="color: #00008b;">%f%y%h%m%r</span><span style="color: Gray;">%=</span><span style="color: Olive;">[</span><span style="color: #00008b;">%b</span><span style="color: Gray;">\ </span><span style="color: Maroon;">0</span><span style="color: Blue;">x</span><span style="color: #00008b;">%B</span><span style="color: Olive;">]</span><span style="color: Gray;">\ </span><span style="color: #00008b;">%l</span><span style="color: Gray;">\ </span><span style="color: Blue;">of</span><span style="color: Gray;">\ </span><span style="color: #00008b;">%L</span><span style="color: Gray;">,</span><span style="color: #00008b;">%c%V</span><span style="color: Gray;">\ </span><span style="color: Blue;">Page</span><span style="color: Gray;">\ </span><span style="color: #00008b;">%N</span><span style="color: Gray;">\ </span><span style="color: #00008b;">%P</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 设置命令行高度为2行</span></li>
<li><span style="color: Red;">set cmdheight=1</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 命令行补全</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">wildmenu</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 自动补全括号，包括大括号</span></li>
<li><span style="color: Red;">:inoremap ( ()&lt;ESC&gt;i</span></li>
<li><span style="color: Red;">:inoremap ) &lt;c-r&gt;=ClosePair(')')&lt;CR&gt;</span></li>
<li><span style="color: Red;">:inoremap { {}&lt;ESC&gt;i</span></li>
<li><span style="color: Red;">:inoremap } &lt;c-r&gt;=ClosePair('}')&lt;CR&gt;</span></li>
<li><span style="color: Red;">:inoremap [ []&lt;ESC&gt;i</span></li>
<li><span style="color: Red;">:inoremap ] &lt;c-r&gt;=ClosePair(']')&lt;CR&gt;</span></li>
<li><span style="color: Red;">:inoremap &lt; &lt;&gt;&lt;ESC&gt;i</span></li>
<li><span style="color: Red;">:inoremap &gt; &lt;c-r&gt;=ClosePair('&gt;')&lt;CR&gt;</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 打开文件时，总是跳到退出之前的光标处</span></li>
<li><span style="color: Blue;">autocmd</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">BufReadPost</span><span style="color: Gray;"> *</span></li>
<li><span style="color: Gray;">\ </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">line</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">'</span><span style="color: Navy;">\&quot;</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;"> &gt; </span><span style="color: Maroon;">0</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Blue;">line</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">'</span><span style="color: Navy;">\&quot;</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;"> &lt;= </span><span style="color: Blue;">line</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">$</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;"> |</span></li>
<li><span style="color: Gray;">\&nbsp;&nbsp; </span><span style="color: Blue;">exe</span><span style="color: Gray;">&nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">normal! g`</span><span style="color: Navy;">\&quot;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> |</span></li>
<li><span style="color: Gray;">\ </span><span style="color: Blue;">endif</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 用浅色高亮当前行</span></li>
<li><span style="color: Red;">if has(</span><span style="color: #8b0000;">&quot;</span><span style="color: Blue;">gui_running</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; autocmd InsertLeave * se nocul</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; autocmd InsertEnter * se cul</span></li>
<li><span style="color: Red;">endif</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">filetype plugin on&nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">允许使用</span><span style="color: Blue;">ftplugin</span><span style="color: Gray;">目录下的文件类型特定脚本</span></li>
<li><span style="color: Blue;">filetype</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">indent</span><span style="color: Gray;"> </span><span style="color: Blue;">on</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">允许使用indent目录下的文件类型缩进</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 设置自动粘贴功能。</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">pastetoggle</span><span style="color: Gray;">=&lt;</span><span style="color: Blue;">F3</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 设置以缩进的方式自动折叠和设置快捷方式</span></li>
<li><span style="color: Red;">set foldmethod=indent</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">map</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">F3</span><span style="color: Gray;">&gt; </span><span style="color: Blue;">zO</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 打开折叠</span></li>
<li><span style="color: Red;">map &lt;F4&gt; zc </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 关闭折叠</span></li>
<li><span style="color: Green;">map</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">F5</span><span style="color: Gray;">&gt; </span><span style="color: Blue;">zR</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 打开所有折叠</span></li>
<li><span style="color: Red;">map &lt;F6&gt; zM&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 关闭所有折叠</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 保存代码文件前自动修改最后修改时间</span></li>
<li><span style="color: Red;">au BufWritePre *.sh&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; call TimeStamp('#')</span></li>
<li><span style="color: Red;">au BufWritePre .vimrc,*.vim&nbsp;&nbsp; call TimeStamp('</span><span style="color: #8b0000;">&quot;'</span><span style="color: Red;">)</span></li>
<li><span style="color: Red;">au BufWritePre *.c,*.h&nbsp; &nbsp; &nbsp; &nbsp; call TimeStamp(</span><span style="color: #8b0000;">'</span><span style="color: Gray;">//</span><span style="color: #8b0000;">'</span><span style="color: Red;">)</span></li>
<li><span style="color: Red;">au BufWritePre *.cpp,*.hpp&nbsp; &nbsp; call TimeStamp(</span><span style="color: #8b0000;">'</span><span style="color: Gray;">//</span><span style="color: #8b0000;">'</span><span style="color: Red;">)</span></li>
<li><span style="color: Red;">au BufWritePre *.cxx,*.hxx&nbsp; &nbsp; call TimeStamp(</span><span style="color: #8b0000;">'</span><span style="color: Gray;">//</span><span style="color: #8b0000;">'</span><span style="color: Red;">)</span></li>
<li><span style="color: Red;">au BufWritePre *.java&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; call TimeStamp(</span><span style="color: #8b0000;">'</span><span style="color: Gray;">//</span><span style="color: #8b0000;">'</span><span style="color: Red;">)</span></li>
<li><span style="color: Red;">au BufWritePre *.rb&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; call TimeStamp(</span><span style="color: #8b0000;">'</span><span style="color: #ffa500;">#')</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">BufWritePre</span><span style="color: Gray;"> *.</span><span style="color: Blue;">py</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: Blue;">call</span><span style="color: Gray;"> </span><span style="color: Blue;">TimeStamp</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">#</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">BufWritePre</span><span style="color: Gray;"> </span><span style="color: Blue;">Makefile</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: Blue;">call</span><span style="color: Gray;"> </span><span style="color: Blue;">TimeStamp</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">#</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">BufWritePre</span><span style="color: Gray;"> *.</span><span style="color: Blue;">php</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; \</span><span style="color: Blue;">call</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">TimeStamp</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;?php //</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">?&gt;</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">BufWritePre</span><span style="color: Gray;"> *.</span><span style="color: Blue;">html</span><span style="color: Gray;">,</span><span style="color: #00008b;">*htm</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; \</span><span style="color: Blue;">call</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">TimeStamp</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;!--</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">--&gt;</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 更改Leader为</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Red;">let g:C_MapLeader = ','</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 设置显示字体</span></li>
<li><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">has</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">win32</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> set guifont=Courier_New:h11:cANSI</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; set guifont=YaHei\ Mono:h11</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">guifontwide</span><span style="color: Gray;">=</span><span style="color: Blue;">Microsoft</span><span style="color: Gray;">\ </span><span style="color: Blue;">Yahei</span><span style="color: Gray;">\ </span><span style="color: Blue;">Monotype</span><span style="color: Gray;">:</span><span style="color: Blue;">h11</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">set guifont=YaHei\ Consolas\ Hybrid:h12</span></li>
<li><span style="color: Red;">endif</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">ab xmain int main(int argc, char *argv[])&lt;cr&gt;{&lt;cr&gt;}&lt;up&gt;&lt;cr&gt;return</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 使用 </span><span style="color: Blue;">murphy</span><span style="color: Gray;"> 调色板</span></li>
<li><span style="color: Blue;">colo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">murphy</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 不要闪烁</span></li>
<li><span style="color: Red;">set novisualbell</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 能够漂亮地显示.</span><span style="color: Blue;">NFO</span><span style="color: Gray;">文件</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">encoding</span><span style="color: Gray;">=</span><span style="color: Blue;">utf</span><span style="color: Gray;">-</span><span style="color: Maroon;">8</span></li>
<li><span style="color: Blue;">function</span><span style="color: Gray;">! </span><span style="color: Blue;">SetFileEncodings</span><span style="color: Olive;">(</span><span style="color: Blue;">encodings</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">let</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">b</span><span style="color: Gray;">:</span><span style="color: Blue;">myfileencodingsbak</span><span style="color: Gray;">=&amp;</span><span style="color: Blue;">fileencodings</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">let</span><span style="color: Gray;"> &amp;</span><span style="color: Blue;">fileencodings</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span><span style="color: Gray;">:</span><span style="color: Blue;">encodings</span></li>
<li><span style="color: Blue;">endfunction</span></li>
<li><span style="color: Blue;">function</span><span style="color: Gray;">! </span><span style="color: Blue;">RestoreFileEncodings</span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">let</span><span style="color: Gray;"> &amp;</span><span style="color: Blue;">fileencodings</span><span style="color: Gray;">=</span><span style="color: Blue;">b</span><span style="color: Gray;">:</span><span style="color: Blue;">myfileencodingsbak</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">unlet</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">b</span><span style="color: Gray;">:</span><span style="color: Blue;">myfileencodingsbak</span></li>
<li><span style="color: Blue;">endfunction</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">BufReadPre</span><span style="color: Gray;"> *.</span><span style="color: Blue;">nfo</span><span style="color: Gray;"> </span><span style="color: Blue;">call</span><span style="color: Gray;"> </span><span style="color: Blue;">SetFileEncodings</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">cp437</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">|</span><span style="color: Blue;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">ambiwidth</span><span style="color: Gray;">=</span><span style="color: Blue;">single</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">BufReadPost</span><span style="color: Gray;"> *.</span><span style="color: Blue;">nfo</span><span style="color: Gray;"> </span><span style="color: Blue;">call</span><span style="color: Gray;"> </span><span style="color: Blue;">RestoreFileEncodings</span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 用空格键来开关折叠</span></li>
<li><span style="color: Red;">set foldenable</span></li>
<li><span style="color: Red;">set foldmethod=manual</span></li>
<li><span style="color: Red;">nnoremap &lt;space&gt; @=((foldclosed(line('.')) &lt; 0) ? 'zc' : 'zo')&lt;CR&gt;</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 隐藏掉菜单和工具条。</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">guioptions</span><span style="color: Gray;">-=</span><span style="color: Blue;">m</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">guioptions</span><span style="color: Gray;">-=</span><span style="color: Blue;">T</span></li>
<li><span style="color: Green;">map</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">silent</span><span style="color: Gray;">&gt; &lt;</span><span style="color: Blue;">F2</span><span style="color: Gray;">&gt; :</span><span style="color: Green;">if</span><span style="color: Gray;"> &amp;</span><span style="color: Blue;">guioptions</span><span style="color: Gray;"> =~</span><span style="color: #ffa500;"># 'T' &lt;Bar&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; \</span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">guioptions</span><span style="color: Gray;">-=</span><span style="color: Blue;">T</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">Bar</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; \</span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">guioptions</span><span style="color: Gray;">-=</span><span style="color: Blue;">m</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">bar</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; \</span><span style="color: Green;">else</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">Bar</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; \</span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">guioptions</span><span style="color: Gray;">+=</span><span style="color: Blue;">T</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">Bar</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; \</span><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">guioptions</span><span style="color: Gray;">+=</span><span style="color: Blue;">m</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">Bar</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; \</span><span style="color: Blue;">endif</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">CR</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 标签页设置</span></li>
<li><span style="color: Red;">if has(</span><span style="color: #8b0000;">&quot;</span><span style="color: Blue;">gui_running</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; set showtabline=2</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; map! tn tabnew</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; nmap &lt;C-c&gt; :tabclose&lt;CR&gt;</span></li>
<li><span style="color: Red;">endif</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 标签页只显示文件名</span></li>
<li><span style="color: Blue;">function</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">ShortTabLabel</span><span style="color: Gray;"> </span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">let</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">bufnrlist</span><span style="color: Gray;"> = </span><span style="color: Blue;">tabpagebuflist</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">v</span><span style="color: Gray;">:</span><span style="color: Blue;">lnum</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">let</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">label</span><span style="color: Gray;"> = </span><span style="color: Blue;">bufname</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">bufnrlist</span><span style="color: Olive;">[</span><span style="color: Blue;">tabpagewinnr</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">v</span><span style="color: Gray;">:</span><span style="color: Blue;">lnum</span><span style="color: Olive;">)</span><span style="color: Gray;"> -</span><span style="color: Maroon;">1</span><span style="color: Olive;">])</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">let</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">filename</span><span style="color: Gray;"> = </span><span style="color: Blue;">fnamemodify</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">label</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">:t</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">filename</span></li>
<li><span style="color: Blue;">endfunction</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">guitablabel</span><span style="color: Gray;">=%</span><span style="color: Olive;">{</span><span style="color: Blue;">ShortTabLabel</span><span style="color: Olive;">()}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 使回格键（backspace）正常处理indent, eol, start等</span></li>
<li><span style="color: Red;">set backspace=eol,start,indent</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 允许</span><span style="color: Blue;">backspace</span><span style="color: Gray;">和光标键跨越行边界</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> set whichwrap+=&lt;,&gt;,h,l</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 可以在</span><span style="color: Blue;">buffer</span><span style="color: Gray;">的任何地方使用鼠标（类似</span><span style="color: Blue;">office</span><span style="color: Gray;">中在工作区双击鼠标定位）</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">mouse</span><span style="color: Gray;">=</span><span style="color: Blue;">a</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">selection</span><span style="color: Gray;">=</span><span style="color: Blue;">exclusive</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">selectmode</span><span style="color: Gray;">=</span><span style="color: Blue;">mouse</span><span style="color: Gray;">,</span><span style="color: Blue;">key</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 启动的时候不显示那个援助索马里儿童的提示</span></li>
<li><span style="color: Red;">set shortmess=atI</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 通过使用: </span><span style="color: Blue;">commands</span><span style="color: Gray;">命令，告诉我们文件的哪一行被改变过</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">report</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 不让vim发出讨厌的滴滴声</span></li>
<li><span style="color: Red;">set noerrorbells</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 在被分割的窗口间显示空白，便于阅读</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">fillchars</span><span style="color: Gray;">=</span><span style="color: Blue;">vert</span><span style="color: Gray;">:\ ,</span><span style="color: Blue;">stl</span><span style="color: Gray;">:\ ,</span><span style="color: Blue;">stlnc</span><span style="color: Gray;">:\</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 搜索和匹配&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: #8b0000;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 高亮显示匹配的括号</span></li>
<li><span style="color: Red;">set showmatch</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 匹配括号高亮的时间（单位是十分之一秒）</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">matchtime</span><span style="color: Gray;">=</span><span style="color: Maroon;">3</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 在搜索的时候忽略大小写</span></li>
<li><span style="color: Red;">set ignorecase</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 不要高亮被搜索的句子（</span><span style="color: Blue;">phrases</span><span style="color: Gray;">）</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> set nohlsearch</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 在搜索时，输入的词句的逐字符高亮（类似</span><span style="color: Blue;">firefox</span><span style="color: Gray;">的搜索）</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">incsearch</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 输入:set list命令是应该显示些啥？</span></li>
<li><span style="color: Red;">set listchars=tab:\|\ ,trail:.,extends:&gt;,precedes:&lt;,eol:$</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Tab</span><span style="color: Gray;">补全时忽略这些忽略这些</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">wildignore</span><span style="color: Gray;">=*.</span><span style="color: Blue;">o</span><span style="color: Gray;">,*.</span><span style="color: Blue;">obj</span><span style="color: Gray;">,*.</span><span style="color: Blue;">bak</span><span style="color: Gray;">,*.</span><span style="color: Blue;">exe</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 光标移动到buffer的顶部和底部时保持3行距离</span></li>
<li><span style="color: Red;">set scrolloff=3</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">搜索出之后高亮关键词</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">hlsearch</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">nmap</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">silent</span><span style="color: Gray;">&gt; &lt;</span><span style="color: Blue;">leader</span><span style="color: Gray;">&gt;&lt;</span><span style="color: Blue;">cr</span><span style="color: Gray;">&gt; :</span><span style="color: Blue;">noh</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">cr</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CTags的设定&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: #8b0000;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: Blue;">set</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tags</span><span style="color: Gray;">=</span><span style="color: Blue;">tags</span><span style="color: Gray;">;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 按照名称排序</span></li>
<li><span style="color: Red;">let Tlist_Sort_Type = </span><span style="color: #8b0000;">&quot;</span><span style="color: Blue;">name</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 在右侧显示窗口</span></li>
<li><span style="color: Blue;">let</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Tlist_Use_Right_Window</span><span style="color: Gray;"> = </span><span style="color: Maroon;">1</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 压缩方式</span></li>
<li><span style="color: Red;">let Tlist_Compart_Format = 1</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 如果只有一个</span><span style="color: Blue;">buffer</span><span style="color: Gray;">，</span><span style="color: Green;">kill</span><span style="color: Gray;">窗口也</span><span style="color: Green;">kill</span><span style="color: Gray;">掉</span><span style="color: Blue;">buffer</span></li>
<li><span style="color: Blue;">let</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Tlist_Exist_OnlyWindow</span><span style="color: Gray;"> = </span><span style="color: Maroon;">1</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 不要关闭其他文件的tags</span></li>
<li><span style="color: Red;">let Tlist_File_Fold_Auto_Close = 0</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> 不要显示折叠树</span></li>
<li><span style="color: Blue;">let</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Tlist_Enable_Fold_Column</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; 快捷键映射&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: #8b0000;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;">设置其他快捷键</span></li>
<li><span style="color: Red;">map &lt;F7&gt; :vsplit&lt;ENTER&gt;:edit `pwd`&lt;ENTER&gt;i</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Blue;">F7</span><span style="color: Gray;"> 打开左侧垂直窗口选择待编辑的文件</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 自动完成的缩进。</span></li>
<li><span style="color: Red;">if has(</span><span style="color: #8b0000;">&quot;</span><span style="color: Blue;">autocmd</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; if has(</span><span style="color: #8b0000;">&quot;</span><span style="color: Blue;">gui</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd WinLeave * set nocursorline nocursorcolumn</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd WinEnter * set cursorline cursorcolumn</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; else</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd WinLeave * set nocursorline nocursorcolumn</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd WinEnter * set cursorline nocursorcolumn</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; endif</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Enable</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;"> </span><span style="color: Blue;">type</span><span style="color: Gray;"> </span><span style="color: Blue;">detection</span><span style="color: Gray;">.</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> load view saved by the mkview command</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; autocmd FileType * loadview</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; autocmd FileType * set noexpandtab</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; autocmd BufWinEnter * loadview</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Use</span><span style="color: Gray;"> </span><span style="color: Blue;">the</span><span style="color: Gray;"> </span><span style="color: Blue;">default</span><span style="color: Gray;"> </span><span style="color: Blue;">filetype</span><span style="color: Gray;"> </span><span style="color: Blue;">settings</span><span style="color: Gray;">, </span><span style="color: Blue;">so</span><span style="color: Gray;"> </span><span style="color: Blue;">that</span><span style="color: Gray;"> </span><span style="color: Blue;">mail</span><span style="color: Gray;"> </span><span style="color: Blue;">gets</span><span style="color: Gray;"> </span><span style="color: #8b0000;">'</span><span style="color: Red;">tw</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> </span><span style="color: Blue;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">to</span><span style="color: Gray;"> </span><span style="color: Maroon;">72</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> 'cindent' is on in C files, etc.</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Also</span><span style="color: Gray;"> </span><span style="color: Blue;">load</span><span style="color: Gray;"> </span><span style="color: Blue;">indent</span><span style="color: Gray;"> </span><span style="color: Blue;">files</span><span style="color: Gray;">, </span><span style="color: Blue;">to</span><span style="color: Gray;"> </span><span style="color: Blue;">automatically</span><span style="color: Gray;"> </span><span style="color: Green;">do</span><span style="color: Gray;"> </span><span style="color: Blue;">language</span><span style="color: Gray;">-</span><span style="color: Blue;">dependent</span><span style="color: Gray;"> </span><span style="color: Blue;">indenting</span><span style="color: Gray;">.</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">filetype</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">plugin</span><span style="color: Gray;"> </span><span style="color: Blue;">indent</span><span style="color: Gray;"> </span><span style="color: Blue;">on</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> In text files, always limit the width of text to 78 characters</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; autocmd FileType text set textwidth=78 expandtab softtabstop=4</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; autocmd FileType sh set shiftwidth=4 expandtab softtabstop=4</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; autocmd FileType php set shiftwidth=4 expandtab softtabstop=4</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; autocmd FileType html set shiftwidth=4 expandtab softtabstop=4</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; autocmd FileType javascript set shiftwidth=4 expandtab softtabstop=4</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; autocmd FileType python set shiftwidth=4 expandtab softtabstop=4</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; autocmd FileType ruby set shiftwidth=4 expandtab softtabstop=4</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; autocmd FileType eruby set shiftwidth=4 expandtab softtabstop=4</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; autocmd FileType sql set shiftwidth=4 expandtab softtabstop=4</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">When</span><span style="color: Gray;"> </span><span style="color: Blue;">editing</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">, </span><span style="color: Blue;">always</span><span style="color: Gray;"> </span><span style="color: Blue;">jump</span><span style="color: Gray;"> </span><span style="color: Blue;">to</span><span style="color: Gray;"> </span><span style="color: Blue;">the</span><span style="color: Gray;"> </span><span style="color: Green;">last</span><span style="color: Gray;"> </span><span style="color: Blue;">known</span><span style="color: Gray;"> </span><span style="color: Blue;">cursor</span><span style="color: Gray;"> </span><span style="color: Blue;">position</span><span style="color: Gray;">.</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> Don't do it when the position is invalid or when inside an event handler</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">happens</span><span style="color: Gray;"> </span><span style="color: Blue;">when</span><span style="color: Gray;"> </span><span style="color: Blue;">dropping</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;"> </span><span style="color: Blue;">on</span><span style="color: Gray;"> </span><span style="color: Blue;">gvim</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">autocmd</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">BufReadPost</span><span style="color: Gray;"> *</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \ </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">line</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">'</span><span style="color: Navy;">\&quot;</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;"> &gt; </span><span style="color: Maroon;">0</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Blue;">line</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">'</span><span style="color: Navy;">\&quot;</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;"> &lt;= </span><span style="color: Blue;">line</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">$</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;"> |</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \&nbsp;&nbsp; </span><span style="color: Blue;">execute</span><span style="color: Gray;">&nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">normal g`</span><span style="color: Navy;">\&quot;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> |</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \ </span><span style="color: Blue;">endif</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">augroup</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">prog</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;"> Remove all cprog autocommands</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd!</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">When</span><span style="color: Gray;"> </span><span style="color: Blue;">starting</span><span style="color: Gray;"> </span><span style="color: Blue;">to</span><span style="color: Gray;"> </span><span style="color: Blue;">edit</span><span style="color: Gray;"> </span><span style="color: Blue;">a</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&nbsp;&nbsp; For C and C++ files set formatting of comments and set C-indenting on.</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;&nbsp; </span><span style="color: Blue;">For</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">other</span><span style="color: Gray;"> </span><span style="color: Blue;">files</span><span style="color: Gray;"> </span><span style="color: Blue;">switch</span><span style="color: Gray;"> </span><span style="color: Blue;">it</span><span style="color: Gray;"> </span><span style="color: Blue;">off</span><span style="color: Gray;">.</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&nbsp;&nbsp; Don't change the order, it's important that the line with * comes first.</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd FileType *&nbsp; &nbsp; &nbsp; set formatoptions=tcoql nocindent comments&amp;</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd BufWinLeave *.sh,*.c,*.cpp,*.perl,*.py mkview</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd BufWinEnter *.sh,*.c,*.cpp,*.perl,*.py silent loadview</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; function! CleverTab()</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if strpart( getline('.'), 0, col('.')-1 ) =~ '^\s*</span><span style="color: #00008b;">$'</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">\&lt;</span><span style="color: Blue;">Tab</span><span style="color: Gray;">&gt;</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; else</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">\&lt;</span><span style="color: Blue;">C</span><span style="color: Gray;">-</span><span style="color: Blue;">N</span><span style="color: Gray;">&gt;</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; endfunction</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd FileType c,cpp&nbsp; noremap! &lt;S-Tab&gt; &lt;C-R&gt;=CleverTab()&lt;CR&gt;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd FileType c,cpp&nbsp; noremap! &lt;C-]&gt; &lt;C-X&gt;&lt;C-]&gt;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd FileType c,cpp&nbsp; noremap! &lt;C-F&gt; &lt;C-X&gt;&lt;C-F&gt;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd FileType c,cpp&nbsp; noremap! &lt;C-D&gt; &lt;C-X&gt;&lt;C-D&gt;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd FileType c,cpp&nbsp; noremap! &lt;C-L&gt; &lt;C-X&gt;&lt;C-L&gt;</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd FileType c,cpp,sh,perl,python set fileformat=unix</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd FileType sh&nbsp; &nbsp;&nbsp; set formatoptions=croql cindent comments=b:#</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; autocmd FileType c,cpp&nbsp; set expandtab shiftwidth=4 softtabstop=4</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; augroup END</span></li>
<li><span style="color: Red;">endif </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">has</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">autocmd</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PYTHON 相关的设置&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: #8b0000;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Python 文件的一般设置，比如不要 tab 等</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">设置自动缩进为</span><span style="color: Maroon;">4</span><span style="color: Gray;">,插入模式里: 插入 &lt;</span><span style="color: Blue;">Tab</span><span style="color: Gray;">&gt; 时使用合适数量的空格。</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;">要插入实际的制表，可用 CTRL-V&lt;Tab&gt;&nbsp; </span></li>
<li><span style="color: Red;">autocmd FileType python setlocal expandtab | setlocal shiftwidth=4 |</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; \setlocal softtabstop=4 | setlocal textwidth=76 |</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; </span><span style="color: Navy;">\t</span><span style="color: Red;">abstop=4</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Blue;">pydiction</span><span style="color: Gray;">插件设置</span><span style="color: Olive;">(</span><span style="color: Gray;">需要安装</span><span style="color: Blue;">pydiction</span><span style="color: Gray;">插件</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;">设置python的字典路径</span></li>
<li><span style="color: Red;">let g:pydiction_location = '~/.vim/skeleton/pydict/complete-dict'</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">设置</span><span style="color: Blue;">pydict</span><span style="color: Gray;">的菜单高度</span></li>
<li><span style="color: Blue;">let</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">g</span><span style="color: Gray;">:</span><span style="color: Blue;">pydiction_menu_height</span><span style="color: Gray;"> = </span><span style="color: Maroon;">10</span><span style="color: Gray;">&nbsp;&nbsp; </span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Python Unittest 的一些设置</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">在编写 </span><span style="color: Blue;">Python</span><span style="color: Gray;"> 代码及 </span><span style="color: Blue;">unittest</span><span style="color: Gray;"> 测试时不需要离开 </span><span style="color: Blue;">vim</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;">键入 :make 或者点击 gvim 工具条上的 make 按钮就自动执行测试用例</span></li>
<li><span style="color: Red;">autocmd FileType python compiler pyunit</span></li>
<li><span style="color: Red;">autocmd FileType python setlocal makeprg=python\ ~/.vim/skeleton/alltests.py</span></li>
<li><span style="color: Red;">autocmd BufNewFile,BufRead test*.py setlocal makeprg=python\ %</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">自动使用新文件模板</span><span style="color: Olive;">(</span><span style="color: Gray;">需要提前准备</span><span style="color: Blue;">skeleton</span><span style="color: Gray;">相关文件</span><span style="color: Olive;">)</span></li>
<li><span style="color: Blue;">autocmd</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">BufNewFile</span><span style="color: Gray;"> </span><span style="color: Blue;">test</span><span style="color: Gray;">*.</span><span style="color: Blue;">py</span><span style="color: Gray;"> </span><span style="color: Maroon;">0</span><span style="color: Blue;">r</span><span style="color: Gray;"> ~/.</span><span style="color: Blue;">vim</span><span style="color: Gray;">/</span><span style="color: Blue;">skeleton</span><span style="color: Gray;">/</span><span style="color: Blue;">test</span><span style="color: Gray;">.</span><span style="color: Blue;">py</span></li>
<li><span style="color: Blue;">autocmd</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">BufNewFile</span><span style="color: Gray;"> </span><span style="color: Blue;">alltests</span><span style="color: Gray;">.</span><span style="color: Blue;">py</span><span style="color: Gray;"> </span><span style="color: Maroon;">0</span><span style="color: Blue;">r</span><span style="color: Gray;"> ~/.</span><span style="color: Blue;">vim</span><span style="color: Gray;">/</span><span style="color: Blue;">skeleton</span><span style="color: Gray;">/</span><span style="color: Blue;">alltests</span><span style="color: Gray;">.</span><span style="color: Blue;">py</span></li>
<li><span style="color: Blue;">autocmd</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">BufNewFile</span><span style="color: Gray;"> </span><span style="color: Blue;">wx</span><span style="color: Gray;">*.</span><span style="color: Blue;">py</span><span style="color: Gray;"> </span><span style="color: Maroon;">0</span><span style="color: Blue;">r</span><span style="color: Gray;"> ~/.</span><span style="color: Blue;">vim</span><span style="color: Gray;">/</span><span style="color: Blue;">skeleton</span><span style="color: Gray;">/</span><span style="color: Blue;">wxskeleton</span><span style="color: Gray;">.</span><span style="color: Blue;">py</span></li>
<li><span style="color: Blue;">autocmd</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">BufNewFile</span><span style="color: Gray;"> *.</span><span style="color: Blue;">py</span><span style="color: Gray;"> </span><span style="color: Maroon;">0</span><span style="color: Blue;">r</span><span style="color: Gray;"> ~/.</span><span style="color: Blue;">vim</span><span style="color: Gray;">/</span><span style="color: Blue;">skeleton</span><span style="color: Gray;">/</span><span style="color: Blue;">skeleton</span><span style="color: Gray;">.</span><span style="color: Blue;">py</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;">设置= + - * 前后自动空格</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">设置,后面自动添加空格</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">FileType</span><span style="color: Gray;"> </span><span style="color: Blue;">python</span><span style="color: Gray;"> </span><span style="color: Blue;">inoremap</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">buffer</span><span style="color: Gray;">&gt;= &lt;</span><span style="color: Blue;">c</span><span style="color: Gray;">-</span><span style="color: Blue;">r</span><span style="color: Gray;">&gt;=</span><span style="color: Blue;">EqualSign</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">=</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">CR</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">FileType</span><span style="color: Gray;"> </span><span style="color: Blue;">python</span><span style="color: Gray;"> </span><span style="color: Blue;">inoremap</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">buffer</span><span style="color: Gray;">&gt;+ &lt;</span><span style="color: Blue;">c</span><span style="color: Gray;">-</span><span style="color: Blue;">r</span><span style="color: Gray;">&gt;=</span><span style="color: Blue;">EqualSign</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">+</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">CR</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">FileType</span><span style="color: Gray;"> </span><span style="color: Blue;">python</span><span style="color: Gray;"> </span><span style="color: Blue;">inoremap</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">buffer</span><span style="color: Gray;">&gt;- &lt;</span><span style="color: Blue;">c</span><span style="color: Gray;">-</span><span style="color: Blue;">r</span><span style="color: Gray;">&gt;=</span><span style="color: Blue;">EqualSign</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">-</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">CR</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">FileType</span><span style="color: Gray;"> </span><span style="color: Blue;">python</span><span style="color: Gray;"> </span><span style="color: Blue;">inoremap</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">buffer</span><span style="color: Gray;">&gt;* &lt;</span><span style="color: Blue;">c</span><span style="color: Gray;">-</span><span style="color: Blue;">r</span><span style="color: Gray;">&gt;=</span><span style="color: Blue;">EqualSign</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">*</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">CR</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">FileType</span><span style="color: Gray;"> </span><span style="color: Blue;">python</span><span style="color: Gray;"> </span><span style="color: Blue;">inoremap</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">buffer</span><span style="color: Gray;">&gt;/ &lt;</span><span style="color: Blue;">c</span><span style="color: Gray;">-</span><span style="color: Blue;">r</span><span style="color: Gray;">&gt;=</span><span style="color: Blue;">EqualSign</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">/</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">CR</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">FileType</span><span style="color: Gray;"> </span><span style="color: Blue;">python</span><span style="color: Gray;"> </span><span style="color: Blue;">inoremap</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">buffer</span><span style="color: Gray;">&gt;&gt; &lt;</span><span style="color: Blue;">c</span><span style="color: Gray;">-</span><span style="color: Blue;">r</span><span style="color: Gray;">&gt;=</span><span style="color: Blue;">EqualSign</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">&gt;</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">CR</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">FileType</span><span style="color: Gray;"> </span><span style="color: Blue;">python</span><span style="color: Gray;"> </span><span style="color: Blue;">inoremap</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">buffer</span><span style="color: Gray;">&gt;&lt; &lt;</span><span style="color: Blue;">c</span><span style="color: Gray;">-</span><span style="color: Blue;">r</span><span style="color: Gray;">&gt;=</span><span style="color: Blue;">EqualSign</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">CR</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">FileType</span><span style="color: Gray;"> </span><span style="color: Blue;">python</span><span style="color: Gray;"> </span><span style="color: Blue;">inoremap</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">buffer</span><span style="color: Gray;">&gt;: &lt;</span><span style="color: Blue;">c</span><span style="color: Gray;">-</span><span style="color: Blue;">r</span><span style="color: Gray;">&gt;=</span><span style="color: Blue;">Swap</span><span style="color: Olive;">()</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">CR</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Blue;">au</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">FileType</span><span style="color: Gray;"> </span><span style="color: Blue;">python</span><span style="color: Gray;"> </span><span style="color: Blue;">inoremap</span><span style="color: Gray;"> &lt;</span><span style="color: Blue;">buffer</span><span style="color: Gray;">&gt;, ,&lt;</span><span style="color: Blue;">space</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 脚本内部用到的自定义函数&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: #8b0000;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">函数后面加上！是防止</span><span style="color: Blue;">vimrc</span><span style="color: Gray;">文件重新载入时报错</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;">实现光标位置自动交换:) --&gt;&nbsp; ):</span></li>
<li><span style="color: Red;">function! Swap()</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; if getline('.')[col('.') - 1] =~ </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">)</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; return </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">\&lt;</span><span style="color: Blue;">ESC</span><span style="color: Gray;">&gt;</span><span style="color: Blue;">la</span><span style="color: Gray;">:</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; else</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; return </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">:</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; endif</span></li>
<li><span style="color: Red;">endf</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Red;">实现+-*/前后自动添加空格，逗号后面自动添加空格，适用python</span></li>
<li><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">支持+= -+ *=</span><span style="color: #8b0000;"> /</span><span style="color: Red;">+格式</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">function! EqualSign(char)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; if a:char&nbsp; =~ '='&nbsp; &amp;&amp; getline('.') =~ &quot;.*(&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; return a:char</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; endif </span></li>
<li><span style="color: Red;">&nbsp; &nbsp; let ex1 = getline('.')[col('.') - 3]</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; let ex2 = getline('.')[col('.') - 2]</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; if ex1 =~ &quot;[-=+&gt;&lt;&gt;\/\*]&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; if ex2 !~ &quot;\s&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return &quot;\&lt;ESC&gt;i&quot;.a:char.&quot;\&lt;SPACE&gt;&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; else</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return &quot;\&lt;ESC&gt;xa&quot;.a:char.&quot;\&lt;SPACE&gt;&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; endif </span></li>
<li><span style="color: Red;">&nbsp; &nbsp; else</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; if ex2 !~ &quot;\s&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return &quot;\&lt;SPACE&gt;&quot;.a:char.&quot;\&lt;SPACE&gt;\&lt;ESC&gt;a&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; else</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return a:char.&quot;\&lt;SPACE&gt;\&lt;ESC&gt;a&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; endif </span></li>
<li><span style="color: Red;">&nbsp; &nbsp; endif</span></li>
<li><span style="color: Red;">endf</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: Red;">&quot;</span></li>
<li><span style="color: Red;">&quot;实现括号的自动配对后防止重复输入），适用python</span></li>
<li><span style="color: Red;">function! ClosePair(char)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; if getline('.')[col('.') - 1] == a:char</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; return &quot;\&lt;Right&gt;&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; else</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; return a:char</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; endif</span></li>
<li><span style="color: Red;">endf</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: Red;">&quot;</span></li>
<li><span style="color: Red;">&quot;SwitchToBuf()实现它在所有标签页的窗口中查找指定的文件名，如果找到这样一个窗口，</span></li>
<li><span style="color: Red;">&quot;就跳到此窗口中；否则，它新建一个标签页来打开vimrc文件</span></li>
<li><span style="color: Red;">&quot;上面自动编辑.vimrc文件用到的函数</span></li>
<li><span style="color: Red;">function! SwitchToBuf(filename)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; let bufwinnr = bufwinnr(a:filename)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; if bufwinnr != -1</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; exec bufwinnr . &quot;wincmd w&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; return</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; else</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &quot; find in each tab</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; tabfirst</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; let tab = 1</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; while tab &lt;= tabpagenr(&quot;$&quot;)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let bufwinnr = bufwinnr(a:filename)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if bufwinnr != -1</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; exec &quot;normal &quot; . tab . &quot;gt&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; exec bufwinnr . &quot;wincmd w&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; endif</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tabnext</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let tab = tab + 1</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; endwhile</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &quot; not exist, new tab</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; exec &quot;tabnew &quot; . a:filename</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; endif</span></li>
<li><span style="color: Red;">endfunction</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</span></li>
<li><span style="color: Red;">&quot;</span></li>
<li><span style="color: Red;">&quot;Last change用到的函数，返回时间，能够自动调整位置</span></li>
<li><span style="color: Red;">function! TimeStamp(...)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; let sbegin = ''</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; let send = ''</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; if a:0 &gt;= 1</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; let sbegin = a:1.'\s*'</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; endif</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; if a:0 &gt;= 2</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; let send = ' '.a:2</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; endif</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; let pattern =&nbsp; 'Last Change: .\+'</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; \. send</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; let pattern = '^\s*' . sbegin . pattern . '\s*$'</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; let now = strftime('%Y-%m-%d %H:%M:%S',</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; \localtime())</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; let row = search(pattern, 'n')</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; if row&nbsp; == 0</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; let now = a:1 .&nbsp; ' Last Change:&nbsp; '</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \. now . send</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; call append(2, now)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; else</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; let curstr = getline(row)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; let col = match( curstr , 'Last')</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; let spacestr = repeat(' ',col - 1)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; let now = a:1 . spacestr . 'Last Change:&nbsp; '</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \. now . send</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; call setline(row, now)</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; endif</span></li>
<li><span style="color: Red;">endfunction</span></li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.handaoliang.com/article_99.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>我们的开源Twitter客户端：TinyTui2</title>
		<link>http://www.handaoliang.com/article_96.html</link>
		<comments>http://www.handaoliang.com/article_96.html#comments</comments>
		<pubDate>Mon, 15 Mar 2010 16:18:00 +0000</pubDate>
		<dc:creator>hdl</dc:creator>
				<category><![CDATA[互联网产品]]></category>

		<guid isPermaLink="false">http://www.handaoliang.com/article_96.html</guid>
		<description><![CDATA[　　TinyTui是由印客网前技术总监老庄（表伟）发起的一个开源项目，后来由于共同的兴趣爱好，我和另外一个朋友felixding也加入到了这个团队当中。项目虽然不大，但却凝聚了我们不少心血，当然，做为后来者加入的我，贡献有限，主要还是前面两位牛人在开发。目前产品正在完善当中，不过已经基本上满足需求。
　　一、关于TinyTui2：
　　TinyTui2是一个基于Twitter API构建的Twitter客户端程序，目标是建立一个高可用性、高智能的代＿理平台，为墙内的互联网用户搭建起通往Twitter的桥梁。为了防止信息过载，我们在这个平台上加入了贝叶斯算法（bayesian，wiki:点这里），试图应用这个算法的自我学习机制，来过滤掉一些无意义的噪音，让用户能更有效Touch到目标信息。
<span class="readmore"><a href="http://www.handaoliang.com/article_96.html" title="我们的开源Twitter客户端：TinyTui2" target="_blank">阅读全文——共1414字</a></span>]]></description>
			<content:encoded><![CDATA[<p>　　TinyTui是由印客网前技术总监<a href="http://www.zhuangbiaowei.com">老庄</a>（表伟）发起的一个开源项目，后来由于共同的兴趣爱好，我和另外一个朋友<a href="http://dingyu.me/blog/">felixding</a>也加入到了这个团队当中。项目虽然不大，但却凝聚了我们不少心血，当然，做为后来者加入的我，贡献有限，主要还是前面两位牛人在开发。目前产品正在完善当中，不过已经基本上满足需求。</p>
<p>　　一、关于TinyTui2：<br />
　　TinyTui2是一个基于Twitter API构建的Twitter客户端程序，目标是建立一个高可用性、高智能的代＿理平台，为墙内的互联网用户搭建起通往Twitter的桥梁。为了防止信息过载，我们在这个平台上加入了贝叶斯算法（bayesian，wiki:<a href="http://zh.wikipedia.org/wiki/%E8%B4%9D%E5%8F%B6%E6%96%AF%E6%A6%82%E7%8E%87">点这里</a>），试图应用这个算法的自我学习机制，来过滤掉一些无意义的噪音，让用户能更有效Touch到目标信息。<br />
　　TinyTui2为开源程序，基于GPL协议，可二次开发，当然，我们也要求二次开发人员须具备能忍受我们在代码间叽叽歪歪的废话而不疯掉的心理承受能力，除此没其它的要求。祝您好运，感谢祖国，感谢父母，感谢国民党，感谢功夫网，感谢你丫挺的。<br />
　　项目主页：<a href="http://code.google.com/p/tinytui2/">http://code.google.com/p/tinytui2/</a></p>
<p>　　二、我们的信念：<br />
　　以佛主如来的名义，Fuck G＿F＿W 一万年。阿门。</p>
<p>　　三、系统安装：<br />
　　1、将程序上传到你的WEB目录下，请保证域名指向的根目录是：apps<br />
　　2、保证：cache目录及其子目录可写。<br />
　　3、保证：libs/b8-0.4.4/etc/config_storage.php文件可写。<br />
　　4、运行：http://youdomain.com/install<br />
　　5、输入你的数据库账号及密码。点击安装。<br />
　　6、安装成功之后，请删除apps目录下的install文件夹。</p>
<p>　　四、目录结构：<br />
　　/----apps - WEB应用程序所在目录<br />
　　  |   |<br />
　　  |   |----install -- 系统安装文件<br />
　　  |   |<br />
　　  |   |----src -- 静态资源文件<br />
 　　 |<br />
　　  |--conf - 网站配置文件所在目录<br />
　　  |<br />
 　　 |--libs - 库文件，包括开源的库，b8和smarty<br />
 　　 |<br />
　　  |--view - 模板所在目录<br />
　　  |<br />
　　  |--lang - 语言包所在目录<br />
　　  |<br />
　　  |--cache - 缓存目录（此目录以及子目录必须设置为可写）<br />
　　  |    |<br />
 　　 |    | ------ smarty_cache -- smarty缓存目录，可在配置文件里设置是否开启。<br />
 　　 |    |<br />
　　  |    | ------ templates_c -- smarty模板编译默认目录。<br />
　　  |<br />
 　　 |--Doc - 文档目录，包括原始的参考资源，以及原始的PSD文件等。</p>
<p>　　五、系统配置：<br />
　　要运行本套系统，需要满足如下条件：<br />
　　　　1、墙外的虚拟主机或VPS一台。<br />
　　　　2、PHP＋MySQL环境，虚拟主机要有可读写权限。<br />
　　　　3、不怕被墙的域名一个[可选]。</p>
<p>　　六、开发人员Twitter及BLOG：<br />
　　@zhuangbiaowei - http://www.zhuangbiaowei.cn<br />
　　@felixding - http://dingyu.me/blog/<br />
　　@handaoliang - http://www.handaoliang.com</p>
<p>　　七、其它：<br />
　　这是PHP版本，后续的Python+Tornado+GAE版本正在开发当中。<br />
　　线上版本：<a href="http://www.ijiyi.com">http://www.ijiyi.com</a>，欢迎关注并使用。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.handaoliang.com/article_96.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>基于JSON格式数据的Ajax分页实现</title>
		<link>http://www.handaoliang.com/article_94.html</link>
		<comments>http://www.handaoliang.com/article_94.html#comments</comments>
		<pubDate>Thu, 11 Mar 2010 06:28:17 +0000</pubDate>
		<dc:creator>hdl</dc:creator>
				<category><![CDATA[杂七杂八]]></category>

		<guid isPermaLink="false">http://www.handaoliang.com/article_94.html</guid>
		<description><![CDATA[很早就想写一篇关于Ajax分页的文章，只是一直偷懒，拖到现在。有这个念头，是因为我看到现在大部分的WEB分页实现，都是在服务器端做，即便是有一些号称用Ajax实现的，也无非是从服务器端传一组HTML到前端来展示。从纯数据传输的角度来讲，这是相当不靠谱的事情，明明可以纯JSON传输的数据，为什么要附带上这么多冗余的HTML呢？因为既然是和页面相关的事情嘛，自然应该都交给前端去处理。
实现起来其实很简单，先实现分页逻辑：


<span class="readmore"><a href="http://www.handaoliang.com/article_94.html" title="基于JSON格式数据的Ajax分页实现" target="_blank">阅读全文——共2798字</a></span>]]></description>
			<content:encoded><![CDATA[<p>很早就想写一篇关于Ajax分页的文章，只是一直偷懒，拖到现在。有这个念头，是因为我看到现在大部分的WEB分页实现，都是在服务器端做，即便是有一些号称用Ajax实现的，也无非是从服务器端传一组HTML到前端来展示。从纯数据传输的角度来讲，这是相当不靠谱的事情，明明可以纯JSON传输的数据，为什么要附带上这么多冗余的HTML呢？因为既然是和页面相关的事情嘛，自然应该都交给前端去处理。</p>
<p>实现起来其实很简单，先实现分页逻辑：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline"><span style="color: #ffa500;">//创建全局对象。</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">handaoliang</span><span style="color: Gray;"> = </span><span style="color: Olive;">{}</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//设定命名空间。</span></li>
<li><span style="color: Blue;">handaoliang</span><span style="color: Gray;">.</span><span style="color: Blue;">func</span><span style="color: Gray;"> = </span><span style="color: Olive;">{}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; * 这里传入的数据里必须包含三个Key键：</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; * allRecords - 所有记录数。</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; * allPageNum - 所有页面数。</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; * currentPage - 当前页。</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; **/</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">handaoliang</span><span style="color: Gray;">.</span><span style="color: Blue;">func</span><span style="color: Gray;">.</span><span style="color: Blue;">AjaxPage</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">my_page_data</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">record_num</span><span style="color: Gray;"> = </span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Blue;">my_page_data</span><span style="color: Gray;">.</span><span style="color: Blue;">allRecords</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">all_page_num</span><span style="color: Gray;"> = </span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Blue;">my_page_data</span><span style="color: Gray;">.</span><span style="color: Blue;">allPageNum</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Gray;"> = </span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Blue;">my_page_data</span><span style="color: Gray;">.</span><span style="color: Blue;">currentPage</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//在多页的时候，一次显示多少页。</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">show_page_num</span><span style="color: Gray;"> = </span><span style="color: Maroon;">8</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * 画分页内容的时候，要求传入两个参数：</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * container - 显示分页内容的容器。</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * call_back_fun_name - 回调函数。</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; **/</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">draw_page</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">container</span><span style="color: Gray;">,</span><span style="color: Blue;">call_back_fun_name</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">loop_num</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">all_page_num</span><span style="color: Gray;"> &gt; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">show_page_num</span><span style="color: Gray;"> ? </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">show_page_num</span><span style="color: Gray;"> : </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">all_page_num</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">page_info</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;p style='clear:both; height:20px; margin-bottom: 8px; font-weight: bold;'&gt;一共有</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&amp;nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">record_num</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&amp;nbsp;条记录，</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">分成&amp;nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">all_page_num</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&amp;nbsp;页显示，</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">当前第&amp;nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&amp;nbsp;页。&lt;/p&gt;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//只有当全部分页大于1的时候，才显示“第一页”。</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">all_page_num</span><span style="color: Gray;"> &gt; </span><span style="color: Maroon;">1</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">page_info</span><span style="color: Gray;"> += </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;a href='javascript:</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">call_back_fun_name</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">(1);' class='page_link'&gt;[第一页]&lt;/a&gt;&amp;nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//当当前页处于第一页的时候，即以第一页为参照页，往后画页面。</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">all_page_num</span><span style="color: Gray;"> &gt; </span><span style="color: Maroon;">1</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Gray;"> == </span><span style="color: Maroon;">1</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span><span style="color: Blue;">i</span><span style="color: Gray;"> &lt;= </span><span style="color: Blue;">loop_num</span><span style="color: Gray;">;</span><span style="color: Blue;">i</span><span style="color: Gray;">++</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Gray;"> == </span><span style="color: Blue;">i</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">page_info</span><span style="color: Gray;"> += </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;a href='javascript:</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">call_back_fun_name</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">i</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">);' class='page_link_num' style='font-weight:bold;'&gt;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">i</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;/a&gt;&amp;nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">page_info</span><span style="color: Gray;"> += </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;a href='javascript:</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">call_back_fun_name</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">i</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">);' class='page_link_num'&gt;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">i</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;/a&gt;&amp;nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">page_info</span><span style="color: Gray;"> += </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;a href='javascript:</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">call_back_fun_name</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">(2);' class='page_link'&gt;[下一页]&lt;/a&gt;&amp;nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//当当前页处于第一页到最后一页的距离中间的时候，此时以当前页为参照，输出前多少页后多少页。</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Gray;"> &gt; </span><span style="color: Maroon;">1</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Gray;"> &lt; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">all_page_num</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">page_info</span><span style="color: Gray;"> += </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;a href='javascript:</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">call_back_fun_name</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Olive;">(</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Olive;">)</span><span style="color: Gray;">-</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">);' class='page_link'&gt;[上一页]&lt;/a&gt;&amp;nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//要先判断是否大于展示的页数。以避免出现负数的页码。</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Gray;"> &gt; </span><span style="color: Olive;">(</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">show_page_num</span><span style="color: Olive;">)</span><span style="color: Gray;">-</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: #8b0000;">/</span><span style="color: Red;">2){</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(var i = (parseInt(this.show_page_num)-1)</span><span style="color: #8b0000;">/</span><span style="color: Maroon;">2</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> &gt;= </span><span style="color: Maroon;">1</span><span style="color: Gray;"> ;</span><span style="color: Blue;">i</span><span style="color: Gray;">--</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">page_info</span><span style="color: Gray;"> += </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;a href='javascript:</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">call_back_fun_name</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Olive;">(</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Olive;">)</span><span style="color: Gray;">-</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">);' class='page_link_num'&gt;</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; + </span><span style="color: Olive;">(</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Olive;">)</span><span style="color: Gray;">-</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;/a&gt;&amp;nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Olive;">{</span><span style="color: #ffa500;">//当当前页小于展示的页数时，不能多减，否则会出现负数页。</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Gray;">-</span><span style="color: Maroon;">1</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> &gt;= </span><span style="color: Maroon;">1</span><span style="color: Gray;"> ;</span><span style="color: Blue;">i</span><span style="color: Gray;">--</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">page_info</span><span style="color: Gray;"> += </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;a href='javascript:</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">call_back_fun_name</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Olive;">(</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Olive;">)</span><span style="color: Gray;">-</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">);' class='page_link_num'&gt;</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + </span><span style="color: Olive;">(</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Olive;">)</span><span style="color: Gray;">-</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;/a&gt;&amp;nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">page_info</span><span style="color: Gray;"> += </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;a href='javascript:</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">call_back_fun_name</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">);' class='page_link_num' style='font-weight:bold;'&gt;</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; + </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;/a&gt;&amp;nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">((</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">all_page_num</span><span style="color: Olive;">)</span><span style="color: Gray;">-</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Olive;">))</span><span style="color: Gray;"> &gt; </span><span style="color: Olive;">(</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">show_page_num</span><span style="color: Olive;">)</span><span style="color: Gray;">-</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: #8b0000;">/</span><span style="color: Red;">2){</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">//</span><span style="color: Red;">此时如果当前页小于展示页的一半，则需要多显示几页。以达到平衡。</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(this.cur_page &lt; (parseInt(this.show_page_num)-1)</span><span style="color: #8b0000;">/</span><span style="color: Maroon;">2</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">added_page</span><span style="color: Gray;"> = </span><span style="color: Olive;">((</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">show_page_num</span><span style="color: Olive;">)</span><span style="color: Gray;">-</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: #8b0000;">/</span><span style="color: Red;">2)-parseInt(this.cur_page)+1;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(var i = 1;i &lt;= ((parseInt(this.show_page_num)-1)</span><span style="color: #8b0000;">/</span><span style="color: Maroon;">2</span><span style="color: Gray;">+</span><span style="color: Blue;">added_page</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span><span style="color: Blue;">i</span><span style="color: Gray;">++)</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">page_info</span><span style="color: Gray;"> += </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;a href='javascript:</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">call_back_fun_name</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Olive;">(</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Olive;">)</span><span style="color: Gray;">+</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">);' class='page_link_num'&gt;</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; + </span><span style="color: Olive;">(</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cur_page</span><span style="color: Olive;">)</span><span style="color: Gray;">+</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;/a&gt;&amp;nbsp;</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span><span style="color: Blue;">i</span><span style="color: Gray;"> &lt;= </span><span style="color: Olive;">(</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">show_page_num</span><span style="color: Olive;">)</span><span style="color: Gray;">-</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: #8b0000;">/</span><span style="color: Red;">2;i++){</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; page_info += &quot;&lt;a href='javascript:&quot; + call_back_fun_name + &quot;(&quot; + (parseInt(this.cur_page)+i) + &quot;);' class='page_link_num'&gt;&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; + (parseInt(this.cur_page)+i) + &quot;&lt;</span><span style="color: #8b0000;">/</span><span style="color: Blue;">a</span><span style="color: Gray;">&gt;&amp;</span><span style="color: Blue;">nbsp</span><span style="color: Gray;">;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }else{</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(var i = 1;i &lt;= parseInt(this.all_page_num)-parseInt(this.cur_page); i++){</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; page_info += </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">a</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">'</span><span style="color: Red;">javascript:&quot; + call_back_fun_name + &quot;(&quot; + (parseInt(this.cur_page)+i) + &quot;);</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> </span><span style="color: Green;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">'</span><span style="color: Red;">page_link_num</span><span style="color: #8b0000;">'</span><span style="color: Gray;">&gt;</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; + (parseInt(this.cur_page)+i) + </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&lt;</span><span style="color: #8b0000;">/</span><span style="color: Red;">a&gt;&amp;nbsp;&quot;;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; page_info += &quot;&lt;a href='javascript:&quot; + call_back_fun_name + &quot;(&quot; + (parseInt(this.cur_page)+1) + &quot;);' class='page_link'&gt;[下一页]&lt;</span><span style="color: #8b0000;">/</span><span style="color: Blue;">a</span><span style="color: Gray;">&gt;&amp;</span><span style="color: Blue;">nbsp</span><span style="color: Gray;">;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //当当前页处于最后一页，并且包含的页面大于1页时，则由后往前画分页。</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(this.all_page_num &gt; 1 &amp;&amp; this.cur_page == this.all_page_num){</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; page_info += </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">a</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">'</span><span style="color: Red;">javascript:&quot; + call_back_fun_name + &quot;(&quot; + (parseInt(this.cur_page)-1) + &quot;);</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> </span><span style="color: Green;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">'</span><span style="color: Red;">page_link</span><span style="color: #8b0000;">'</span><span style="color: Gray;">&gt;</span><span style="color: Olive;">[</span><span style="color: Gray;">上一页</span><span style="color: Olive;">]</span><span style="color: Gray;">&lt;</span><span style="color: #8b0000;">/</span><span style="color: Red;">a&gt;&amp;nbsp;&quot;;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(this.all_page_num &gt; this.show_page_num){</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(var i = this.show_page_num; i &gt;= 1;i--){</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; page_info += &quot;&lt;a href='javascript:&quot; + call_back_fun_name + &quot;(&quot; + (parseInt(this.cur_page)-i) + &quot;);' class='page_link_num'&gt;&quot; </span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; + (parseInt(this.cur_page)-i) + &quot;&lt;</span><span style="color: #8b0000;">/</span><span style="color: Blue;">a</span><span style="color: Gray;">&gt;&amp;</span><span style="color: Blue;">nbsp</span><span style="color: Gray;">;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }else{</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(var i = (this.all_page_num-1); i &gt;= 1;i--){</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; page_info += </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">a</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">'</span><span style="color: Red;">javascript:&quot; + call_back_fun_name + &quot;(&quot; + (parseInt(this.cur_page)-i) + &quot;);</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> </span><span style="color: Green;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">'</span><span style="color: Red;">page_link_num</span><span style="color: #8b0000;">'</span><span style="color: Gray;">&gt;</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; + (parseInt(this.cur_page)-i) + </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&lt;</span><span style="color: #8b0000;">/</span><span style="color: Red;">a&gt;&amp;nbsp;&quot;;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; page_info += &quot;&lt;a href='javascript:&quot; + call_back_fun_name + &quot;(&quot; + parseInt(this.cur_page) + &quot;);' class='page_link_num' style='font-weight:bold;'&gt;&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; + this.cur_page + &quot;&lt;</span><span style="color: #8b0000;">/</span><span style="color: Blue;">a</span><span style="color: Gray;">&gt;&amp;</span><span style="color: Blue;">nbsp</span><span style="color: Gray;">;</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //只有当全部分页大于1的时候，才显示“最尾页”。</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(this.all_page_num &gt; 1){</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; page_info += </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&lt;</span><span style="color: Blue;">a</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">'</span><span style="color: Red;">javascript:&quot; + call_back_fun_name + &quot;(&quot; + this.all_page_num + &quot;);</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> </span><span style="color: Green;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">'</span><span style="color: Red;">page_link</span><span style="color: #8b0000;">'</span><span style="color: Gray;">&gt;</span><span style="color: Olive;">[</span><span style="color: Gray;">最尾页</span><span style="color: Olive;">]</span><span style="color: Gray;">&lt;</span><span style="color: #8b0000;">/</span><span style="color: Red;">a&gt;&quot;;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; container.innerHTML = page_info;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; };</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; }</span></li>
<li><span style="color: Red;">})();</span></li>
</ol>
</div>
<p>假设后端输出的分页信息为：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline"><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">page_info</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">: </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">record_num</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">: </span><span style="color: Maroon;">70</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">current_page</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">: </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">page_num</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">: </span><span style="color: Maroon;">3</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
</ol>
</div>
<p>此时调用分页方法即可以获得分页效果（假设分页容器是：page_box）：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline"><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">doSetPageInfo</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">json_data</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Teal;">document</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementById</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">page_box</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">innerHTML</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">''</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">typeof</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">json_data</span><span style="color: Gray;">.</span><span style="color: Blue;">page_info</span><span style="color: Gray;"> != </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">undefined</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp; </span><span style="color: Blue;">json_data</span><span style="color: Gray;">.</span><span style="color: Blue;">page_info</span><span style="color: Gray;"> != </span><span style="color: Green;">null</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp; </span><span style="color: Blue;">json_data</span><span style="color: Gray;">.</span><span style="color: Blue;">page_info</span><span style="color: Gray;">.</span><span style="color: Blue;">page_num</span><span style="color: Gray;"> != </span><span style="color: Maroon;">0</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">AjaxPageObj</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">handaoliang</span><span style="color: Gray;">.</span><span style="color: Blue;">func</span><span style="color: Gray;">.</span><span style="color: Blue;">AjaxPage</span><span style="color: Olive;">({</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">allRecords</span><span style="color: Gray;">:</span><span style="color: Blue;">json_data</span><span style="color: Gray;">.</span><span style="color: Blue;">page_info</span><span style="color: Gray;">.</span><span style="color: Blue;">record_num</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">allPageNum</span><span style="color: Gray;">:</span><span style="color: Blue;">json_data</span><span style="color: Gray;">.</span><span style="color: Blue;">page_info</span><span style="color: Gray;">.</span><span style="color: Blue;">page_num</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">currentPage</span><span style="color: Gray;">:</span><span style="color: Blue;">json_data</span><span style="color: Gray;">.</span><span style="color: Blue;">page_info</span><span style="color: Gray;">.</span><span style="color: Blue;">current_page</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">AjaxPageObj</span><span style="color: Gray;">.</span><span style="color: Blue;">draw_page</span><span style="color: Olive;">(</span><span style="color: Teal;">document</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementById</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">page_box</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span><span style="color: Blue;">call_back_function</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
</ol>
</div>
<p>至于后台，则只需根据传入的参数来实现分段取数据就可以了。当用户点击一个页面的时候，传数的页数乃是通过变量page来传递，这样就最大限度上的做到了运算和展示分离，同时也做到了客户端和服务器端数据传输量的最小化。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.handaoliang.com/article_94.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>为Repoze.who开发的SSO插件</title>
		<link>http://www.handaoliang.com/article_88.html</link>
		<comments>http://www.handaoliang.com/article_88.html#comments</comments>
		<pubDate>Mon, 08 Mar 2010 07:46:11 +0000</pubDate>
		<dc:creator>hdl</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.handaoliang.com/article_88.html</guid>
		<description><![CDATA[　　在架设ClueMapper的过程当中，由于ClueMapper是基于repoze.who做为登录认证模块的，所以为了适应需求，对repoze.who做了不少的改造，比如之前说过的给repoze.who加上LDAP认证即是改进之一。当然，在后来使用的过当中，并没有完全依赖于LDAP的谁机制，而是使用了SSO认证机制，这是目前很多公司内部普遍使用的认证机制之一。
　　其实这是第一次尝试写Repoze.who的中间件，在写之前仔细看了一遍repoze.who的代码，发现了不少有意思的东西，比如中间件的机制，等回头有时间，可以专门写一篇repoze.who解读。当然这是题外话，现在要说的，是这个SSO插件。
<span class="readmore"><a href="http://www.handaoliang.com/article_88.html" title="为Repoze.who开发的SSO插件" target="_blank">阅读全文——共2187字</a></span>]]></description>
			<content:encoded><![CDATA[<p>　　在架设ClueMapper的过程当中，由于ClueMapper是基于repoze.who做为登录认证模块的，所以为了适应需求，对repoze.who做了不少的改造，比如之前说过的给repoze.who加上LDAP认证即是改进之一。当然，在后来使用的过当中，并没有完全依赖于LDAP的谁机制，而是使用了SSO认证机制，这是目前很多公司内部普遍使用的认证机制之一。</p>
<p>　　其实这是第一次尝试写Repoze.who的中间件，在写之前仔细看了一遍repoze.who的代码，发现了不少有意思的东西，比如中间件的机制，等回头有时间，可以专门写一篇repoze.who解读。当然这是题外话，现在要说的，是这个SSO插件。</p>
<p>　　代码很简单，由于现在我们使用的SSO认证仅仅基于HTTP协议，所以只用urllib2就够了。下面是代码：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline"><span style="color: #ffa500;"># -*- coding: utf-8 -*-</span></li>
<li><span style="color: #8b0000;">&quot;&quot;&quot;</span></li>
<li><span style="color: Red;">SSO Plugins for Repoze.who</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">Author: handaoliang &lt;handaoliang@gmail.com&gt;</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">Basic usage:</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: Red;">&gt;&gt;&gt; from repoze.who.plugins import sso</span></li>
<li><span style="color: Red;">&gt;&gt;&gt; sso_auth = sso.SSOAuthenticatorPlugin(SSO_URI,SSO_ORG_ID,SSO_SUB_ID,REMOTE_ADDR)</span></li>
<li><span style="color: Red;">&gt;&gt;&gt; authenticators = [('sso_auth', sso_auth)]</span></li>
<li><span style="color: Red;">&gt;&gt;&gt; pam = middleware.PluggableAuthenticationMiddleware(</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; authfilter,</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; identifiers,</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; authenticators,</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; challengers,</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; mdproviders,</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; classifier,</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; challenge_decider,</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; )</span></li>
<li><span style="color: Red;">&nbsp;</span></li>
<li><span style="color: #8b0000;">&quot;&quot;&quot;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">from</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">zope</span><span style="color: Gray;">.</span><span style="color: Blue;">interface</span><span style="color: Gray;"> </span><span style="color: Green;">import</span><span style="color: Gray;"> </span><span style="color: Blue;">implements</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">hashlib</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">urllib2</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">from</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">repoze</span><span style="color: Gray;">.</span><span style="color: Blue;">who</span><span style="color: Gray;">.</span><span style="color: Blue;">interfaces</span><span style="color: Gray;"> </span><span style="color: Green;">import</span><span style="color: Gray;"> </span><span style="color: Blue;">IAuthenticator</span><span style="color: Gray;">, </span><span style="color: Blue;">IMetadataProvider</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">class</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">SSOAuthenticatorPlugin</span><span style="color: Olive;">(</span><span style="color: Blue;">object</span><span style="color: Olive;">)</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">implements</span><span style="color: Olive;">(</span><span style="color: Blue;">IAuthenticator</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">def</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">__init__</span><span style="color: Olive;">(</span><span style="color: Blue;">self</span><span style="color: Gray;">, </span><span style="color: Blue;">ssoURI</span><span style="color: Gray;">, </span><span style="color: Blue;">orgID</span><span style="color: Gray;">, </span><span style="color: Blue;">subID</span><span style="color: Gray;">,</span><span style="color: Blue;">ipADDR</span><span style="color: Olive;">)</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">ssoURI</span><span style="color: Gray;"> </span><span style="color: Green;">is</span><span style="color: Gray;"> </span><span style="color: Green;">None</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">raise</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">ValueError</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">The SSO URL must be specified</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">sso_uri</span><span style="color: Gray;"> = </span><span style="color: Blue;">ssoURI</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">org_id</span><span style="color: Gray;"> = </span><span style="color: Blue;">orgID</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">sub_id</span><span style="color: Gray;"> = </span><span style="color: Blue;">subID</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">ip_address</span><span style="color: Gray;"> = </span><span style="color: Blue;">ipADDR</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">def</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">authenticate</span><span style="color: Olive;">(</span><span style="color: Blue;">self</span><span style="color: Gray;">, </span><span style="color: Blue;">environ</span><span style="color: Gray;">, </span><span style="color: Blue;">identity</span><span style="color: Olive;">)</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">try</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">user_name</span><span style="color: Gray;"> = </span><span style="color: Blue;">identity</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">login</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">password</span><span style="color: Gray;"> = </span><span style="color: Blue;">identity</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">password</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">except</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Green;">KeyError</span><span style="color: Gray;">, </span><span style="color: Green;">TypeError</span><span style="color: Gray;">, </span><span style="color: Green;">ValueError</span><span style="color: Olive;">)</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">None</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">auth_password</span><span style="color: Gray;"> = </span><span style="color: Blue;">hashlib</span><span style="color: Gray;">.</span><span style="color: Blue;">md5</span><span style="color: Olive;">(</span><span style="color: Blue;">password</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">hexdigest</span><span style="color: Olive;">()</span><span style="color: Gray;">.</span><span style="color: Blue;">upper</span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">auth_url</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">%s?orgname=%s&amp;sub=%s&amp;user=%s&amp;pwd=%s&amp;ip=%s</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> \</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; % </span><span style="color: Olive;">(</span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">sso_uri</span><span style="color: Gray;">,</span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">org_id</span><span style="color: Gray;">,</span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">sub_id</span><span style="color: Gray;">,</span><span style="color: Blue;">user_name</span><span style="color: Gray;">,</span><span style="color: Blue;">auth_password</span><span style="color: Gray;">,</span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">ip_address</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">#connecting....</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">try</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">request_handle</span><span style="color: Gray;"> = </span><span style="color: Blue;">urllib2</span><span style="color: Gray;">.</span><span style="color: Blue;">Request</span><span style="color: Olive;">(</span><span style="color: Blue;">auth_url</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">contents_handle</span><span style="color: Gray;"> = </span><span style="color: Blue;">urllib2</span><span style="color: Gray;">.</span><span style="color: Blue;">urlopen</span><span style="color: Olive;">(</span><span style="color: Blue;">request_handle</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">return_data</span><span style="color: Gray;"> = </span><span style="color: Blue;">contents_handle</span><span style="color: Gray;">.</span><span style="color: Blue;">read</span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_status</span><span style="color: Gray;"> = </span><span style="color: Blue;">return_data</span><span style="color: Gray;">.</span><span style="color: Blue;">split</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">|</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Teal;">int</span><span style="color: Olive;">(</span><span style="color: Blue;">_status</span><span style="color: Olive;">[</span><span style="color: Maroon;">0</span><span style="color: Olive;">])</span><span style="color: Gray;"> == </span><span style="color: Maroon;">1</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">user_name</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">else</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">None</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">except</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">Exception</span><span style="color: Gray;">,</span><span style="color: Blue;">e</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">#catched this error:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">None</span></li>
<li><span style="color: Gray;">&nbsp;&nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">def</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">__repr__</span><span style="color: Olive;">(</span><span style="color: Blue;">self</span><span style="color: Olive;">)</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;%s %s&gt;</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> % </span><span style="color: Olive;">(</span><span style="color: Blue;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">__class__</span><span style="color: Gray;">.</span><span style="color: Blue;">__name__</span><span style="color: Gray;">, </span><span style="color: Teal;">id</span><span style="color: Olive;">(</span><span style="color: Blue;">self</span><span style="color: Olive;">))</span></li>
</ol>
</div>
<p>使用方法：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline"><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">repoze</span><span style="color: Gray;">.</span><span style="color: Blue;">who</span><span style="color: Gray;">.</span><span style="color: Blue;">plugins</span><span style="color: Gray;"> </span><span style="color: Green;">import</span><span style="color: Gray;"> </span><span style="color: Blue;">sso</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">SSO_URI</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://192.168.0.1:8000/SsoCertify</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">SSO_ORG_ID</span><span style="color: Gray;"> = </span><span style="color: Maroon;">2</span></li>
<li><span style="color: Blue;">SSO_SUB_ID</span><span style="color: Gray;"> = </span><span style="color: Maroon;">992</span></li>
<li><span style="color: Blue;">REMOTE_ADDR</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">127.0.0.1</span><span style="color: #8b0000;">'</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">sso_auth</span><span style="color: Gray;"> = </span><span style="color: Blue;">sso</span><span style="color: Gray;">.</span><span style="color: Blue;">SSOAuthenticatorPlugin</span><span style="color: Olive;">(</span><span style="color: Blue;">SSO_URI</span><span style="color: Gray;">,</span><span style="color: Blue;">SSO_ORG_ID</span><span style="color: Gray;">,</span><span style="color: Blue;">SSO_SUB_ID</span><span style="color: Gray;">,</span><span style="color: Blue;">REMOTE_ADDR</span><span style="color: Olive;">)</span></li>
<li><span style="color: Blue;">authenticators</span><span style="color: Gray;"> = </span><span style="color: Olive;">[(</span><span style="color: #8b0000;">'</span><span style="color: Red;">sso_auth</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Blue;">sso_auth</span><span style="color: Olive;">)]</span></li>
<li><span style="color: Blue;">pam</span><span style="color: Gray;"> = </span><span style="color: Blue;">middleware</span><span style="color: Gray;">.</span><span style="color: Blue;">PluggableAuthenticationMiddleware</span><span style="color: Olive;">(</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">authfilter</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">identifiers</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">authenticators</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">challengers</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">mdproviders</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">classifier</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">challenge_decider</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">)</span></li>
</ol>
</div>
<p>本人较懒，没有做安装包，需要安装包的可以联系我。如果有多人需要，将考虑将它更完善。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.handaoliang.com/article_88.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>取得某个文件夹下所有同类型文件</title>
		<link>http://www.handaoliang.com/article_87.html</link>
		<comments>http://www.handaoliang.com/article_87.html#comments</comments>
		<pubDate>Tue, 23 Feb 2010 10:16:42 +0000</pubDate>
		<dc:creator>hdl</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.handaoliang.com/article_87.html</guid>
		<description><![CDATA[PHP有一个模块叫做mime_magic，用来判断文件的类型非常有效。使用它的mime_content_type函数，结合递归可以很方便的把某一个文件夹下的所同类型文件找出来，比如我因为某种需求要取出某个文件夹下所有的纯文本文件，即是写了一小段代码来递归（代码片段见下文）。
当然，这里并不是展示什么技巧性的东西，只是介绍性的说明一下有这样一个模块。记得很多年前初学写程序时，是根据文件的后缀来判断文件类型的，显然这是一件多么不靠谱的事情，如果现在还有人这么干，我想是要被耻笑的吧？脚本语言讨人喜爱之处就是它总是为我们提供很多很实用的库，这大大降低了我们的开发成本以及提高了开发效率，虽然，也因此增加了选择成本。比如我们刚刚所说的判断文件类型，即有人建议用PECL的FileInfo库来做。
<span class="readmore"><a href="http://www.handaoliang.com/article_87.html" title="取得某个文件夹下所有同类型文件" target="_blank">阅读全文——共543字</a></span>]]></description>
			<content:encoded><![CDATA[<p>PHP有一个模块叫做mime_magic，用来判断文件的类型非常有效。使用它的mime_content_type函数，结合递归可以很方便的把某一个文件夹下的所同类型文件找出来，比如我因为某种需求要取出某个文件夹下所有的纯文本文件，即是写了一小段代码来递归（代码片段见下文）。</p>
<p>当然，这里并不是展示什么技巧性的东西，只是介绍性的说明一下有这样一个模块。记得很多年前初学写程序时，是根据文件的后缀来判断文件类型的，显然这是一件多么不靠谱的事情，如果现在还有人这么干，我想是要被耻笑的吧？脚本语言讨人喜爱之处就是它总是为我们提供很多很实用的库，这大大降低了我们的开发成本以及提高了开发效率，虽然，也因此增加了选择成本。比如我们刚刚所说的判断文件类型，即有人建议用PECL的FileInfo库来做。</p>
<p>需要连带说明一下，在Python中对MIME类型的处理，也有内置的一个模块叫mimetypes，可以很方便的取得一个文件的类型。</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline"><span style="color: Gray;">&gt;&gt;&gt; </span><span style="color: Green;">import</span><span style="color: Gray;"> </span><span style="color: Blue;">mimetypes</span></li>
<li><span style="color: Gray;">&gt;&gt;&gt; </span><span style="color: Blue;">mimetypes</span><span style="color: Gray;">.</span><span style="color: Blue;">guess_type</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">/home/handaoliang/bodybg.jpg</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">image/jpeg</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Green;">None</span><span style="color: Olive;">)</span></li>
</ol>
</div>
<p>PHP取得某文件夹下所有的纯文本文件：</p>
<div class="hl-surround">
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)">
<li class="hl-firstline"><span style="color: Gray;">#!/var/iapps/php/bin/php</span></li>
<li><span style="color: Blue;">&lt;?php</span></li>
<li><span style="color: Green;">class</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">listFiles</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">$fileLists</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">__construct</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">fileLists</span><span style="color: Gray;"> = </span><span style="color: Green;">array</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">excuteList</span><span style="color: Olive;">(</span><span style="color: #00008b;">$baseDirName</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$myDirObj</span><span style="color: Gray;"> = </span><span style="color: Blue;">dir</span><span style="color: Olive;">(</span><span style="color: #00008b;">$baseDirName</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">while</span><span style="color: Olive;">(</span><span style="color: #00008b;">$fileName</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$myDirObj</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">read</span><span style="color: Olive;">()){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//如果获取到的文件属性是目录，并且不是.或者..，则再遍历一次。</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">((</span><span style="color: Blue;">is_dir</span><span style="color: Olive;">(</span><span style="color: #00008b;">$baseDirName</span><span style="color: Gray;">.</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">.</span><span style="color: #00008b;">$fileName</span><span style="color: Olive;">))</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Olive;">(</span><span style="color: #00008b;">$fileName</span><span style="color: Gray;"> != </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">.</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Olive;">(</span><span style="color: #00008b;">$fileName</span><span style="color: Gray;"> != </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">..</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">listFiles</span><span style="color: Gray;">::</span><span style="color: Blue;">excuteList</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: #00008b;">$baseDirName</span><span style="color: Red;">/</span><span style="color: #00008b;">$fileName</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">if</span><span style="color: Olive;">((</span><span style="color: #00008b;">$fileName</span><span style="color: Gray;"> != </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">.</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Olive;">(</span><span style="color: #00008b;">$fileName</span><span style="color: Gray;"> != </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">..</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//判断类型，将文本文件放到数组里。</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/plain</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> == </span><span style="color: Blue;">mime_content_type</span><span style="color: Olive;">(</span><span style="color: #00008b;">$baseDirName</span><span style="color: Gray;">.</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">.</span><span style="color: #00008b;">$fileName</span><span style="color: Olive;">)){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">array_push</span><span style="color: Olive;">(</span><span style="color: #00008b;">$this</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">fileLists</span><span style="color: Gray;">,</span><span style="color: #00008b;">$baseDirName</span><span style="color: Gray;">.</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">.</span><span style="color: #00008b;">$fileName</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//echo mime_content_type($baseDirName.&quot;/&quot;.$fileName).&quot;\n&quot;;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//$this-&gt;getFileType($baseDirName.&quot;/&quot;.$fileName);</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//echo &quot;\n&quot;;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//echo $baseDirName.&quot;/&quot;.$fileName.&quot;\n&quot;;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$myDirObj</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">close</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #00008b;">$fileListObj</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">listFiles</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$fileListObj</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">excuteList</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/home/handaoliang/meeuu.com</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$fileLists</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$fileListObj</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">fileLists</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">print_r</span><span style="color: Olive;">(</span><span style="color: #00008b;">$fileLists</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">?&gt;</span></li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.handaoliang.com/article_87.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
