Yuer

项目中遇到Ext的Grid需要从Server动态获取XML信息, 查看API知需要使用ScriptTagProxy. 但是API只给出Json的解决方案, 对XML没有做描述.
下面给出XML的方案:

js中添加一段代码:

1
2
3
4
5
6
7
8
9
10
11
window.parseXml = function(xml){
    if (window.DOMParser){
        return new DOMParser().parseFromString(xml, 'text/xml');
    }
    if (window.ActiveXObject) {
        var doc = new ActiveXObject('Microsoft.XMLDOM');
        doc.async = 'false';
        doc.loadXML(xml);
        return doc;
    }
};

则服务器返回的信息中格式要处理如下形式:

1
stcCallback1(parseXml('<?xml version="1.0" encoding="UTF-8"?><message success="true"><contact><name><first>Jack</first><last>Slocum</last></name><company>Ext JS</company><email>support@extjs.com</email><state>OH</state><dob>04/15/2007</dob></contact></message>'))

注意和API中Json的区别: 添加了一个parseXml的方法, 同时还多了圆括号内的 '.
注意要把xml中的 ' 和 \ 添加转义符号 \
ext 3.1测试通过

10.04 台湾更新源:

deb http://tw.archive.ubuntu.com/ubuntu/ lucid main universe restricted multiverse
deb http://tw.archive.ubuntu.com/ubuntu/ lucid-updates universe main multiverse restricted
deb http://tw.archive.ubuntu.com/ubuntu/ lucid-proposed universe main multiverse restricted
deb http://tw.archive.ubuntu.com/ubuntu/ lucid-security universe main multiverse restricted
deb http://tw.archive.ubuntu.com/ubuntu/ lucid-backports main multiverse restricted universe
deb-src http://tw.archive.ubuntu.com/ubuntu/ lucid main universe restricted multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu/ lucid-security universe main multiverse restricted
deb-src http://tw.archive.ubuntu.com/ubuntu/ lucid-updates universe main multiverse restricted
deb-src http://tw.archive.ubuntu.com/ubuntu/ lucid-proposed universe main multiverse restricted
deb-src http://tw.archive.ubuntu.com/ubuntu/ lucid-backports universe main multiverse restricted

Ubuntu 10.04更新源 -Lucid Lynx-中国源 提供 ArchLinux,Everest,FreeBSD,Fedora,LFS,Magiclinux,Mandriva,OpenOffice,openSUSE,Puppy,RedHat,Slitaz,Turbolinux,Ubuntu, 中标普华

deb http://mirror.lupaworld.com/Ubuntu/ lucid main universe restricted multiverse
deb-src http://mirror.lupaworld.com/Ubuntu/ lucid main universe restricted multiverse
deb http://mirror.lupaworld.com/Ubuntu/ lucid-security universe main multiverse restricted
deb-src http://mirror.lupaworld.com/Ubuntu/ lucid-security universe main multiverse restricted
deb http://mirror.lupaworld.com/Ubuntu/ lucid-updates universe main multiverse restricted
deb http://mirror.lupaworld.com/Ubuntu/ lucid-proposed universe main multiverse restricted
deb-src http://mirror.lupaworld.com/Ubuntu/ lucid-proposed universe main multiverse restricted
deb http://mirror.lupaworld.com/Ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirror.lupaworld.com/Ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirror.lupaworld.com/Ubuntu/ lucid-updates universe main multiverse restricted

rootguide源,Ubuntu官方上海源,提供 Kernel,Hiweed,ubuntu

deb http://mirror.rootguide.org/Ubuntu/ lucid main universe restricted multiverse
deb-src http://mirror.rootguide.org/Ubuntu/ lucid main universe restricted multiverse
deb http://mirror.rootguide.org/Ubuntu/ lucid-security universe main multiverse restricted
deb-src http://mirror.rootguide.org/Ubuntu/ lucid-security universe main multiverse restricted
deb http://mirror.rootguide.org/Ubuntu/ lucid-updates universe main multiverse restricted
deb http://mirror.rootguide.org/Ubuntu/ lucid-proposed universe main multiverse restricted
deb-src http://mirror.rootguide.org/Ubuntu/ lucid-proposed universe main multiverse restricted
deb http://mirror.rootguide.org/Ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirror.rootguide.org/Ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirror.rootguide.org/Ubuntu/ lucid-updates universe main multiverse restricted

网易开源镜像站,提供 FreeBSD,OpenBSD,archlinux,centos,cygwin,debian,Fedora,gentoo,kernel,openSUSE,slackware,Ubuntu

deb http://mirrors.163.com/Ubuntu/ lucid main universe restricted multiverse
deb-src http://mirrors.163.com/Ubuntu/ lucid main universe restricted multiverse
deb http://mirrors.163.com/Ubuntu/ lucid-security universe main multiverse restricted
deb-src http://mirrors.163.com/Ubuntu/ lucid-security universe main multiverse restricted
deb http://mirrors.163.com/Ubuntu/ lucid-updates universe main multiverse restricted
deb http://mirrors.163.com/Ubuntu/ lucid-proposed universe main multiverse restricted
deb-src http://mirrors.163.com/Ubuntu/ lucid-proposed universe main multiverse restricted
deb http://mirrors.163.com/Ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirrors.163.com/Ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirrors.163.com/Ubuntu/ lucid-updates universe main multiverse restricted

搜狐开源镜像站,提供 CPAN,FreeBSD,NetBSD,OpenBSD,apache,archlinux,centos,cygwin,dag,debian,Fedora,gentoo,kernel,lfs,mysql,nginx,openSUSE,php,rpmfusion,slackware,Ubuntu

deb http://mirrors.shlug.org/Ubuntu/ lucid main universe restricted multiverse
deb-src http://mirrors.shlug.org/Ubuntu/ lucid main universe restricted multiverse
deb http://mirrors.shlug.org/Ubuntu/ lucid-security universe main multiverse restricted
deb-src http://mirrors.shlug.org/Ubuntu/ lucid-security universe main multiverse restricted
deb http://mirrors.shlug.org/Ubuntu/ lucid-updates universe main multiverse restricted
deb http://mirrors.shlug.org/Ubuntu/ lucid-proposed universe main multiverse restricted
deb-src http://mirrors.shlug.org/Ubuntu/ lucid-proposed universe main multiverse restricted
deb http://mirrors.shlug.org/Ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirrors.shlug.org/Ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://mirrors.shlug.org/Ubuntu/ lucid-updates universe main multiverse restricted

网易开源镜像站,提供 FreeBSD,OpenBSD,archlinux,centos,cygwin,debian,Fedora,gentoo,kernel,openSUSE,slackware,Ubuntu

deb http://Ubuntu.cn99.com/ubuntu/ lucid main universe restricted multiverse
deb-src http://Ubuntu.cn99.com/ubuntu/ lucid main universe restricted multiverse
deb http://Ubuntu.cn99.com/ubuntu/ lucid-security universe main multiverse restricted
deb-src http://Ubuntu.cn99.com/ubuntu/ lucid-security universe main multiverse restricted
deb http://Ubuntu.cn99.com/ubuntu/ lucid-updates universe main multiverse restricted
deb http://Ubuntu.cn99.com/ubuntu/ lucid-proposed universe main multiverse restricted
deb-src http://Ubuntu.cn99.com/ubuntu/ lucid-proposed universe main multiverse restricted
deb http://Ubuntu.cn99.com/ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://Ubuntu.cn99.com/ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://Ubuntu.cn99.com/ubuntu/ lucid-updates universe main multiverse restricted

骨头源,提供Ubuntu,deepin

deb http://Ubuntu.srt.cn/ubuntu/ lucid main universe restricted multiverse
deb-src http://Ubuntu.srt.cn/ubuntu/ lucid main universe restricted multiverse
deb http://Ubuntu.srt.cn/ubuntu/ lucid-security universe main multiverse restricted
deb-src http://Ubuntu.srt.cn/ubuntu/ lucid-security universe main multiverse restricted
deb http://Ubuntu.srt.cn/ubuntu/ lucid-updates universe main multiverse restricted
deb http://Ubuntu.srt.cn/ubuntu/ lucid-proposed universe main multiverse restricted
deb-src http://Ubuntu.srt.cn/ubuntu/ lucid-proposed universe main multiverse restricted
deb http://Ubuntu.srt.cn/ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://Ubuntu.srt.cn/ubuntu/ lucid-backports universe main multiverse restricted
deb-src http://Ubuntu.srt.cn/ubuntu/ lucid-updates universe main multiverse restricted

中国科技大学源

deb http://debian.ustc.edu.cn/ubuntu/ lucid main restricted
deb-src http://debian.ustc.edu.cn/ubuntu/ lucid main restricted
deb http://debian.ustc.edu.cn/ubuntu/ lucid-updates main restricted
deb-src http://debian.ustc.edu.cn/ubuntu/ lucid-updates main restricted
deb http://debian.ustc.edu.cn/ubuntu/ lucid universe
deb-src http://debian.ustc.edu.cn/ubuntu/ lucid universe
deb http://debian.ustc.edu.cn/ubuntu/ lucid-updates universe
deb-src http://debian.ustc.edu.cn/ubuntu/ lucid-updates universe
deb http://debian.ustc.edu.cn/ubuntu/ lucid multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ lucid multiverse
deb http://debian.ustc.edu.cn/ubuntu/ lucid-updates multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ lucid-updates multiverse
deb http://debian.ustc.edu.cn/ubuntu lucid-security main restricted
deb-src http://debian.ustc.edu.cn/ubuntu lucid-security main restricted
deb http://debian.ustc.edu.cn/ubuntu lucid-security universe
deb-src http://debian.ustc.edu.cn/ubuntu lucid-security universe
deb http://debian.ustc.edu.cn/ubuntu lucid-security multiverse
deb-src http://debian.ustc.edu.cn/ubuntu lucid-security multiverse

相关报导

谷歌声明原文

更新:谷歌考虑全面退出中国市场

谷歌遭遇网络攻击后引入新安全措施

中文网读者:谷歌不要走

背景

李开复辞职彰显谷歌中国征途坎坷

谷歌调查中国大陆服务中断事件

谷歌中国因色情内容被警告

谷歌希望五年内领军中国互联网市场(2008年4月15日)

评论

google-logo

虽然从昨天开始谷歌要退出中国的消息就传得满天飞,就算真的走,也需要一个过程,谷歌的日常工作也要继续。这不,G.cn“谷歌”中国网站就换上了一个新logo,上面就是中国的四大发明,点击它会转向搜索“中国四大发明”。第一条就是百度百科---(里面有一句话: 中国人都知四大发明,因此而津津乐道。但是,千百年已经过去,国人是否还有其他什么值得夸耀的大发明呢?与此同时,在世界各地,改变人类历史的大发明却层出不穷,不计其数)

baidubaike

网传g.cn及谷歌中国办事处(分公司)即将撤出中国。而现在换成四大发明的logo,很是值得玩味,再一次佩服google的工程师们。中国将因为信息过分严格审核导致“闭关锁国”历史悲剧再次重演。我认为在扫黄打非视角上,是可以的,但是在审核政治相关的信息时,**党有些歇斯底里了。

我想到一个笑话:

网易、腾讯、百度、谷歌等几个趴在一起吃屎。某天,一直捂着鼻子吃的谷歌终于爆发 :臭死了,老子不吃了。网易的眉头皱了一下,腾讯好像听到了,好像没听到。百度听 到了 ,偷偷朝谷歌那边挪了一下,把谷歌那份屎扒到自己面前继续吃。

谷歌带走的不是技术,而是人文精神,是追求自由、不甘堕落的人生态度。而这些恰是某些国家机器所不能容忍的。

medium

这篇文章是《写给准备购买BlackBerry的朋友》系列文章第二篇的第二部分,介绍黑莓的一些进阶功能特点。

为什么我要购买BlackBerry?
黑莓是一个无线手持设备,也是一个智能手机

电池续航能力:BBer普遍认为,BB的续航能力是很高的,除非你买到了劣质机器或者劣质电池。而且BB的电量显示是非常正常、真实的,不会出现一些手机及数码产品那种前几格电量显示快速消耗,而最后一格却坚挺很久的现象。8800是BB中电池容量最大的,达到了1400mAhr,但并不意味着8800待机时间最久,因为其配置和功能上导致耗电要比低端机型多一些。网络应用、多媒体播放、蓝牙和GPS等都是高耗电的,但我自己的实际使用情况是:多媒体播放最耗电,即使你使用耳机来听音乐。不过如果你不满意BB电池的能力,你也可以花点钱买一个国产的大容量电池,这种电池在网上随处可见,价格便宜,但请自理防爆措施。

开关机、休眠与重启:和普通手机不同的是,一旦你放入了电池BB就会马上开启。就算你没有插入SIM卡,也可以把它作为一个PDA来使用。同时开关机对于BB来说只是关掉无线信号和稍微节约电而已,因为关机并不会结束当前的所有运行的程序等,下一次开机时将恢复关机时的状态。另外对于低端机型,开机时间将会久一点,所以不建议关机。如果配合休眠皮套,那么可以很好的节省BB的电量,同时配置文件(就是其他手机的情景模式)在休眠皮套中的设置是单独的。就算你没有休眠皮套,也可以使用休眠键(仅适用于某些机型)一键使你的BB进入休眠状态,只有当电话呼入时它才会恢复待机状态。当手机发生死机或者其他需要重启的时候,你可以按住Alt+Shift+Del键(仅适用于QWERTY键盘)或者直接取下电池来重启,重启后的开机时间比普通开机时间要长一些,重启后BB会自检并“刷新”一次机器设置。对于通过SB激活自带浏览器上网的低端机型用户,重启后需要重新激活。但不必担心,黑莓的另一骄傲之处便是其操作系统十分稳定,很少会死机,这一点比其他操作系统要好很多,除非你遇到了质量有问题的机器。

无线与蓝牙:BlackBerry像其他智能手机一样,可以关闭无线信号,切断BB与外界的联系,但不能单独关闭GSM或者GPRS网络。同时当电量不足时,BB也会自动关闭无线信号甚至自动关机(这个功能的工作情况视ROM而定)。BB的蓝牙比较特殊,一部分的蓝牙耳机等蓝牙设备并不能在黑莓上使用。黑莓可以传输通讯录和SD卡上的任意文件,没有对JAR、MP3文件的版权限制,但传输前需要与对方进行配对。通过蓝牙接收时需要提前进入目标文件夹选择“通过蓝牙接收”才能正常接收文件。

备份/恢复和同步:通过BlackBerry Desktop桌面管理器,你可以非常方便的备份或恢复BB的所有数据,其中包括手机的设置、软件数据以及通讯录和消息等。同时你可以将BB中的通讯录、任务、日历以及记事本数据完整的同步到Outlook中,同时一些第三方BB软件可能也要用到同步功能,比如某些Office软件,这些同步可以在桌面管理器的“同步加载项”里管理。

其他:铃音很大声,但穿透力不高;可以设置自动开关机,这虽然是很简单的功能,但大多数手机都不具备;屏幕相当出色,这里不单是指色彩,更多是指在强烈光照下是否能看清屏幕的问题,所有的BB机型都是不用担心这个问题的,因为旧机性的屏幕采用半反射屏幕,即使不开启背光也可以借助反射光线看清屏幕,而新机型则是感光屏幕,可以自动根据外界光线情况实时调整背光亮度,键盘背光也是如此。另外开机键也是背光调节键,可以通过这个键快速关闭屏幕(仅适用于部分机型)。

相信通过第2阶段的文章,你已经对BlackBerry在功能和概念上有一个大概的了解。

下篇文章将介绍黑莓的核心功能:BlackBerry Pushmail,告诉你真正Pushmail的强大之处。

medium

本文是《写给准备购买BlackBerry的朋友》系列文章第二篇的第一部分,讲述关于黑莓是否符合你需求的问题,不过由于大家的要求都不尽相同,我就着重介绍一些BB在设计上和功能上最被用户称赞的优点和特点,第一部分包含最基本的功能特点叙述,第二部分将会包含高级功能与特点叙述。

为什么我要购买BlackBerry?
黑莓是一个无线手持设备,也是一个智能手机

根据RIM的官方叙述,BlackBerry是一个无线手持设备Wireless Handheld(正式说法),也是一个智能手机Smart Phone(半正式说法)。相信你也知道,黑莓最初是作为一个邮件收发终端诞生的,所以无线手持设备这个说法是相对于黑莓特有的BES/BIS服务的,也就是一般说的Pushmail,关于Pushmail的话题将在以后专门提到。其实就算在BBer当中也有关于BlackBerry是否是Smart phone的争论,根据上一篇文章我提到的关于智能手机的标准,这里首先要说的是BlackBerry的操作系统:BlackBerry使用的是RIM自行开发的基于JAVA平台的操作系统,这一系统是封闭性的,只有BlackBerry使用这个操作系统。其次是软件问题:因为基于JAVA,原则上任何JAVA软件都可以在 BlackBerry上运行,但由于上面提到的BlackBerry操作系统的封闭性及键位等原因,能真正完美的运行在BB上的JAVA软件不是特别多。

在中国,由于只有水货的存在导致BB俨然成为了一个性价比异常之高的智能手机,甚至你可以花几百块就享受到BlackBerry带给你的“智能”生活,当然价钱低也会带来一些痛苦,比如内存紧缺。

有人经常问我黑莓有什么好的,要想回答其实真有点难度,不过我想人性化是黑莓最大的优点,关于人性化的内容请见这篇文章

BlackBerry的最大特点除了Pushmail,就是滚轮/轨迹球+全键盘的布局十分适合快速浏览信息,这些元素虽然不是BlackBerry独有的,但却只有RIM将它做成功了。说简单一点,如果你适应了这样的操作方式,你很可能无法接受一般手机的四向按键或者摇杆。另外,需要说明的是,新机型里已经不再使用滚轮。

消息:BlackBerry在消息收发上的功能也是重点,消息的储存是根据内存剩余容量决定的。对话式的短信显示方式十分方便,可以任意标记消息为未读、已读或者保存消息。只有查看和编辑短信会占据整个屏幕,发送消息则是在后台进行的,删除短信也只是一个弹出对话框。值得一提的是发送报告(又叫短信报告,传送回报等),一般的手机是单独一条信息显示这个报告,但BB仅仅是在已到达消息前面标记一个特殊的图标,十分直观且不占内存。群发短信功能异常强大,同样也可以在后台进行。唯一一个比较麻烦的是对于接收的消息你只能查看接收时的时间而看不到发送者实际发送的时间。

电话:只要你买到的黑莓不是次品或者翻新N次的机器,那么它绝对是电话方面的王者。黑莓信号很强,通话效果也极佳,更不用说“可以直接在KTV里打电话”的电话音量了。由于BB的商务性能,经过一些设置后,对于经常拨打分机、IP电话和国际电话的朋友来说是相当方便的。如果你不能双手操作机器或者通讯录里联系人太多无法快速找到想要的号码,那么支持英文、普通话与粤语的声控拨号(可能会因为版本不同而所包含的语言不同)绝对是最佳选择,BlackBerry的声控拨号不需要提前录制,只需用最标准的普通话读出你要拨打的号码或联系人名称即可,虽然它内置的普通话读音十分不标准。

上网:你只需一张开通了GPRS数据服务的SIM卡,就可以通过BB享受网络生活。但是这里有一个问题是关于黑莓自带浏览器的:新的机型(即 OS 4.2 以后)是不需要经过任何设置就可以直接使用自带浏览器上网的,而旧的机型则需要通过Service Book服务预订激活来使用自带浏览器,这个激活程序是免费的。不激活只是不能使用自带浏览器而已,只要根据你使用的网络服务(cmwap或cmnet)填写正确的APN,是完全可以使用第三方浏览器和软件连接网络的。但彩信功能需要自带浏览器的支持,所以激活自带浏览器也是购买旧低端机型的BBer必须学会的。关于Service Book的激活我会在以后专门介绍。

blackberry

随着黑莓BlackBerry无线手持设备正式进入中国大陆,再加上近年来BBer的增多,更多的人开始关注这个来自加拿大的手机品牌。有很多对BB感兴趣的朋友都在Maxpda、网上和现实生活中询问我关于购买BB的问题,比如BB的功能、价格、特点等等。我都尽最大努力根据使用BB几个月以来的经验回答了他们,同时我很希望把这些经验写出来与大家分享,造福准备跨入BBer族的朋友们。

那么从今天开始,Dan's Wrokspace 就会陆续、不定期的推出这一系列《写给准备购买BlackBerry的朋友》文章,希望可以帮助到准备入手BB或者在考虑BB的朋友。

今天是本系列文章的第一篇,我想说的是一个关于消费的最基本问题:为何消费

我需要智能手机吗?
智能手机的可升级性与可扩展性

很多不了解智能手机的人可能会以为有触摸屏或者全键盘或者可以上网就是智能手机,同时也认为智能手机就跟电脑一样,这些认识都是错误的,因为很多普通消费级手机都能实现上述功能,但它们却都不是智能机。网络上对这个标准是各执一词,但普遍认为智能手机至少应该具有:一个可升级的操作系统;可在一定程度上任意安装软件扩展功能。

需要智能手机的用户无非是看中上网、软件及升级等普通手机无法完美满足的功能。还有一个很重要的因素是多任务,这是普通手机无法实现的。大多数智能手机都能很好的完成多任务运行的要求,运行的实际情况取决于手机的硬件配置与操作系统的执行效率,比如BlackBerry开机后后台会运行至少4个系统进程,同时你还可以边通过浏览器上网,开启IM聊天以及收听音乐,,但是这样会加重手机CPU负荷并且导致电量急速消耗。当然Palm OS和iPhone都是单任务的系统但它们仍然是智能手机,所以多任务并不是决定性因素。

大部分的智能手机都自称为玩家。确实,使用智能手机很像是在玩电脑一样玩手机,所以如果你准备好了想把玩下手机,那么欢迎你加入手机玩家行列,但前提是你要有较丰富的电脑知识、较强的学习能力和坚韧不拔的折腾精神。

但是,如果你平时没有时间去折腾,没有时间去关注最新的适合你手机的软件,或者完全对安装软件没有任何兴趣;你也不怎么上网,特别是不上WWW网站也不使用需要网络连接的软件;如果你平时只使用手机的电话、短信、拍照、音乐、游戏等功能,那基本上任何一部主流手机都能很完美的满足你,再坚持购买智能手机只会又费马达又费电。

本文可以算是一个热身文章,也是进入主题前的准备文章。下一篇文章将带来对BB一个大概的介绍,给你一个购买BB的理由:为什么我要购买BlackBerry?

首先要说的是,任何的破解都是非法且不道德的,如果你有足够的实力,希望你购买正版以支持作者。

黑莓的软件其实还是非常多的,只不过大多数都想赚商务人士的钱所以收费的居多,如果想要使用一些收费软件的话我们就只有一个办法——“时间大法”

它通过修改黑莓设备时间或者电脑时间的方法来达到在一段时间内免费使用收费软件的目的,只适用于以使用时间作为免费试用限制的收费软件。比如上次介绍的很棒的音乐播放器FlipSide,办公软件eFile等,它们都有共同的特点,便是都为收费软件,并且都提供一个N天试用版。那么,如果以后遇到其他也有这样特点的软件的话,我们就可以尝试“时间大法”来破解它,让它可以一直为我们服务。

在介绍“时间大法”前,有几点请注意:

  • 修改黑莓的系统时间可能会造成某些证书过期、日程任务提醒等;
  • 修改电脑系统时间可能会造成杀毒软件无法正常工作、证书过期等。

那么我们现在开始吧!这里我们以FlipSide为例,这是一款很强大的音乐播放器,提供3天的试用版本*,过期后便无法使用。使用“时间大法”的步骤如下:

  1. 在安装前,将黑莓的系统时间往以后调。调后的时间要大于3天,但不宜过长,1、2年为宜。在这里假设我们往后调300天。
  2. 通过Desktop Manager将其安装到黑莓上,安装后运行一下FlipSide。然后把时间调回正常时间。
  3. 再次运行FlipSide,运行成功后再次把时间往后调,这一步是测试该软件是否适用“时间大法”,因此只需超过试用期就行,这里假设往后调5天。
  4. 调整时间后再运行一次FlipSide,如果成功,那证明这款软件是能够使用“时间大法”破解的。
  5. 最后我们把时间再次调回正常时间,慢慢享受300天的免费使用吧。300天后再重复一次以上步骤就可以无限期使用了 ;)

如果需要破解类似eFile这样需要同时安装电脑端和BB端的软件,那么在第一步时将电脑的系统时间一起往后调就OK了,注意两者的时间必须一致。当然在修改电脑时间之前,建议你关闭杀毒软件、防火墙、浏览器等一切会受时间改变影响的程序,同时关闭一些监控保护系统时间的防护类软件。

最近有牛人试出了FlipSide的注册码,有兴趣的朋友请见此贴

今天将这篇几乎是 Dan's Workspace 最受欢迎的《黑莓 BlackBerry 实用快捷键大全》做一个精编版本,只收录最基本最常用也是最实用的一些快捷键,让新手能以最快的速度接触到黑莓快捷键操作的魅力。快捷键的发掘是一个非常让人心醉的过程,要查看最实用最完整的快捷键目录,请查看这篇完整版的文章:黑莓 BlackBerry 实用快捷键大全

说明:本文适用于大部分 QWERTY 全键盘机型的黑莓设备。为了能更好更完整的体验快捷键功能,请将显示语言设置为英语,并在电话选项中关闭从主页拨号功能。

重启:Alt + 右 Caps + Del

切换程序:Alt + Esc

切换输入法:Alt + Enter(前提是在选项-语言中开启“使用输入法快捷键”)

输入法选字:Alt + 数字键

输入法翻页:Alt + 轨迹球/滚轮

选择文本:Caps + 轨迹球/滚轮

复制文本:Alt + 轨迹球/滚轮

剪切文本:Caps + Del

粘贴文本:Caps + 轨迹球/滚轮 Click

Num Lock:Alt + 左 Caps

Caps Lock:Alt + 右 Caps

移动到顶部:T 键

移动到底部:B 键

多选项目:Caps + 轨迹球/滚轮

滚屏(项目列表):Alt + 轨迹球/滚轮

下一首:N 键/音量 + 键

上一首:P 键/音量 – 键

向下滚屏:空格键

向上滚屏:左 Caps + 空格键

程序启动快捷键:请自己在 Home Screen 尝试键盘上的每一个字母 :D

虽然这里面提到的内容BBer都早已熟知,但是如果以后有人问你黑莓有什么好的,你就可以让他看看这篇文章。以下,精简转载:

⑴来短信时拿出皮套自动阅读短信的功能众所周知,可也许你不知道这个功能在来短信后大约30秒时间后会自动取消,也就是说如果你没有听到短信铃声,过了段时间拿出BB做别的事情时不会被自动弹出的短信打扰到。

⑵所有的情景模式中铃声的设定都分为休眠套中状态和套外状态,你可以在去上班的路上放在皮套里设成响铃,在办公室拿出来设成静音或震动,这样都不用去调情景了。

⑶在播放视屏文件时,键盘灯会自动熄灭,屏幕背光会自动最大化,又是一个令人感动的设定。

⑷短信采用类似聊天的界面,方便查看之前的短信记录。

⑸删除时的确认提醒的默认选项会根据删除数量的不同而不同。比如在删除一条短信时默认选项是“删除”,而删除一条以上是的默认选项是"取消",也是很人性的设定。

⑹打电话时的听筒、外放以及耳机的音量设置是单独保存的。有些手机这个设置是共享的,导致听筒开到最大也听不清,插上耳机就震耳欲聋…

⑺使用耳机听音乐看视频时,线控上的按键变为了开始和暂停的快捷键。而在接电话时变为静音键(你可以听到对方说话而对方不会听见你说话)。不知道别的手机有没有这个功能,但至少我所知道的里面是没有的。

⑻屏幕亮度10级手动,再加上自动感光功能,无乱你是在阳光直射下看地图导航还是躲在被子里看小说,你的眼睛都会爱上如此体贴的屏幕。

⑼无论是闹铃设置还是自动开关机的设置都分为工作日和休息日,如果你想在周末睡个懒觉的话,贴心的BB不会吵醒你的。

⑽ALT+取消键,类似电脑上的ALT+Tab键切换窗口,如果你觉得这也麻烦,那也没关系,按住ALT不放,用滚轮选择需要调出的后台程序,再松开ALT就行。

⑾设锁机密码后,如果错误输入n次密码则立刻wipe机器,而n的次数由你自己决定。为此我更愿意将小秘密告诉BB,比起电脑来BB口风更严。

⑿备份数据时,通讯薄,短信记录,约会提醒等等是自选并可分开保存的,更具针对性,节约备份时间。

⒀输入邮件地址时,×××@×××.×××中的“@”“.”可用空格键代替,又是个针对懒人的实用设计。

⒁谁说黑莓的通话记录界面太简单,在短信界面按ALT+P,已经够详细的了吧!

顺便一提的是今天早上在上班路上在黑莓的Password Keeper里发现了一个小功能是"Clear Clipboard",这个功能只在这里面有。有什么用呢?或者说我是怎么发现的呢?当时我是将记在记事本里的FF Remote Key转移到Password Keeper里,这个Remote Key是通过复制粘贴上去的,所以,你知道这个功能的用处了吧,体贴无处不在 :)

本配置文件根据"史上最强的vimrc文件"改编,并参考加入大量vim官方中文文档资料,希望给vim初学者带来一些帮助

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" User configuration
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" turn off nice effect on status bar title

let performance_mode=0
let use_plugins_i_donot_use=0

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => General
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"我们对Vim的描述都假设它是在增强模式下, 所以并不能完全与Vi兼容
"所以首先确保关闭了 "compatible" 选项
set nocompatible

"定义当前的操作系统, 使用不同的系统时, 需要手动修改返回值
"返回值可以为 "win32" / "unix"/ "mac"
function! MySys()
    return "win32"
endfunction

"在Vim中执行一些过滤操作需要知道一些shell的有关情况
"如果在使用过滤程序时遇到问题, 可以考虑检查下面一些选项的设置:
"   "shell"         指定Vim用于运行过滤程序的shell
"   "shellcmdflag"  该shell的参数
"   "shellquote"    用于分隔shell与过滤程序时成对包围起过滤程序
"                   的字符
"   "shellxquote"   用于分隔shell与过滤程序和重定向符号时成对包
"                   围起过滤程序和重定向符号的字符
"   "shelltype"     shell的类型(只对Amiga有用
"   "shellslash"    在命令中使用反斜杠(只对MS-Windows)这样的
"                   系统有用
"   "shellredir"    用于将命令输出重定向到文件的字符串
"
"在Unix上使用过滤程序很少会碰到问题, 因为有两种shell: 'sh'派和
"'csh'派. Vim会检查 "shell" 选项看是否包含了'csh'并自动设置相关的
"选项.
"但在windows上,有很多不同的shell,所以你要手工调整这些选项来让过滤
"功能正常动作.请查看上面这些相关选项的帮助以了解更多信息
if MySys() == "unix" || MySys() == "mac"
    "在Unix和类Unix操作系统中使用 "bash" 作为 "shell"
    set shell=bash
else
    "如果是在windows下使用cygwin, 则修改为cynwin的路径
    "set shell=E:cygwininsh
endif

"设置冒号命令和搜索命令的命令历史列表的长度
"历史记录的基本思想是可以用上下箭头键来找回用过的命令.
"
"实际上有四个历史记录, 这里将要提到的是冒号命令历史记录和 "/"
"及 "?" 的搜索命令历史记录, "/" 和 "?"都是搜索命令,所以它们共享
"同一个历史记录, 另外的两类历史记录分别是关于表达式和input()
"函数的输入内容的
"
"假设你用过一次 ":set" 命令, 接着用过10次其他的冒号命令之后又
"想要重复这个 ":set" 命令,你可以按下 ':' 然后按10次上箭头键<Up>,
"更快的办法是:
"   ":set<Up>"
"Vim会回到上一次你以'se'开头的命令去,这样你离':set'命令就更
"近了一些,至少一不用按10次上箭头<Up>了(除非这中间的10个冒号
"也都是':set'命令).
"
"上箭头键<Up>会根据目前的键入的命令部分去跟历史记录进行比较,
"只有符合的才会被列出来.如果没有找到,你还可以用下箭头<Down>
"回到刚才输入的部分命令进行修改,或者用Ctrl-U命令全部删除后
"重来.
"
"要查看所有的历史记录,用命令:
"   ":history"
"列出的是冒号的历史记录,要查看搜索命令的历史记录,用:
"   ":history /"
"
"Ctrl-P效果如同<Up>,唯一的不同是它不会根据你已经键入的部分区
"遍历历史,类似地,<Down>对应物事Ctrl-N"和下箭头键.Ctrl-P代表
"previous,Ctrl-N代表Next
set history=400

"这段命令开启了Vim的三种职能:
"
"1. 自动识别文件类型
"你开始编辑一个文件时,Vim就会自动识别它是何种类型的文件,比
"如说你打开了'main.c',Vim就会根据它的'.c'扩展名知道它是一个
"类型为 "c" 的C语言源程序文件,当你编辑一个文件其第一行是
"'#!bin/sh'时,Vim又可以据此判断它是一个类型为 "sh" 的shell脚
"本文件
"
"2. 用文件类型plugin脚本
"不同的文件类型需要搭配适合它的编辑选项.比如说你在编辑一个
" "c" 文件,那么打开 "cindent" 新非常有用,这些对某种文件类型来
"说最常用的选项可以放在一个Vim中交文件类型plugin的脚本里.
"你还可以加上你自己写的,请参考 "write-filetype-plain".
"
"3. 使用缩进定义文件
"编辑程序的时候,语句的缩进可以让它自动完成.Vim为众多不同的
"文件类型提供了相应的缩进方案.请参考 "filetype-indent-on" 和
" "indentexpr" 选项
filetype on
if has("eval") && v:version>=600
    filetype plugin on
    filetype indent on
endif

"设置当正在编辑的文件被外部的其它程序所修改后自动在Vim加载
if exists("&autoread")
    set autoread
endif

"可以为不同模式分别打开鼠标:
"   "n" 普通模式
"   "v" 可视模式
"   "i" 插入模式
"   "c" 命令行模式
"   "h" 编辑帮助文件时,所有前面的模式
"   "a" 所有前面的模式
"   "r" hit-enter 和 more-prompt 提示时
if exists("&mouse")
    set mouse=a
endif

"定义 "mapleader"变量
"要定义一个使用 "mapleader" 变量的映射,可以使用特殊字串
" "<Leader>".它会被 "mapleader" 的字符串所替代.如果
" "mapleader" 未设置或为空,则用反斜杠代替,例如:
"   ":map <Leader>A oanother line<Esc>"
"和下面一样:
"   :map \A oanother line<Esc>
"但是当:
"   :let mapleader = ","
"时,又相当于:
"   :map ,A oanother line<Esc>
"
"注意: "mapleader" 的值仅当定义映射时被使用.后来改变的
" "mapleader" 不会影响到已定义的映射
let mapleader = ","
let g:mapleader = ","

"设置快速保存
"
" "nmap"表示普通模式下的映射定义,
" ":map" 和 ":map!" 命令为多个模式定义和回显映射.在 Vim 中你可
"以使用 ":nmap", ":vmap", ":omap", ":cmap" 和 ":imap" 命令来对每
"个不同的模式分别定义映射.
"当列出映射时,前面两栏的字符表示 (可有多个):
"   字 符       模 式
"   "<Space>"   普通、可视、选择和操作符等待
"    "n"         普通
"    "v"         可视和选择
"    "s"         选择
"    "x"         可视
"    "o"         操作符等待
"    "!"         插入和命令行
"    "i"         插入
"    "l"         插入、命令行和 Lang-Arg 模式的 ":lmap" 映射
"    "c"         命令行
"
" ":xa!" 保存所有修改过的缓冲区,甚至包括只读的,但后退出Vim.不过,
"如果有无名或者其它元婴写入失败的缓冲区,Vim仍然不会退出.
"
" ":w!" 和 ":w" 类似,但即使 "readonly" 已置位或者有其他原因写入被拒
"绝,还是强制写入.
"注意:这可能会改变文件的权限和所有者,或者破坏(符号)连接.但在
" "cpoptions" 里加上 "W" 标志位可以避免这一点.

nmap <leader>x :xa!<cr>
nmap <leader>w :w!<cr>

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Colors and Font
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"打开语法高亮:

"   ":syntax enable"
"实际上,它只是执行如下命令:
"   ":source $VIMRUNTIME/syntax/syntax.vim"
"
" ":syntax enable" 命令会保持你当前的色彩设置.这样,不管在使用此
"命令的前后,你都可以用 ":highlight" 命令设置你喜欢的颜色.如果你
"希望Vim用缺省值覆盖你自己的,只要用:

"   ":syntax on"
if MySys()=="unix"
    if v:version<600
        if filereadable(expand("$VIM/syntax/syntax.vim"))
            syntax on
        endif
    else
        syntax on
    endif
else
    syntax on
endif

"国际化设置
" "multi_byte" 指韩国语和其他多字节语言支持

if has("multi_byte")
    " "fileencodings" 缺省为 "ucs-bom",这是一个字符编码的列表,开始
    "编辑已存在的文件时,参考此选项.如果文件被读入,Vim尝试使用本
    "列表第一个字符编码.如果检测到错误,使用列表的下一个.如果找
    "到一个能用的编码,设置 "fileencoding" 为该值.如果全部失败,
    " "fileencoding" 设为空字符串,这意味着使用 "encoding" 的值.
    "

    "警告:转换可能导致信息的丢失!如果 "encoding" 为 "utf-8" (或者某
    "个其它的Unicode变种),那么转换的结果通过逆转换很有可能产生
    "相同的文本.相反,如果 "encoding" 不是 "utf-8",一些非ASCII的字符
    "可能会丢失.

    set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1

    " "v:lang" 运行环境当前的消息locale设置.它使得Vim脚本能得到当
    "前使用的语言.技术细节:这就是LC_MESSAGES的值.该值和系统有关.
    "
    " "=~" 为匹配正则表达式,详细介绍如下表:

    "               使用 "ignorecase"    匹配大小写        忽略大小写 ~
    "等于                   "=="            "==#"            "==?"
    "不等于                 "!="            "!=#"           "!=?"
    "大于                   ">"             ">#"            ">?"
    "大于等于               ">="            ">=#"           ">=?"
    "小于                   "<"             "<#"            "<?"

    "小于等于               "<="            "<=#"           "<=?"
    "匹配正规表达式         "=~"            "=~#"           "=~?"
    "不匹配正规表达式       "!~"            "!~#"           "!~?"
    "相同实例               "is"
    "不同实例               "isnot"

    "
    "设置CJK环境的编码选择

    if v:lang =~ "^zh_CN"
        set encoding=cp936
        set termencoding=cp936
        set fileencoding=cp936
    elseif v:lang =~ "^zh_TW"
        set encoding=big5
        set termencoding=big5
        set fileencoding=big5
    elseif v:lang =~ "^ko"
        set encoding=euc-kr
        set termencoding=euc-kr
        set fileencoding=euc-kr
    elseif v:lang =~ "^ja_JP"
        set encoding=euc-jp
        set termencoding=euc-jp
        set fileencoding=euc-jp
    endif

    "在必要的时候,使用utf-8替代CJK的设置
    if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
        set encoding=utf-8
        set termencoding=utf-8
        set fileencoding=utf-8
    endif
endif

" "ambiwidth" 缺省为 "single"
"只有在 "encoding" 和 "utf-8" 或别的Unicode编码时才有效.告诉Vim怎
"么处理东亚二义性宽度字符类(East Asian Width Class Ambiguous)(例
"如欧元符号,注册记号,版权记号,希腊字母,西里尔字母等等)
"
"目前有两个可能的选择:
" "single": 使用和US-ASCII字符相同的宽度.多数用户希望如此.
" "double": 使用US-ASCII字符两倍的宽度

"
"在一些 CJK 字体里,这些字符的字形宽度完全由它们在传统的CJK编码
"里占据字节的数目决定.那些编码中,欧元,注册记号,希腊/西里尔字母
"等占据两个字节,因而它们在这些字体里用'宽'字形显示.这也包括文本

"文件里制表用的一些画线字符.因此如果GUI Vim使用CJK字体,或者在使
"用CJK字体的终端(模拟器)(包括带有 "-cjkwidth" 选项的xterm)里运
"行Vim,应把该选项设为 "double",这样可以匹配这些字体里Vim实际看

"到相关字形的宽度.在Windows 9x/ME 或 Windows 2k/XP 上,如果系统
"locale 为 CJK locale,也应把本选项设为 "double"

if exists("&ambiwidth")
    set ambiwidth=double
endif

" "guioptions" 选项只有在 Vim 的 GUI 版本才有效.它是字母的序
" 列,分别描述 GUI 应该使用的部件和选项.
" 建议使用 ":set" 的 "+=" 和 "-=" 特性,这可以避免未来版本增加
" 新的标志位时出现的问题.

"下面是合法的标志位字母:
"   "a" 自动选择: 如果存在,无论什么时候启动可视模式或者扩展可
"       视区域,Vim 都试图成为窗口系统全局选择区的拥有者.这意
"       味着可以粘贴高亮的可视文本到其它应用程序甚至 Vim 自身.
"       如果因为在文本之上进行了操作,或者应用程序需要粘贴选择
"       区等原因使得可视区域被终止,高亮文本会被自动抽出到 "*"
"       选择寄存器里.这样,即使在可视模式结束以后,选择区仍然可
"       以被粘贴到别的应用程序.

"       如果不存在,Vim 不会成为窗口系统的全局选择区,除非使用
"       "*" 寄存器进行抽出和删除操作,这时该选择区被显式地占有.
"       同样适用无模式的选择.

"
"   "A" 自动选择无模式的选择.类似于 "a",但仅限于无模式的选择.
"       "guioptions"    自动选择可视    自动选择无模式
"           ""              --              --
"           "a"             是              是
"           "A"             --              是
"           "aA"            是              是
"
"   "c" 简单的选择使用控制台对话框而不是弹出式对话框.
"
"   "e" "showtabline" 要求时,加入标签页.
"       "guitablabel" 可用来改变标签文本.
"       如果没有 "e",可能使用非 GUI 标签页行.
"       只有一些系统支持 GUI 标签页,现在包括 GTK, Motif,
"       Mac OS/X 和 MS-Windows.
"
"   "f" 前台: 不用 fork() 从启动外壳分叉出本 GUI 进程.用于
"       需要等待编辑器完成的程序 (例如,e-mail 程序).你也可
"       以用 "gvim -f" 或 ":gui -f" 来在前台启动 GUI.
"       注意: 在 vimrc 文件里设置本选项.读入 gvimrc 文件时
"       分叉操作可能已经发生.
"
"   "i" 使用 Vim 图标.GTK 和 KDE 上它出现在窗口的左上角.在
"       非 GTK 的环境上,因为 X11 的限制,它是黑白的.要得到
"       彩色图标,见 "X11-icon"
"
"   "m" 使用菜单栏
"
"   "M" 不执行系统菜单脚本 "$VIMRUNTIME/menu.vim".
"       注意:本标志位必须在    ".vimrc" 文件里加入,在打开语法
"       或文件类型识别之前 (执行 "gvimrc" 文件时,系统菜单
"       已经载入;而 ":syntax on" 和 ":filetype on" 命令同
"       样会载入菜单).
"
"   "g" 灰色菜单项: 使得不活动的菜单项变灰.如果没有包含 "g",
"       不活动的菜单项完全不显示.
"       特例: Athena 总会使用灰色的菜单项.
"
"   "t" 包含可撕下的菜单项.目前只用于 Win32, GTK+ 和
"       Motif 1.2 GUI.
"
"   "T" 包含工具栏.目前只用于 Win32, GTK+, Motif, Photon
"       和 Athena GUI.
"
"   "r" 右边的滚动条总是存在.
"
"   "R" 如有垂直分割的窗口,右边的滚动条总是存在.
"
"   "l" 左边的滚动条总是存在.
"
"   "L" 如有垂直分割的窗口,左边的滚动条总是存在.
"
"   "b" 底部的 (水平) 滚动条总是存在.它的大小取决于最长的可
"       见行,或者如果包含 'h' 标志位的话,光标所在的行.详情
"       可见 "gui-horiz-scroll"
"
"   "h" 限制水平滚动条的大小为光标所在行的长度,以减少计算量.
"       是的,如果你真的想要,左右两边都可以有滚动条.详情可见
"       "gui-scrollbars"
"
"   "v" 对话框使用垂直的按钮布局.如果不包含,倾向使用水平布
"       局,但如果空间不够,还是用垂直的布局.
"
"   "p" 使用 X11 GUI 的指针回调.有些窗口管理器需要.如果光标
"       不闪烁或者在一定场合下变空,考虑增加此标志位.必须在
"       启动GUI 之前完成.在你的 "gvimrc" 里设置.在 GUI 启动
"       后增加或删除不会有任何效果.
"
"   "F" 增加信息页脚.只适用于 Motif.见 "gui-footer".
if has("gui_running")
    set guioptions-=m   " 关闭菜单栏
    set guioptions-=T   " 关闭工具栏
    set guioptions-=l   " 关闭左边滚动条
    set guioptions-=L   " 关闭垂直分隔窗口左边滚动条
    set guioptions-=r   " 关闭右边滚动条
    set guioptions-=R   " 关闭垂直分隔窗口右边滚动条

    if MySys()=="win32"
        " "autocmd" / "au" 定义自动命令
        "注意: ":autocmd" 命令不能有其他命令紧跟其后,因为"|"
        "命令是该命令的一个组成部分.
        "
        " ":au[tocmd] [group] {event} {pat} [nested] {cmd}"
        "把 {cmd} 加到 Vim 在匹配 {pat} 模式的文件执行 {event}
        "事件时自动执行的命令列表.Vim 把 {cmd} 加到已有的自动
        "命令之后,从而使自动命令的执行顺序与其定义的顺序相同.
        "关于 [nested],参见 "autocmd-nested".

        "注意 ":autocmd" 的参数里的特殊字符 (例如, "%", "<cword>")
        "在定义时不会被扩展,而是在事件发生并执行 {cmd} 的时候才
        "进行.唯一的例外是 "<sfile>" 在定义时扩展.
        "
        " "GUIEnter" 成功启动 GUI 并打开窗口后自动命令事件.用
        " gvim 的时候,它在 VimEnter 之前发生.在 .gvimrc 里可用
        " 它来定位窗口:
        "   ":autocmd GUIEnter * winpos 100 50"
        "
        " "si" / "simalt" 模拟 Alt-{key} 组合键.
        " ":si[malt] {key}"
        " {仅适用 Win32 版本}
        "
        "正常情况下,为了增加键映射 (map) 的数量,Vim 控制所有
        "Alt-{key} 组合键.但是这样做可能与用 Alt-{key} 访问菜单
        "的标准方法冲突.一个快速的解决办法是:设置 "winaltkeys"
        "选项的值为 "yes".但是这样阻止了所有与Alt 键有关的映射.
        "另一个办法是:设置 "winaltkeys" 选项为 "menu".这样与菜
        "单有关的快捷键有 Windows 管理,其余的与 Alt 相关的映射
        "仍然好用.但这样又产生了对当前状态的依赖性.
        "要解决这个问题,就要用 ":simalt" 命令告诉 Vim
        "( "winaltkeys" 不要设置为 "yes") 虚拟一个 Windows 风
        "格的 Alt 按键行为.你可以用它来映射 Alt 组合键 (或者任
        "何其它键) 来产生标准的 Windows 操作.下面是一些例子:
        "   ":map <M-f> :simalt f<CR>"
        "这个命令通过把 Alt-F 映射为模拟按键的 Alt 和 F,使你按
        "下 Alt-F 时弹出 "文件" 菜单 (对于缺省的 Menu.vim 而言)
        "   ":map <M-Space> :simalt ~<CR>"
        "这个命令通过映射 Alt-Space 弹出 Vim 窗口的系统菜单.
        "注意: ~ 在 simalt 命令里代表 <Space> (空格).
        "   ":map <C-n> :simalt ~n<CR>"
        "把 CTRL-N 映射成 Alt-Space + N.也就是打开窗口的系统菜
        "单,然后按 N,最小化 Vim窗口
        "
        "这个选项是模拟弹出菜单中使用最大化的快捷键 "x"

        if has("autocmd")
            au GUIEnter * simalt ~x
        endif
    endif

    " "colorscheme" / "colo" 载入色彩方案
    " ":colo[rscheme] {name}"
    "载入色彩方案 {name}.
    "它会在 'runtimepath' 里搜索 "colors/{name}.vim",载入第一
    "个找到的文件.
    "要看到当前激活的色彩方案的名字 (如果有的话):
    "   ":echo g:colors_name"
    "它不能递归调用,所以你不能在色彩方案脚本里使用 ":colorscheme"
    "色彩方案载入后"激活 "ColorScheme" 自动命令事件.关于如何
    "编写色彩方案文件的信息:
    "   ":edit $VIMRUNTIME/colors/README.txt"

    if v:version > 601
        colorscheme torte
    endif
else
    if v:version > 601
        colorscheme torte
    endif
endif

"当打开的文档中含有多种语言的时候,单一使用某一种文件类型的高亮
"方式必然会非常难看,比如说一个介绍J2EE的文件,里面必然有Java的代
"码,也会存在很多XML的代码,这个时候需要随时切换不同的高亮方案

map <Leader>1 :set syntax=java<CR>
map <Leader>2 :set syntax=c<CR>
map <Leader>3 :set syntax=xhtml<CR>
map <Leader>4 :set syntax=python<CR>
map <Leader>5 :set ft=javascript<CR>
map <Leader>0 :syntax sync fromstart<CR>

"用 "cursorline" 高亮光标所在的屏幕行.用于方便定位光标.屏幕刷新
"会变慢.
"激活可视模式时,为了容易看到选择的文本,不使用此高亮.

if has("gui_running")
    if exists("&cursorline")
        set cursorline
    endif
endif

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Fileformat
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" "fileformats" / "ffs"
"给出换行符(<EOL>)的格式,开始编辑新缓冲区或者读入文件到已有的缓
"冲区时,尝试这些格式:
"   -   如果为空,总是使用 "fileformat"定义的格式.不自动设置该选项.
"   -   如果设为一个名字,总是为打开的新缓冲区使用该格式,也为该缓
"       冲区相应地设置 "fileformat".文件读入已有的缓冲区时,使用
"       "fileformats" 给出的名字,不管该缓冲区设定的 "fileformat"
"       是什么.
"   -   如果给出多于一个以逗号分隔的名字,读入文件时会进行自动
"       <EOL>检测.
"       开始编辑文件时,这样检查 <EOL>:
"       1.  如果所有行都以 <CR><NL> 结尾,而 "fileformats" 包含
"           "dos" 的话, "fileformat" 设为 "dos".
"       2.  如果找到一个<NL>而 "fileformats" 包含 "unix"的话,
"           "fileformat"设为 "unix".注意 如果找到的 <NL> 没有前
"           导 <CR>, "unix" 比 "dos" 优先.
"       3.  如果 "fileformats" 包含 "mac". "fileformat" 设为 "mac".
"           这意味着 "mac" 只有在没有给出 "unix" 或者在文件里没有
"           找到 <NL>,并且没有给出 "dos" 或者没有在文件里找到
"           <CR><NL> 时才会使用.如果先选择 "unix",但第一个 <CR> 出
"           现在第一个 <NL> 之前,而文件里的 <CR> 比 <NL> 多的话,
"           "fileformat" 也设为 "mac".
"       4.  如果还是不能设置 "fileformat",使用 "fileformats" 的第
"           一个名字.
"   读入文件到已有的缓冲区时,完成相同的步骤,但如同 "fileformat"
"   已经为该文件合适地设置过,不改变该选项.
"如果置位 "binary",不使用 "fileformats" 的值.
"
" 对于使用 DOS 类型的 <EOL> (<CR><NL>) 的系统来说,读入待执行的脚本
"( ":source" ) 或者 vimrc 文件时,可能进行自动 <EOL> 的检测:
"   -   如果 "fileformats" 为空,没有自动检测.使用 DOS 格式.
"   -   如果 "fileformats" 设为一到多个名字,进行自动检测.它基于文
"       件中的第一个 <NL>: 如果在它之前有一个 <CR>,使用 DOS 格式,
"       不然,使用 Unix格式.
"   另见 |file-formats|.
"为了后向兼容: 如果设置此选项为空字符串或者单一格式 (没有包含逗号),
"复位 "textauto",否则置位 "textauto".
"注意: 如果置位 "compatible",本选项被设为 Vi 的缺省值.相反,如果复位
" "compatible",本选项被设为 Vim 的缺省值.
set fileformats=unix,dos,mac

"给出当前缓冲区的 <EOL> 格式,用于从文件读入缓冲区和把缓冲区写回文件:
"   "dos"       <CR> <NL>
"   "unix"      <NL>
"   "mac"       <CR>
"
"MS-DOS,MS-Windows,OS/2 的缺省: "dos",
"Unix 缺省: "unix",
"Macintosh 缺省: "mac"
"
"如果使用 "dos",文件尾的 CTRL-Z 被忽略.
"见 "file-formats" 和 "file-read|"
"文件使用的字符编码见 "fileencoding".
"如果设置 "binary",忽略 "fileformat" 的值.文件输入/输出如同它被设为
" "unix" 那样.
"文件开始编辑时,如果 'fileformats' 非空而 'binary' 关闭,本选项被
"自动设置.
"开始编辑文件后,如果设置该选项, "modified" 选项被置位,因为文件被认为
"和当初写入时已经不同.
"本选项在 "modifiable" 关闭时不能改变.
"
"为了后向兼容: 如果本选项设为 "dos",置位 "textmode",否则,复位之.
"
"这里的意思是定义快速转换文件格式的快捷键映射
nmap <leader>fd :set ff=dos<cr>
nmap <leader>fu :set ff=unix<cr>
nmap <leader>fm :set fm=unix<cr>

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => VIM userinterface
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" "scrolloff" / "so"    (缺省为 0) 光标上下两侧最少保留的屏幕行数
"这使你工作时总有一些可见的上下文.我们这里设置的主要用处其实是
"可以用鼠标单击屏幕的前N行或者后N行来直接进行屏幕的上下滚动.对
"于习惯了鼠标操作的用户来说将会非常的方便.
"
"如果你设置此选项为很大的值 (比如 999),光标所在的行将总定位在
"窗口的中间位置 (除非你非常靠近文件开始或者结束的地方,或者有长
"行回绕).
"水平滚动见 'sidescrolloff'.
"注意: 如果置位 'compatible',该选项被设为 0.
set so=7

" "wildmenu" / "wmnu"   (缺省关闭) 命令行补全以增强模式运行
" {仅当编译时加入 "+wildmenu" 特性才有效}
" "wildmenu" 打开时,命令行补全以增强模式运行,按下 "wildchar"
" (通常是 <Tab>) 启动补全.这时,在命令行的上方显示可能的匹配,
" 然后高亮首个匹配 (如果有状态行,覆盖之).显示前项/后项匹配的
" 热键,如 <Tab> 或 CTRL-P/CTRL-N,移动高亮到合适的匹配上.
"
" 使用 "wildmode" 时,指定 "full" 会启用 "wildmenu" 模式.
" "longest" 和 "list" 则不会启动 "wildmenu" 模式.
"
" 如果多个匹配超过一行,在右侧显示 ">" 和/或在左侧显示 "<".需
" 要的话,滚动状态行.
"按下不用于选择补全项的键时,放弃 "wildmenu" 模式.
"
" "wildmenu" 激活时,下面的键有特殊含义:
"   "<Left>" / "<Right>"    选择前项/后项匹配 (类似于
"                           CTRL-P/CTRL-N)
"   "<Down>"                文件名/菜单名补全中: 移进子目录
"                           和子菜单.
"   "<CR>"                  菜单补全中,如果光标在句号之后:
"                           移进子菜单.
"   "<Up>"                  文件名/菜单名补全中: 上移到父目
"                           录或父菜单.
"
"这使得控制台上有菜单可用 "console-menus"
"如果你喜欢 <Left> 和 <Right> 键移动光标而不是选择不同的匹
"配,用:
"   ":cnoremap <Left> <Space><BS><Left>"
"   ":cnoremap <Right> <Space><BS><Right>"
"
" "WildMenu" 高亮用于显示当前匹配 "hl-WildMenu".
set wildmenu

" "ruler" / "ru" (缺省关闭) 标尺
" {仅当编译时加入 "+cmdline_info" 特性才有效}
"显示光标位置的行号和列号,逗号分隔.如果还有空间,在最右端显
"示文本在文件中的相对位置:
"   "Top"   首行可见
"   "Bot"   末行可见
"   "All"   首末两行都可见
"   "45%"   文件中的相对位置
"如果设置 "rulerformat",它决定标尺的内容.
"每个窗口都有自己的标尺.如果窗口有状态行,标尺在那里显示.否
"则,它显示在屏幕的最后一行上.如果通过 "statusline" 给出状
"态行 (亦即,非空),该选项优先于 "ruler" 和 "rulerformat".
"如果显示的字符数不同于文本的字节数 (比如,TAB 或者多字节字
"符),同时显示文本列号 (字节数) 和屏幕列号,以连字符分隔.
"空行显示 "0-1"
"空缓冲区的行号也为零: "0,0-1"
"如果置位 "paste" 选项,本选项被复位.
"如果你不想一直看到标尺但想知道现在在哪里,使用 "g CTRL-G"
"注意: 如果置位 "compatible",该选项被复位
set ruler

" "cmdheight" / "ch" (缺省为 1)    命令行使用的屏幕行数
"有助于避免 "hit-enter" 提示.
"此选项值保存在每个标签页里,从而每个标签页可有不同的值.
set cmdheight=2

" ":nu" / ":number" 显示行号
" ":[range]nu[mber] [count] [flags]"
"和 ":print" 相同,但每行之前显示行号 (也参见 "highlight"
"和 "numberwidth" 选项).
set nu

" "lazyredraw" / "lz"   (缺省关闭)
"如果置位本选项,执行宏,寄存器和其它不通过输入的命令时屏
"幕不会重画.另外,窗口标题的刷新也被推迟.要强迫刷新,使用
" ":redraw".
set lz

" "hidden" / "hid"  (缺省关闭)
"如果关闭, "abandon" 放弃时卸载缓冲区.如果打开, "abandon"
"放弃时隐藏缓冲区.当然,如果缓冲区仍然在别的窗口里显示,
"它不会被隐藏.
"在缓冲区列表里移动的命令有时会隐藏缓冲区,即使关闭 "hidden"
"选项也是如此,条件是: 缓冲区被修改过, "autowrite" 关闭
"或者不能写入,并且使用 "!" 标志位.另见 "windows.txt".
"
"如果只想隐藏一个缓冲区,使用 "bufhidden" 选项.
" ":hide {command}" 为单个命令关闭本选项 ":hide".
"警告: 对隐藏缓冲区的修改很容易忘记. ":q!" 或 ":qa!" 时
"三思而后行!
set hid

" "backspace" / "bs" (缺省为 "")
"影响 <BS>,<Del>,CTRL-W 和 CTRL-U 在插入模式下的工作方
"式.它是逗号分隔的项目列表.每个项目允许一种退格删除的内
"容:
"   值            效果
"   "indent"    允许在自动缩进上退格
"   "eol"       允许在换行符上退格 (连接行)
"   "start"     允许在插入开始的位置上退格;CTRL-W 和
"               CTRL-U 到达插入开始的位置时停留一次.
"
"如果该值为空,使用 Vi 兼容的退格方式.
"
"为了和 5.4 及更早的版本后向兼容:
"   值          效果
"   "0"         等同于 ":set backspace=" (Vi 兼容)
"   "1"         等同于 ":set backspace=indent,eol"
"   "2"         等同于 ":set backspace=indent,eol,start"
"
"如果你的 <BS> 或 <Del> 键不合你的期望,见 ":fixdel".
"注意: 如果置位 "compatible",该选项被设为 "".
set backspace=eol,start,indent

" "whichwrap" / "ww"    (Vim 缺省: "b,s",Vi 缺省: "")
"使指定的左右移动光标的键在行首或行尾可以移到前一行
"或者后一行.连接这些字符,可以让所有指定的键都有此功能:
"       字符    键          模式
"       "b"    <BS>         普通和可视
"       "s"    <Space>      普通和可视
"       "h"    "h"          普通和可视 (不建议)
"       "l"    "l"          普通和可视 (不建议)
"       "<"    <Left>       普通和可视
"       ">"    <Right>      普通和可视
"       "~"    "~"          普通
"       "["   <Left>        插入和替换
"       "]"    <Right>      插入和替换
"只允许光标键进行回绕.
"如果移动键和删除和改变操作符一起使用时,<EOL> 也被看作一个
"字符.这使得光标跨过行尾时, "3h" 和 "3dh" 效果不同."这也适
"用于 "x" 和 "X",因为它们分别和 "dl" 以及 "dh" 相同.如果这
"么用,你可能想用映射 ":map <BS> X"来使退格"键删除光标之前的
"字符.
"如果包含 'l',位于行尾时如果在操作符之后使用它,不会移动到下
"一行.这样 "dl", "cl", "yl" 等都能正常工作.
"注意: 如果置位 "compatible",本选项被设为 Vi 的缺省值.相反,
"如果复位 "compatible",本选项被设为 Vim 的缺省值.
set whichwrap+=<,>,h,l

" "incsearch" / "is"    (缺省关闭)
"{仅当编译时加入 "+extra_search" 特性才有效}
"输入搜索命令时,显示目前输入的模式的匹配位置.
"匹配的字符串被高亮.如果该模式不合法或者没有匹配,不显示任何
"东西.屏幕会经常刷新,所以只有对快速终端,这才有意义.
"注意:会显示匹配,但如果找不到匹配和按 <Esc> 的时候,光标会回
"到原来的位置.你仍然需要用 <Enter> 完成搜索命令才会移动光标
"到匹配位置.
"编译时加入 "+reltime" 特性时,Vim 只会搜索大概半秒钟.如果模
"式太过复杂和/或有很多文本存在,不一定能找到匹配.这是为了避免
"Vim 在输入模式的时候挂起.
"
"可以用 "highlight" 的 "i" 标志位设置高亮.另见: "hlsearch".
"   "CTRL-L" 可用来在命令行上给当前匹配之后增加一个字符.
"   "CTRL-R" / "CTRL-W" 可用来在当前匹配的尾部增加单词,排除
"                       已经输入的部分.
"注意: 如果置位 "compatible",该选项被复位.
set incsearch

"某些字符在模式中是按本义出现的.它们匹配自身.然而,当前面有一
"个反斜杠时,这些字符具有特殊的含义.
"
"另外一些字符即使没有反斜杠也代表特殊的意思,它们反而需要一个
"反斜杠来匹配按本义出现的自身.
"
"一个字符是否按本义出现取决于 "magic" 选项以及下面将解释的条
"目.
"使用 "\m" 会使得其后的模式的解释方式就如同设定了 "magic" 选
"项一样.而且将忽略 "magic" 选项的实际值.
"使用 "\M" 会使得其后的模式的解释方式就如同设定了 "nomagic"
"选项一样.
"
"使用 "\v" 会使得其后的模式中所有 '0'-'9','a'-'z','A'-'Z'
"和 '_' 之外的字符都当作特殊字符解释.
"使用 "\V" 会使得其后的模式中只有反斜杠有特殊的意义.
"
"示例:
"在这之后:  \v      \m      \M      \V      匹配
"                 'magic' 'nomagic'
"           $       $       $       \$      匹配行尾
"           .       .       \.      \.      匹配任何字符
"           *       *       \*      \*      前面匹配原的任意次重复
"           ()      \(\)    \(\)    \(\)    组成为单个匹配原
"           |       \|      \|      \|      分隔可选分支
"           \a      \a      \a      \a      字母字符
"           \\      \\      \\      \\      反斜杠 (按本义)
"           \.      \.      .       .       英文句号 (按本义)
"           \{      {       {       {       '{' (按本义)
"           a       a       a       a       'a' (按本义)
"
"{仅 Vim 支持 \m,\M,\v 和 \V}
"
"建议始终将 "magic"选项保持在缺省值 - "magic".这可以避免移
"植性的麻烦.要使模式不受该选项值的影响,在模式前面加上 "\m"
"或 "\M".
set magic

"设置Vim静音
" "errorbells" / "eb" (缺省关闭)
"错误信息响铃 (鸣叫或屏幕闪烁).只有对错误信息有意义.很多没有消息的错误
"也会使用该响铃 (比如,普通模式里按 <Esc>).
"
" "visualbell" / "vb" (缺省关闭)
"使用可视响铃代替鸣叫.显示可视响铃的终端代码由 "t_vb" 给出.如果既不想
"要响铃也不想要闪烁,使用 ":set vb t_vb=".
"注意: GUI 启动时,'t_vb' 复位为缺省值.你可能想在 |gvimrc| 里再次设置之.
"在 GUI 里, "t_vb" 缺省为 "<Esc>|f",反转显示 20 毫秒.如果你想使用别的
"时间,可设 "<Esc>|40f",其中 40 是毫秒计的时间.
"在 Amiga 上没有用,你总会得到屏幕闪烁.
set noerrorbells
set novisualbell
set t_vb=

" "showmatch" / "sm"    (缺省关闭)
"插入括号时,短暂地跳转到匹配的对应括号.只有在屏幕上能看到匹配时才会进
"行跳转.显示匹配的时间用 "matchtime" 设置.
"如果没有匹配会响铃 (和匹配能否看到无关).置位 "paste" 时,复位本选项.
"如果 "cpoptions" 里没有 "m" 标志位,接着输入字符会立即把光标移动到它应
"该在的位置.
" "guicursor" 的 "sm" 域说明显示匹配时,如何设置光标形状和闪烁.
" "matchpairs" 选项可指定显示匹配所用的字符.用 "rightleft" 和 "revins"
"查找反方向的匹配.
"移动时要高亮匹配,另见 matchparen 插件 "pi_paren.txt".
set showmatch

" "matchtime" / "mat"   (缺省为 5)
"如果置位 'showmatch',显示配对括号的十分之一秒数.
"注意 这不是毫秒数.
set mat=4

" "hlsearch" / "hls"    (缺省关闭)
"{仅当编译时加入 "+extra_search" 特性才有效}
"如果有上一个搜索模式,高亮它的所有匹配.使用高亮的类型可以用 "highlight"
"选项的 "l" 位设置.缺省,使用 "Search" 高亮组.
"注意: 只有匹配的文本被高亮,位移此处不予考虑.
"另见: "incsearch" 和 ":match".
"
"如果你厌倦总是看到高亮匹配,用 ":nohlsearch" 或者 ":noh" 可以暂时关闭.
"一旦使用搜索命令,高亮会重新出现.
"
" "redrawtime" 指定寻找匹配会花费的最大时间.
"如果搜索模式可以匹配换行符,Vim 会试图高亮所有的匹配文本.不过,这依赖
"于搜索从哪里开始.如果是窗口的第一行,或者关闭折叠之下的第一行,那么从
"它们不会显示的上一行开始的匹配不会在新显示的行上继续.
"注意: 如果置位 "compatible",该选项被复位.
set hlsearch

""""""""""""""""""""""""""""""
" => Statusline
""""""""""""""""""""""""""""""
"格式化状态栏
if performance_mode
else
    " "laststatus" / "ls" (缺省为 1)
    "本选项的值影响最后一个窗口何时有状态行:
    "   "0" 永不
    "   "1" 只有在有至少两个窗口时
    "   "2" 总是
    "如果你有多个窗口,有状态行会使屏幕看起来好一些,但它会占据一个屏幕行.

    set laststatus=2

    " "statusline" / "stl"  (缺省为空)
    "{仅当编译时加入 "+statusline" 特性才有效}"
    "如果非空,本选项决定状态行的内容.另见 "status-line"
    "
    "此选项包含 printf 风格的 '%' 项目,中间可以间杂普通文本.每个状态行项
    "目有如下形式:
    "   "%-0{minwid}.{maxwid}{item}"
    "除了 {item} 以外,每个字段都是可选的.单个百分号可以用 "%%" 给出.最多
    "可给出 80 个项目.
    "
    "如果此选项以 "%!" 开始,它用作表达式.计算此表达式的结果用作选项值.例
    "如:
    "   ":set statusline=%!MyStatusLine()"
    "返回值可以包含 %{} 项目,它还会被继续计算下去.
    "
    "如果计算选项时有错误,会把它清空以防将来继续出错.否则屏幕更新会陷入循
    "环.
    "
    "注意 如果设置本选项 (并且 "laststatus" 为 2 的话), "ruler" 的唯一效
    "果是控制 "CTRL-G" 的输出.
    "
    "   域          含义
    "   "-"            左对齐项目.如果 minwid 大于项目的长度,缺省是右对齐.
    "   "0"         数值项目前面用零填补. '-' 更优先.
    "   "minwid"    项目的最小宽度,以 '-' 和 '0' 补空.该值不能超过 50.
    "   "maxwid"    项目的最大宽度.如果超过,在文本项目的左侧截短,以'<'代
    "               替.数值项目则往下移到 maxwid-2 个数位,然后跟 '>'number,
    "               其中的 number 是丢失的数位,这非常类似于指数记法.
    "   "item"      单个字符的代码,下面给出描述.
    "
    "下面是可能状态行项目的描述.其中,"项目" 的第二个字符代表类型:
    "   "N" 代表数值型
    "   "S" 代表字符串型
    "   "F" 代表下面描述的标志位
    "   "-" 不适用
    "
    "项目   含义
    "f S    缓冲区的文件路径,保持输入的形式或相对于当前目录.
    "F S    缓冲区的文件完整路径.
    "t S    缓冲区的文件的文件名 (尾部).
    "m F    修改标志位,文本是 "[+]";若 "modifiable" 关闭则是 "[-]".
    "M F    修改标志位,文本是 ",+" 或 ",-".

    "r F    只读标志位,文本是 "[RO]".
    "R F    只读标志位,文本是 ",RO".
    "h F    帮助缓冲区标志位,文本是 "[help]".
    "H F    帮助缓冲区标志位,文本是 ",HLP".
    "w F    预览窗口标志位,文本是 "[Preview]".
    "W F    预览窗口标志位,文本是 ",PRV".
    "y F    缓冲区的文件类型,如 "[vim]".见 "filetype".
    "Y F    缓冲区的文件类型,如 ",VIM".见 "filetype'".
    "       {仅当编译时加入 "+autocmd" 特性才有效}
    "k S    "b:keymap_name" 的值或使用 ":lmap" 映射时的 "keymap":
    "       "<keymap>".
    "n N    缓冲区号.
    "b N    光标所在字节的值.
    "B N    同上,以十六进制表示.
    "o N    光标所在字节在文件中的字节偏移,第一个字节为 1.
    "       助记: 从文件开始的偏移 (Offset) (加上 1)
    "       {仅当编译时加入 "+byte_offset" 特性才有效}
    "O N    同上,以十六进制表示.
    "N N    打印机页号.(只用于 'printheader" 选项.)
    "l N    行号.
    "L N    缓冲区里的行数.
    "c N    列号.
    "v N    虚拟列号.
    "V N    虚拟列号,表示为 -{num}.如果等于 "c" 的值,不显示.
    "p N    行数计算在文件位置的百分比,如同 "CTRL-G" 给出的那样.
    "P S    显示窗口在文件位置的百分比,类似于 "ruler" 描述的百分比.长度
    "       总是为 3.
    "a S    参数列表状态,就像缺省标题里的那样.({current} of {max})
    "       如果参数列表里的文件数为零或一,空字符串.
    "{ NF   计算 "%{" 和 "}" 之间的表达式,并返回其结果替代.注意 结束的
    "       "}" 之前没有 "%".
    "( -    项目组的开始.可以用来为某组项目设置宽度和对齐.后面某处必须有
    "       "%)".
    ") -    项目组的结束.不能指定宽度域.
    "T N    用于 'tabline': 标签页 N 标签的开始.最后一个标签之后用 "%T".
    "       鼠标点击时用此信息.
    "X N    用于 "tabline": 关闭标签页 N 标签的开始.最后一个标签之后用
    "       "%T".
    "       例如: "%3Xclose%X",用 "%999X" 来代表 "关闭当前标签页" 那个符
    "       号.鼠标点击时用此信息.
    "< -    如果行过长,在什么地方截短.缺省是在开头.不能指定宽度域.
    "= -    左对齐和右对齐项目之间的分割点.不能指定宽度域.
    "# -    设置高亮组.必须后面跟名字,然后又是 "#".这样, "%#HLname#" 代
    "       表高亮组 HLname.包括非当前窗口的状态行都使用相同的高亮组.
    "* -    设置高亮组为 User{N},其中的 {N} 取自 minwid 域,比如 %1*.用
    "       %* 或者 %*0 可以恢复 normal 高亮.User{N} 和 StatusLine 的区
    "       别也会应用到非当前窗口的状态行使用的 StatusLineNC 上.
    "       数字 N 必须从 1 到 9.见 "hl-User1..9"
    "
    "显示标志位时,如果它紧跟在普通文本之后,Vim 删除之前的前导逗号.这使得
    "下面例子里使用的标志位显示看起来很舒服.
    "
    "如果组内的所有项目都是空字符串 (比如,标志位没有设置) 而该组没有设置
    "minwid,整个组成为空字符串.这使得下面这样的组完全从状态行上消失,如果
    "没有标志位被置位的话.
    "   ":set statusline=...%(\ [%M%R%H]%)..."
    "要小心,每次显示状态行时都要计算此表达式.当前缓冲区和当前窗口会临时设
    "为目前要显示的状态行所属的窗口 (缓冲区),而表达式会使用此上下文计算.
    "变量 "actual_curbuf" 被设为实际的当前缓冲区的 "bufnr()" 号.
    "
    "可能在沙盘 "sandbox" 里计算 "statusline" 选项.见 "sandbox-option".
    "
    "计算 "statusline" 时不允许修改文本或者跳到其它窗口 "textlock".
    "
    "如果状态行在你希望时没有更新 (如在设置完表达式里使用的某变量之后),设
    "置选项可以强制进行更新而无须更改其值.例如:
    "   ":let &ro = &ro"
    "
    "如果结果全是数字,用作显示时把它作为数值处理.否则结果作为文本,并应用
    "上面描述的规则.
    "
    "小心表达式里的错误.它们可能使 Vim 不可用!
    "如果你被困住,按住 ':' 或 'Q' 来得到提示,然后退出并用 "vim -u NONE"
    "来编辑 .vimrc 或者别的什么地方,以修正问题.
    "
    "示例:
    "模拟 "ruler" 设置的标准状态行
    "   ":set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P"
    "类似,但加上光标所在字符的 ASCII 值 (类似于 "ga")
    "   ":set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P"
    "显示字节偏移和字节值,用红色标记已修改标志位.
    "   ":set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b'"
    "   ":hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red"
    "如果载入的是压缩文件,显示 ,GZ 标志
    "   ":set statusline=...%r%{VarExists('b:gzflag','\ [GZ]')}%h..."
    "并在 |:autocmd| 里:
    "   ":let b:gzflag = 1"
    "或:
    "   ":unlet b:gzflag"
    "还要定义此函数:
    "   ":function VarExists(var, val)"
    "   ":    if exists(a:var) | return a:val | else | return '' | endif"
    "   ":endfunction"

    set statusline=
    set statusline+=%2*%-3.3n%0*\   "缓冲器名
    set statusline+=%f\             "文件名
    set statusline+=%h%1*%m%r%w%0*  "标记符
    set statusline+=[
    if v:version >= 600
        set statusline+=%{strlen(&ft)?&ft:'none'},  "文件类型
        set statusline+=%{&encoding},               "编码类型
    endif
    set statusline+=%{&fileformat}]                 "文件格式
    if filereadable(expand("$VIM/vimfiles/plugin/vimbuddy.vim"))
        set statusline+=\ %{VimBuddy()}             "添加VimBuddy插件
        "这个插件会在状态栏上加一个笑脸,鼻子会随着光标移动而改变
    endif
    set statusline+=%=                              "左右对齐的分割点
    set statusline+=%F\                             "文件的完整路径
    set statusline+=%2*0x%-8B\                      "16进制表示当前字符
    set statusline+=%-14.(%l,%c%V%)\ %<%P           "偏移量

    " special statusbar for special windows
    if has("autocmd")
        au FileType qf
                \ if &buftype == "quickfix" |
                \     setlocal statusline=%2*%-3.3n%0* |
                \     setlocal statusline+=\ \[Compiler\ Messages\] |
                \     setlocal statusline+=%=%2*\ %<%P |
                \ endif

        fun! FixMiniBufExplorerTitle()
             if "-MiniBufExplorer-" == bufname("%")
                 setlocal statusline=%2*%-3.3n%0*
                 setlocal statusline+=\[Buffers\]
                 setlocal statusline+=%=%2*\ %<%P
             endif
        endfun

        if v:version>=600
            au BufWinEnter *
                    \ let oldwinnr=winnr() |
                    \ windo call FixMiniBufExplorerTitle() |
                    \ exec oldwinnr . " wincmd w"
        endif
    endif

    " "titlestring" (缺省为 "") 设置窗口标题栏
    "{仅当编译时加入 "+title" 特性才有效}
    "如果此选项不为空,用来设置窗口的标题.只有在 "title" 选项打开时才会发
    "生.
    "只有终端支持设置窗口标题时才可用 (目前有 Amiga 控制台,Win32 控制台,
    "所有的 GUI 版本和带有非空的 "t_ts" 选项的终端).
    "如果 Vim 编译时定义 HAVE_X11,在可能的情况下恢复原来的标题 "X11".
    "如果本选项包含 printf 风格的 "%" 项目,依照 "statusline" 使用的规则
    "进行扩展.
    "例如:
    "   ":auto BufEnter * let &titlestring = hostname() . "/" . expand("%:p")"
    "   ":set title titlestring=%<%F%=%l/%L-%P titlelen=70"
    " "titlelen" 的值用来在可用空间的中间或右侧对齐项目.
    "有的人喜欢文件名放在前面:
    " ":set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:.:h\")})%)%(\ %a%)"
    "注意 "%{ }" 的使用,以及用于得到不含文件名的文件名路径的表达式.只有在
    "必要时, "%( %)" 构造才会加入分隔的空格.
    "注意: "titlestring" 使用特殊字符可能会使显示引起混乱 (比如,如果它包含
    "CR 或者 NL 字符的话).
    "{仅当编译时加入 "+statusline" 特性才有效}
    if has('title') && (has('gui_running') || &title)
        set titlestring=
        set titlestring+=%f\                "文件名
        set titlestring+=%h%m%r%w           "标记符
        set titlestring+=\ -\ %{v:progname} "程序名
    endif
endif

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Moving around and tab
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Map space to /
map <space> /

"为窗口跳转重新定义键映射
map <C-j> <C-W>j
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l

"Tab configuration
map <leader>tn :tabnew %<cr>
map <leader>tc :tabclose<cr>
map <leader>tm :tabmove

if v:version>=700
    set switchbuf=usetab
endif

if exists("&showtabline")
    set stal=2
endif

"Moving fast to front, back and 2 sides ;)
imap <m-$> <esc>$a
imap <m-0> <esc>0i
imap <D-$> <esc>$a
imap <D-0> <esc>0i

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => General Autocommand
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Switch to current dir
map <leader>cd :cd %:p:h<cr>

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Parenthesis/bracket expanding
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
vnoremap $1 <esc>`>a)<esc>`<i(<esc>
vnoremap $2 <esc>`>a]<esc>`<i[<esc>
vnoremap $3 <esc>`>a}<esc>`<i{<esc>
vnoremap $$ <esc>`>a"<esc>`<i"<esc>
vnoremap $q <esc>`>a'<esc>`<i'<esc>
vnoremap $w <esc>`>a"<esc>`<i"<esc>

"Map auto complete of (, ", ', [
"http://www.vim.org/tips/tip.php?tip_id=153
"

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => General Abbrev
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Comment for C like language

if has("autocmd")
    au BufNewFile,BufRead *.js,*.htc,*.c,*.tmpl,*.css ino $c /**<cr> **/<esc>O
endif

"My information
ia xdate <c-r>=strftime("%d/%m/%y %H:%M:%S")<cr>
"iab xname Amir Salihefendic

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Editing mappings etc.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Remap VIM 0

map 0 ^

"Move a line of text using control
nmap <M-j> mz:m+<cr>`z
nmap <M-k> mz:m-2<cr>`z
vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z
vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z

if MySys() == "mac"
    nmap <D-j> <M-j>
    nmap <D-k> <M-k>
    vmap <D-j> <M-j>
    vmap <D-k> <M-k>
endif

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Buffer realted
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Fast open a buffer by search for a name
"map <c-q> :sb

"Open a dummy buffer for paste
map <leader>q :e ~/buffer<cr>

"Restore cursor to file position in previous editing session
set viminfo='10,"100,:20,%,n~/.viminfo

"用 "rot13" 编码整个文件
" "gg" 到文件首行首字符, "V" 进入Visual-Line模式, "G"到文件末行首字符,
"这样就选中了整篇文章,然后 "g?" 就是用 "rot13" 编码整个文件
"
"关于 "rot13":
" "ROT13" 是一种简单的编码,它把字母分成前后两组,每组13个,编码和译码的
" 算法相同,仅仅交换字母的这两个部分,即:
"   [a..m] --> [n..z] 和 [n..z] --> [a..m]
" "ROT13" 用简易的手段使得信件不能直接被识别和阅读,也不会被搜索匹配程
" 序用通常的方法直接找到.经常用于 USENET 中发表一些攻击性或令人不快的
" 言论或有简单保密需要的文章.
" 由于 "ROT13" 是自逆算法,所以,译码和编码是同一个过程.
map <F9> ggVGg?

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Files and backup
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" "backup" / "bk"   (缺省关闭)  覆盖文件前创建一个备份.
"文件成功写入后保留该备份.如果你不想保留备份文件,但希望写入期间能有备
"份,复位该选项并置位 "writebackup" 选项(这是缺省行为).如果你完全不想
"要备份文件,同时复位两个选项 (如果你的文件系统差不多满了,这会有用).更
"多的解释可见 "backup-table".
"如果匹配 "backupskip" 模式,无论如何都不会建立备份.
"如果设置 "patchmode",备份文件会换名成为文件的旧版本.
"注意: 如果置位 "compatible",该选项被复位.
"
" "writebackup" / "wb" (有 "+writebackup" 特性时缺省打开,否则缺省关闭)
"覆盖文件前建立备份.文件成功写入后,除非 "backup" 选项也被打开,删除该备
"份.如果你的文件系统几乎已满,复位此选项. "backup-table" 还有相关的解释.
"如果 "backupskip" 模式匹配,无论如何都不会建立备份.
"注意: 如果置位 "compatible", 该选项被设为缺省值.

set nobackup
set nowritebackup

" "swapfile" / "swf"    (缺省打开)
"缓冲区使用交换文件.如果不想为特定缓冲区使用交换文件,可以复位本选项.
"例如,包含即使 root 也不应得到的机密信息.要小心: 所有的文本都在内存:
"   - 不要在大文件里使用.
"   - 无法恢复!
"交换文件只有在 "updatecount" 不为零并且置位 "swapfile" 时才会存在.
"复位 "swapfile" 时,立即删除当前缓冲区的交换文件.如果置位 "swapfile"
"并且 "updatecount" 非零,立即建立交换文件.
"另见 "swap-file"和 "swapsync".
"
"此选项可以和 "bufhidden" 和 "buftype" 一起使用,指定特殊类型的缓冲区.
"见 "special-buffers"
set noswapfile

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Folding
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" "foldenable" / "fen"  (缺省打开)
"{仅当编译时加入 "+folding" 特性才有效}
"如果关闭,所有的折叠都被打开.本选项用于在文本显示的完全打开折叠和保留
"折叠之间 (包括手动打开或关闭的折叠) 快速切换."zi" 命令切换本选项.
"如果 "foldenable" 关闭, "foldcolumn" 会保持空白.
"建立新折叠或者关闭折叠的命令置位本选项.见 "folding".
"
"折叠方法
"可用选项 "foldmethod" 来设定折叠方法.
"设置选项 "foldmethod" 为非 "manual" 的其它值时,所有的折叠都会被删除并
"且创建新的.如果设置成 "manual",将不去除已有的折叠.可以利用这一点来先
"自动定义折叠,然后手工调整.
"
"有 6 种方法来选定折叠:
"   "manual"    手工定义折叠
"   "indent"    更多的缩进表示更高级别的折叠
"   "expr"      用表达式来定义折叠
"   "syntax"    用语法高亮来定义折叠
"   "diff"      对没有更改的文本进行折叠
"   "marker"    对文中的标志折叠
"
"选取了折叠方式后,我们就可以对某些代码实施我们需要的折叠了,由于我使用
" "indent" 稍微多一些,故以它的使用为例:
"如果使用了 "indent"方式,vim会自动的对大括号的中间部分进行折叠,我们可
"以直接使用这些现成的折叠成果.
"在可折叠处(大括号中间):
"   "zc"    折叠
"   "zC"    对所在范围内所有嵌套的折叠点进行折叠
"   "zo"    展开折叠
"   "zO"    对所在范围内所有嵌套的折叠点展开
"   "[z"    到当前打开的折叠的开始处
"   "]z"    到当前打开的折叠的末尾处
"   "zj"    向下移动.到达下一个折叠的开始处.关闭的折叠也被计入.
"   "zk"    向上移动到前一折叠的结束处.关闭的折叠也被计入."
if exists("&foldenable")
    set fen
    "set foldmethod=indent
endif

" "foldlevel" / "fdl"   (缺省: 0)   设置代码折叠级别
"{仅当编译时加入 "+folding" 特性才有效}
"设置折叠级别: 高于此级别的折叠会被关闭.
"设置此选项为零关闭所有的折叠.更高的数字关闭更少的折叠.
" "zm", "zM" 和 "zR" 等命令设置此选项.
"见 "fold-foldlevel".
if exists("&foldlevel")
    set fdl=0
endif

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Text option
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" "expandtab" / "et"    (缺省关闭)
"插入模式里: 插入 <Tab> 时使用合适数量的空格.如果 "autoindent" 打开,
" ">" 和 "<" 命令使用空格进行缩进. "expandtab" 打开时,要插入实际的制
"表,可用 CTRL-V<Tab>.另见 ":retab" 和 "ins-expandtab".
"注意: 如果置位 "compatible",该选项被复位.
set expandtab

" "shiftwidth" / "sw"   (缺省为 8)
"(自动) 缩进每一步使用的空白数目.用于 "cindent", ">>", "<<" 等.
set shiftwidth=4

" "softtabstop" / "sts" (缺省为 0)
"执行编辑操作,如插入 <Tab> 或者使用 <BS> 时,把 <Tab> 算作空格的数目.
"感觉上,你就像使用单个 <Tab> 一样,而实际上使用的是空格和 <Tab> 的混
"合.这可以用来维持 "ts" 的设置为标准值 8 不变,但编辑时感觉就像它被设
"为 "sts" 那样.不过, "x" 这样的命令仍然会在实际的字符上操作.
"如果 "sts" 为零,关闭此特性.
"
"如果置位 "paste" 选项, "softtabstop" 被设为 0.
"另见 "ins-expandtab". 如果没有置位 "expandtab",通过使用 <Tab>,使空
"格数目减到最小.
" "cpoptions" 里的 "L" 标志位改变制表在 "list" 置位时的使用方式.
"注意: 如果置位 "compatible",该选项被设为 0.
set softtabstop=4

" "tabstop" / "ts"  (缺省为 8)
"文件里的 <Tab> 代表的空格数.另见 ":retab" 命令和 "softtabstop" 选项.
"
"注意: 设置 "tabstop" 为不同于 8 的值可能使你的文件在很多地方看起来不
"正确 (比如,打印时).
"
"Vim 里有四个主要的使用制表的方法:
"1. 总是保持 "tabstop" 为 8,设置 "softtabstop" 和 "shiftwidth" 为 4
"   (或 3 或任何你想要的) 然后用 "noexpandtab".这时,Vim 使用制表和空
"   格的混合,但输入 <Tab> 或 <BS> 键就像每个制表占用 4 (或 3) 个字符
"   一样.
"2. 设置 "tabstop" 和 "shiftwidth" 为想要的任何值,然后用 "expandtab".
"   这样,你总是插入空格.改变 "tabstop" 时绝不会影响排版.
"3. 设置 "tabstop" 和 "shiftwidth" 为想要的任何值,然后用 "modeline",
"   再次编辑时就会重新设置这些值.这只适用于总是使用 Vim 进行文件编辑
"   的情况.
"4. 永远把 "tabstop" 和 "shiftwidth" 设为相同的值,并用 "noexpandtab".
"   这样,就可以 (只适用于行首的缩进) 使用任何别人的制表位设置.不过,
"   如果你这么做,最好在第一个非空白字符之后想插入制表时以空格代替.否
"   则,改变 "tabstop" 时,注释等的对齐会不正确.
set tabstop=4

" "smarttab" / "sta"    (缺省关闭)
"如果打开,行首的 <Tab> 根据 "shiftwidth" 插入空白. "tabstop" 或
" "softtabstop" 用在别的地方.<BS> 删除行首 "shiftwidth" 那么多的空白.
" 如果关闭,<Tab> 总是根据 "tabstop" 或 "softtabstop" 决定插入空白的数\
" 目. "shiftwidth" 只用于文本左移或右移 "shift-left-right".
" 插入空白的具体方式 (制表还是空格) 取决于 "expandtab" 选项.另见
" "ins-expandtab".如果没有置位 "expandtab",通过使用 <Tab>,使空格数目
" 减到最小.
" 注意: 如果置位 "compatible",该选项被复位.
set smarttab

" "linebreak" / "lbr"   (缺省关闭)
"{仅当编译时加入 "+linebreak" 特性才有效}
"如果打开,Vim 会在 "breakat" 里的字符上,而不是在屏幕上可以显示的最后
"一个字符上回绕长行.和 "wrapmargin" 和 "textwidth" 不同,此处不会插入
"<EOL>,它只影响文件的显示方式,而不是其内容. "showbreak" 的值会出现在
"回绕行的前面.
"
"如果 "wrap" 选项关闭或 "list" 打开,不使用本选项.
"注意 <EOL> (屏幕上的) 之后的 <Tab> 字符在多数情况下.不会显示正确数量
"的空格.
set lbr

""""""""""""""""""""""""""""""
" => Indent
""""""""""""""""""""""""""""""
" "autoindent" / "ai" (缺省关闭) 启用自动缩进
"开启新行时 (插入模式下输入 <CR>,或者使用 "o" 或 "O" 命令),从当前行复
"制缩进距离.如果你在新行除了 <BS> 或 CTRL-D 以外不输入任何东西,然后输
"入 <Esc>,CTRL-O 或 <CR>,缩进又被删除.移动光标到其它行也有同样的效果,
"除非 "cpoptions" 里包含 'I' 标志位.
"如果打开自动缩进,排版 (用 "gq" 命令或者插入模式下到达了 "textwidth")
"使用第一行的缩进距离.
"打开 "smartindent" 或 "cindent" 时,缩进的修改方式有所不同.
"置位 "paste" 选项时, "autoindent" 选项被复位.
"{Vi 稍有不同: Vim 里输入 <Esc> 或 <CR> 删除缩进后,上下移动把光标放在
"删除的缩进之后;Vi 则把光标放在已删除的缩进的某处}.
set autoindent

" "smartindent" / "si"  (缺省关闭)  开启新行的自动缩进
"{仅当编译时加入 "+smartindent" 特性才有效}
"开启新行时使用智能自动缩进.适用于 C 这样的程序,但或许也能用于其它语
"言. "cindent" 类似,它多数情况下更好,但更严格,见 "C-indenting".如果
"打开 "cindent", 置位 "si" 没有效果.
" "indentexpr" 是更高级的替代方案.
"通常,使用 "smartindent" 时也应该打开 "autoindent".
"
"在这些情况下自动插入缩进:
"   - "{"           结束的行后.
"   - "cinwords"    中的某个关键字开始的行后.
"   - "}"           开始的行前 (只有使用 "O" 命令才会).
"在新行第一个输入的字符如果是 "}",该行使用匹配的 "{" 相同的缩进.
"在新行第一个输入的字符如果是 "#",该行的缩进被删除, "#" 被放到第一列.
"下一行上,恢复原来缩进.如果你不想这么做,使用下面的映射:
"   ":inoremap # X^H#"
"其中的 ^H 用 CTRL-V CTRL-H 输入.
"使用 ">>" 命令时,'#' 开始的行不右移.
"注意: 如果置位 "compatible",复位 "smartindent".如果置位 "paste",关
"闭这里的智能缩进功能.
set si

" "cindent" / "cin" (缺省关闭) 打开自动 C 程序的缩进
"{仅当编译时加入 "+cindent" 特性才有效}
" "cinkeys" 说明如何设置插入模式下启动重新缩进的热键, "cinoptions"
"说明如何设置你喜欢的缩进风格.
"如果 "indentexpr" 非空,它否决 "cindent" 的设置.
"如果没有打开 "lisp",而 "indentexpr" 和 "equalprg" 都为空, "=" 操作
"符使用本算法缩进,而不调用外部程序.
"见 "C-indenting".
"
"如果你不喜欢 'cindent' 的工作方式,可以试试 "smartindent" 选项或者
" "indentexpr".
" 如果置位 "paste",不使用本选项.
" 注意: 如果置位 "compatible",本选项被复位.
if has("cindent")
    set cindent
endif

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Spell checking
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
map <leader>sn ]
map <leader>sp [
map <leader>sa zg
map <leader>s? z=

""""""""""""""""""""""""""""""
" => VIM
""""""""""""""""""""""""""""""
if has("autocmd") && v:version>600
    au BufRead,BufNew *.vim map <buffer> <leader><space> :w!<cr>:source %<cr>
endif

""""""""""""""""""""""""""""""
" => HTML related
""""""""""""""""""""""""""""""
" HTML entities - used by xml edit plugin
let xml_use_xhtml = 1
"let xml_no_auto_nesting = 1

"To HTML
let html_use_css = 0
let html_number_lines = 0
let use_xhtml = 1

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => MISC
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Windows系统的换行符为\r\n,而Linux/Unix系统则为\n.因此,在Windows里编辑
"过的文本文件到了Linux/Unix里,每一行都会多出一个^M.
"命令中的 "^M" 是通过键入 <ctrl-v><enter> 或 <ctrl-v><ctrl-m> 生成的.
"可以在用以下命令清除该字符:
noremap <leader>m :%s/\r//g<CR>

"Paste toggle - when pasting something in, don't indent.
"set pastetoggle=<F3>

"移除空行的缩进
map <F2> :%s/s*$//g<cr>:noh<cr>''

"Super paste
ino <C-v> <esc>:set paste<cr>mui<C-R>+<esc>mv'uV'v=:set nopaste<cr>

© 2010 阿单工作室 Suffusion WordPress theme by Sayontan Sinha