2010-01-23

关于twitter的一些人一些事

当王丹@wangdan1989在twitter上现身的时候,我像是见了千年僵尸一样兴奋,我马上follow他,并问他是不是真的是那个写《没有烟抽的日子》的王丹。一大堆问题在大脑中涌现,我想问他20年前紧不紧张、兴不兴奋、有没有快感,但我很快就觉得自己像个欧巴桑,很无聊打住了。

后来余杰@yujie89也在twitter上冒头了,我马上问他怎么没在网上写文章啊。余杰回我说他一直在写,只不过被封锁了,在博讯网上有。

人就是这样,对曾经喜欢过的人或物总是难以释怀,即使已经和曾经的自己分道扬镳了。王丹对于我是大叔,一代名人,但我对他并没有太多的感情,余杰就不同了,他曾是我最喜欢的作家,他早期的作品我几乎都看了,他对我是有过影响的。

余杰现在的文章有很多是我看不下去的。一方面是他现在的文章让我觉得他已经沦为一个滥用语言暴力的愤青,另一方面是我对他的宗教不感冒。我并不反以信仰,相反,我觉得人在成年后坚持单纯的信仰是需要勇气的。我小时候也有信仰,但我现在已经不敢面对我的神了。

我跟余杰建议,希望他能开个博客,自己打理。我极不喜欢博讯这个连RSS都不支持的网站,它是那么死气沉沉。我不想余杰只使用twitter,140个字符最终只能让语言变成口号,即使每句都是醒世格言,一天读下来也只会让人觉得你是在装B。我不希望余杰在twitter上疯掉。和菜头@hecaitou在余杰上推不久就狠狠地给了他几棒子,有时候余杰确实应该审视自己的言行和学习网上的行为规则。

我始终不喜欢twitter,即使我现在每天在它身上花的时间越来越多。

我是差不多同时注册plurk和twitter的,我喜欢plurk的界面,喜欢它的搜索,喜欢它的回复方式,我曾经决定将plurk作为我的主要微博,但最终我不知不觉地变成twitter的用户,个中原由:1.是开放的力量,twitter开放api,分身无数,手机界面虽然简陋却有功能完善的奶瓶腿,虽然被墙被依然可以在墙内使用;2.是分享的力量,这主要是我自己设置造成的,我的plurk账号不加任何人为好友,也不开放访问。

大约半成前,有人研究说twitter会降低人的智商。我是这样看这个问题的,当关注的都是同一类人,看的都是同一类推时难免就会觉得这是世界的全部,人也就容易变得偏激。140个字符严重限制了表达的广度和深度,你可以说浓缩就是精华,但没有前后语境的配合,没有全面的阐述,这精华也只是一句口号罢了。

太过于沉迷twitter以致于影响到我的思维,当我要写博客时,那些观点一个个在我的脑子里飞舞,我努力地抓住它们,却发现只是一个个零散的句子,难以组成一篇完整的文章(这篇文章也许是个不错的佐证)。同时我对长文的耐性也降低了,当我打开google reader,看到长篇的文章总是极不耐烦,看到中间就看不下去,直接跳到结尾。甚至有时只看下标题,想一下大概会写什么就直接点下一篇了。twitter也把我已经破碎的时间敲打得更加破碎,发一条推看一条推只需要几秒钟,但却使得一两个小时心神不宁。

当然,这或许并不是twitter的问题,或许是我已经出现了老年痴呆症的先期症状所导致的,而我自己又死要面子死不承认,把这责任推给twitter,或许是因为我智力低下,意志薄弱才会出现这些负面作用。你看看人家霍炬@virushuo,也玩twitter,发的推比你多多了,可也不见人家把正事落下,写起博文来清晰明了,见解深刻。

但我已然决定集中看推的时间减少发推的数量,尽可能每天不多于3推。

谣言很难在twitter上传播,但twitter却很难避免断章取义。要在140个字符内客观完整地概括别人的观点,带上原文的链接,再加上自己的评论这几乎是不可能的。(我不否定某些大牛,某些情况下可以做到。)为了适应这140个字符就不得不截取某一个观点,用短链接,用标签化的评语。

短链接很糟糕。它使得我对链接的目标完全失去判断能力,正常的链接我可以作出一个大致的评估:这个链接到那个网站,文章的可读性会有多高,我会不会浪费时间。对于短链接,只有我点进去了,我才能知道这到底是个什么网页。这让我越来越不喜欢点击twitter上的链接,越来越少去看原文。短链接的另一个缺点是增大了链接失效的概率。短链接服务的中止、宕机、被墙都会使用本来可以访问的链接失效。

如果有人在twitter上说我是SB,以我的性格我一定会问他何以见得,因为我想知道自己是否真的那里犯傻了,力争以后避免,但对方多半会直接回我说:“SB都是自证的。”得,我知道我哪里犯傻了。我真的是很想与对方交通。类似的标签还有“脑残”、“弱智”等。我发现以前人们喜欢以道德人品否定他人,后来他们也意识到这样的招数很傻,现在越来越多的喜欢拿智商说事了,讨论问题是个智力过程,从智商上否定对方,自然可以让对方完败。他们还发明了一套理论:你永远无法说服脑残,他们会把你的智商拉到和他相同的水平,之后再利用自身对规则的熟悉击败你。这样的标签事实上不利于人的正常交流。

在twitter上一条推经过三次不同形式的转发,并加上评论后,要分清其中的某一句话是谁说的是件非常困难的事。所幸大家都注意到这个问题,现在转发、评论的格式越来越统一了。

我始终觉得,twitter一开始设定140个字符有利于微博这个概念的确立,但在微博已被大众所接受时,140个字符却是一种束缚,防害了自由的表达。当然这也可能是我这个老家伙已经跟不上时代了。长篇大论的时代已经过去,言简意赅,单句,才是现在的趋势将来的潮流。君不见大多数推连50个字符都不到吗?人们的评论、留言、博客都也越来越短吗?twitter已经在改变人们的表达方式。

twitter并不是个平等社会,有的人follow者上万,有的人follow寥寥无几,有的人随便问个问题就会有很多人帮着解答,有的人只能自说自话。在twitter上最容易引起响应的话题有两个:政治和色情。

政治容易引起回响是因为我们生活在一个“你不关心政治,政治会主动来关心你”的社会。每个人都有不平,不平则鸣,再加上twitter本身的特点,本身的遭遇,很自然地成为一个发泄的窗口。很多人(像冯正虎@Fzhenghu)理应受到更多人的关注,他们的声音应该让更多的人听到,他们需要更多的力量。但那些开口闭口都是政治的人我是不follow的,在我看来,这个账号首先得是个有情感、活生生的人,之后他才能去谈政治。这方面冉云飞@ranyunfei是我见到的做得最好的一个,他很理性、热情,坚持自己认为对的东西,他也谈和别人对喝酒、也谈教女儿古文,每天依然在写博客。冉云飞和霍炬曾就是否公开twitter的第三方网站展开讨论,但即使是在谁也说服不了谁的时候,他们也没有一方拿起道德棒子一方拿起科技铲子,试图把对方砸晕或是铲倒,这才是人该有的气概。

色情也很好理解,食色情也嘛。但我反对那些声称要吸引更多的人来twitter而发色情推的作法。如果你自己喜欢那随便发,但是不要用这么冠冕堂皇的理由。我一向认为看色情的东西是不用翻墙那么辛苦的,我收藏夹里的网站一直都可以正常打开,我虽然没有小张专业,但要我在一个下午找出二三十个可以正常访问的黄色网站怕也不是难事。那些网特啊、五毛啊是不会认真去灭这些网站的。谁没一点需要啊,在写了那么一大坨恶心的评论后,他们怎么会不找个网站舒缓一下呢?只有那些抄服务器的才热忱于干这件事,抄回去直接硬盘对拷,比下载快多了。

不过,当西乔@arthur369在twitter上说霍炬体力好时间长的时候,当@maoz说和@jason5ng32做到5点的时候,我还是为这些人妻的大胆言论吓了一跳,后来一想这或许就是大人的谈话方式,就像宿舍的卧谈会总是离不开女生的波一样,只是我还不习惯。当我在宿舍聊天时,我明确地知道接收的对象和传播的范围,而在twitter这是不可估量的。twitter在改变我对隐私的定义。

说政治是被逼的,谈色情只是生活的一点点缀。在现在的twitter中文圈,最珍贵的是那些坚持记录生活的推友,也许这样的人并不在少数,只是要发现他们是很难的,没有多少人会RT另一个人吃饭、睡觉、看电影的记录。我follow的比较生活化的只有@darktoy和@danzhu,我很高兴他们也follow了我,这样我在看他们的推的时候不会太觉得自己是在偷窥。@danzhu有个到处跑的职业,当我看着她的推时,我总在想她真好,如果我是她我就把我的游记写遍整个中国。

这乱七八糟的东西算是我这一年的感受吧。


豆瓣认领
doubanclaimad3cddee5c862878

(完)

2010-01-20

现时使用的火狐插件

火狐忽然罢工,不得已重装,为了找回以前用的插件花了不少时间,现在把安装的插件记录一下,以后就不用找得那么辛苦了。

Abduction!    网页截图。好处是可以选取网页的任何部分,也可以选取整个网页,启动速度快。但保存的图片的格式只能是png格式,自身也没有编辑图片的功能。

BatchDownload    批量下载图片。整个网页的图片按三下键全部下载。爽!

Cooliris    纯装13用。

Coral IE Tab    可以切换到IE内核,并保存当前的用户、表单等信息。

DownloadHelper    下载网页中的视频、音频。

Easy DragToGo    超级拖拽,地球人都需要。

Echofon万能版        用来发推,不常用,在这里下载的。

Firebug        一个了不起的插件。

FireFTP        把火狐变成FTP客户端,很好用。

FoxyProxy Standard    现在网络的必备插件。

Google Toolbar for FIrefox    基本上我只使用它的翻译功能,鼠标指向英文显示中文意思,很实用。

LiteMediaHunter    下载网页中的视频、音频。好处是它能很好地识别文件的中文名,并且没有时限,只要曾在网页中打开就可以下载。和DownloadHelper 一样对于优酷视频依然只能下载开头的7分钟。 到这里下载。

RefControl    Google Reader中订阅新浪博客,总是没法显示,装上之后就可以正常显示了。

ScrapBook    保存网页。

Ubiquity    理念非常棒,要掌握它我还要多努力。

Vimperator    以vim的方式操作Firefox。教程可见这里

Xmarks    同步书签,已被墙。

Greasemonkey    运行一些脚本。现在安装的脚本有HTTP-to-HTTPS redirector(强制以https方式打开网页)、TubeWall-2(翻墙看Youtube视频,在这里下载)、Google Reader UI Tweek(把google reader界面简化,在这里下载的)。

(完)

2010-01-16

Vim的选择复制粘贴

在vim中选择文本要进入Visual mode(反白模式),有三种方法进入Visual模式,它们分别是:

v    以字符为单位进行选择
V    整行选择,以行为单位
C-V 块选择,以当前位置为端点作矩形选择

进入Visual模式后移动光标(参考这里)。选取内容后,再按y就可以复制选取的内容了。

y是vim的复制命令。在Visual模式中按y会复制选取的内容,而在Normal模式按y会复制当前字符,按yy会复制当前行。这又是vim古怪的地方,它可以不经选择直接复制。

在windows系统中复制内容A,再复制内容B,之后粘贴时,只能粘贴内容B,无法选择粘贴A或者AB一起粘贴。因为复制的内容存放到windows系统的粘贴板中,而系统粘贴板可能保存一次的内容。vim没有使用windows系统的粘贴板,而是使用自己的Register(寄存器),并且可以多个,可以自定义。

:reg    查看寄存器的内容
"a        定义一个名为a的寄存器。"表示定义寄存器,a是这个寄存器的名称,可以是[0-9,z-a]中的任一个字符。
"ay        表示定义寄存器a,并复制内容到寄存器a中。

有两个寄存器是比较特别的,要特别留意。

""    这是一个匿名的寄存器,当没有命名寄存器就直接使用复制/删除(如y或dd)命令时,删除或复制的内容将被存放到这个寄存器中。对,删除的内容了跑到寄存器中。

"+    这个寄存器事实上就是系统的粘贴板。如果要从vim中复制内容到其它程序中,就要指定把内容复制到这个寄存器中 ,即使用“"+y”命令。

p    是vim中的粘贴命令,相当于记事本中的ctrl+v,在Normal模式中按p将在当前字符后粘贴匿名寄存器的内容,如果要粘贴寄存器a中的内容,则要使用使命“"ap”。如果要粘贴系统粘贴板中的内容,则要使用命令“"+p”或“shift+insert”,后一个命令在所有模式都可以使用。

这样用起来很不方便,足以证明vim是个很差劲的编辑器。还好vim有键盘映射,可以在vimrc中绑定适合自己的按键。

(完)

Vim的光标移动

vim能成为最好的编辑器的原因之一在于它提供丰富快捷的移动方式,使得用户可以以最快的方式把光标移动到想要编辑的地方。下面是我收集的一些光标移动的命令。

gg/G    移动到文件开头/移动到最后一行
h/l        左移/右移一个字符
j/k        下移/上移一行
gj/gk    下移/上移一屏幕行
-/+        移动到上一行/下一行的第一个非空字符
)/(        向前/向后移动一个句子
}/{        向后/向前移动一个段落
H/L        移动到屏幕顶端/底端
G        移动到屏幕的最后一行
55G        移动到第55行(55可换成其它数字)
0/$        移动到行首/行尾
'.        移动到最后修改的那一行
`.        移动到最后修改的位置
<C-O>/<C-I>        沿着移动记录向回跳/前跳
<C-U>/<C-D>        向上/向下翻半屏
<C-B>/<C-F>        向上/向下翻一屏
:ju        列出光标移动的足迹

任何一个初学者见到这些移动光标的命令都会晕菜吧。但作为一个初学者只要掌握了 h j k l 四个命令就可以把光标移动到文档的任一角落了。当觉得移动不是很方便时再学习<C-D>、<C-U>、gg、G 以及其它命令。只要使用vim,需求带动学习,学会这些命令只是水到渠成的事。

单是这些还不是vim移动方面的所有功能,vim的标记功能也为光标的移动带来便捷。当然,标记并不单单是用来方便光标移动的。

ma        使用命令m标记当前位置为a。a可以是[a-z]中的任一字符。
'a        跳转到标记a

使用小写字母的标记只能在当前文档使用,如果同时编辑多个文档,想在多个文档中跳转,那么可以使用大写的英文字母[A-Z]标记。像mY,'Y。

(完)

2010-01-15

Google扬言可能撤出中国大陆

2009年是多事之秋,但那点破事跟2010年一比根本不值一提,想不到今年“历史正文”标签下的第一篇文章居然是写google扬言要退出中国大陆。

2010年1月13日,google在其官方博客上发表了一篇名为《A new approach to China》(《在中国的一个新做法 》)的文章(原文请看这里),下面的译文来自这里

     就像很多其他著名的组织,我们经常地面对各种程度的网络攻击。去年十二月中旬,我们侦测到了一次来源于中国,针对我们公司基础设施的高度复杂和目标明确地攻击,并导致了 Google 知识财产的失窃。无论如何,这次事件很快就显露无疑-虽然表面上只是一次严重的安全事故,但实际上其实是完全不是。

    首先,这次攻击并不只是针对 Google。在调查中我们发现至少另外 20 家不同类型的公司,包括网络、金融、科技、媒体以及化学部门,都受到了类似的攻击。我们正在通知这些公司,也正和有关的美国政府机构一起工作。

    第二,我们有证据表明这些攻击者的主要目标是侵入一些中国人权活跃分子的 Gmail 邮件帐户。根据我们目前的调查,他们的攻击并没有完全达到这个目标。只有两个 Gmail 帐户显示被侵入,而且此侵入只限于帐户信息(如帐户创建的日期)和邮件主题,而不是邮件的内容。

    第三,作为这次调查的一部分,但是独立于对于 Google 的攻击,我们发现了许多向中国宣扬人权的美国、中国和欧洲的 Gmail 用户被第三方进行了常规性侵入。这些帐户的侵入并非通过 Google 的安全漏洞,而很可能是通过安装在这些用户电脑的钓鱼软件或者恶意软件。

    我们已经利用从这次攻击中得到的信息,作出了相关基础设施和结构的改进,用以增强保护 Google 和我们用户的安全。对于个人用户,我们会建议他们在电脑上安装可靠的反病毒和反间谍软件的程序,安装他们所使用的操作系统的补丁并更新他们的网络浏览器。他们应该一直都要注意在点击即时信息和邮件里面的链接,或者在被要求披露像密码这类个人信息的时候保持谨慎。你可以在这里阅读我们更多关于网络安全方面的建议。需要更多的了解关于这些攻击的人士,可以阅读这份美国政府的报告(PDF 格式文档)、Nart Villeneuve的博客以及这份关于 GhostNet 间谍事件的报告。

    不仅是因为我们在这次事件中挖掘出来的关于安全和人权方面的暗示,还因为这些信息已经深入到一场关于言论自由的国际性辩论,所以我们采取了这些不同寻常的措施来披露这些信息。在过去的二十年中,中国的经济改革方案和其国民的创业精神使到数以亿计的中国人民脱离贫困。的确,这个伟大的国家今天已经处于当今世界的大多经济进步与发展的中心。

    在2006年1月,尽管我们对于需要过滤某些搜索结果感到非常不安,但是出于为了让中国人民能够更加便利地获得信息和一个更加开放的互联网之考虑,超过了这些顾虑,我们发布了 Google.cn。在那个时候我们明确地说明了“我们会谨慎监察中国的状况,包括新的法律和其他关于我们服务的规定。如果我们觉得我们不能够达到我们提出的目标,我们就会立即y重新考虑我们在中国的做法。”

    这些攻击以及由其所揭开的监控行为,加上近年来进一步限制网络言论自由方面的尝试,使我们得出我们应该重新审视我们在中国进行商业活动可能性的结论。我们已经决定我们不再愿意继续在 Google.cn 里面对于搜索结果的过滤、审查,所以在接下来的几周我们会与中国政府讨论我们能否在现有法律框架之内运行一个不经过滤的搜索引擎的可能性。我们知道这有可能意味着我们需要关闭 Google.cn ,甚至我们在中国的办事处。

    作出这个重新审视我们在中国的商业活动的决定是异常困难的,而且我们知道此会导致一些潜在的、十分深远的影响。我们希望澄清-这是由我们在美国的高管们所决定的,并没有任何的我们在中国的员工知悉和参与。Google 在中国的员工为今天 Google.cn 的成功作出了巨大地努力。我们承诺我们将会负责任地去解决这个问题。

发布者:高级副总裁、企业发展和首席法律官-大卫·德鲁蒙德

此文一出一言击起千层浪,在我所看到的中文互联网上人们纷纷表示支持google,甚至还有人跑到谷歌中国的办公室献花,更有甚者哭爹喊娘,表示不舍,似乎google.cn真的那么重要似的。

我坏坏地想也许是google在和天朝政府谈判的时候受够了天朝摆出的一副有钱有人,我的地盘得听我的,不听你就一分钱也别想拿走的架势,无耐发表这么一篇文章显示一下自己的影响力,增加谈判的筹码。网民的反应很好地响应了google。当然胡哥和天朝是不会给google面子的,而google想必也做好了最坏的打算。

我是google的重度用户,我在想google退出中国对我来说有什么影响?我写不了博客?我不能使用google搜索了?我不能使用google reader?我的帐号被停用?google的退出表明的是他对天朝互联网政策下的市场的失望。并不意味着它不能继续在这片土地上圈钱,说不定可以比以前赚得更多。我已经有很长一段时间“带套”访问google了,它是否被墙对我来说根本无所谓。

去年我曾想过要写一篇叫《把google引向GFW》的文章,主要想表达的是利用google提供的各项服务,宣传GFW,提供翻墙工具。这样即不用花什么钱又可以检验google的品质。这篇文章最后没写,因为自己觉得太无聊了。现在这个心愿看来有实现的希望。google手里应该有不少有趣的技术,若它自动拿来与GFW对着干,虽不一定能胜利,但必定有一些有趣的火花。

现在谁也不能退却。天朝政府如果对一个美国公司退却,必将引起雪崩,会有无数的中国公司想尽办法把自己变成美国公司;google若退却那么它将再也无法号召起这么大的声浪。如果双方都退却,那这个世界就很让人失望了。

我总觉得随着网络的深入,政府将被公司所取代,我很高兴这声社会变革的第一场战争是发生在我现在生活的这个时空。我终于看到血红天际的黑云。


PS 1 :兰小欢用经济利益去分析google的行为似乎引起很多人的不满,我不认为经济利益和社会责任、道德是对立的。每一个用户都有责任让那些公司知道,负起力所以及的社会责任,遵守不作恶的原则,符合它们最长远的经济利益。

PS 2 :国内的很多网民人云亦云,说话不过脑子。他们说谷歌拼音很好用,他们说chrome已经是他们的主力浏览器,他们说谷歌音乐是高科技,他们说用google.cn搜索论文。他们都在骗我这个下里巴人。

(完)

2010-01-09

[ASP]下拉列表、单选按钮动态取值

asp网站在修改文章时,接收到传递的ID,修改页面的下拉列表、单选按钮都默认显示出文章在数据库中的选项,这一点很重要。要实现这一点,主要是通过判断该值是不是数据库中的值,是则为该项添加“slelected”属性,不是则不添加。下面的代码中要用到数据库中的两个表news(文章表)和type(分类表),各有字段若干。完整的查询、判断、显示代码如下:

<%
sql="select * from news where id="&request("id")
set rs0=server.createobject("adodb.recordset")
rs0.open sql,conn,1,1
%>
<!--第一个查询。根据传递的“id”,查询表“news”。-->
首页显示:
    <select name="xs" id="xs">
        <option value="1" <%if intValue=1 then response.write " selected"%>>
            显示
        </option>
        <option value="0" <%if intValue=0 then response.write " selected"%>>
            不显示
        </option>
        <!--我不明白“intValue”的意思,但是此法行得通。也可以把“intValue”代换成“rs("xs")”。-->
    </select>
<!--上面的代码适用于只查询一个表的情况,当涉及到两个表时,要修改一下,如下-->
分类:
    <%
    set rs1=server.createobject("adodb.recordset")
    sql="select * from type"
    rs1.open sql,conn,1,1
    %>
    <!--第二个查询。查询数据库中的分类表“type”。-->
    <select name"typeid" id="typeid">
        <% do while not rs1.eof %>
            <option value="<%=rs1("typeid")%>" <%if rs1("typeid")=rs0("typeid") then response.write " selected"%> >
                <%=rs("type")%>
            </option>
            <!--重点是“rs1("typeid")=rs0("typeid")”,这样当数据库中分类的id与文章分类id一致时,该分类就会成为默认-->
        <%
        rs1.movenext
        loop
        %>
    </select>
    <%
    rs1.close
    %>
    <!--上面是下拉列表的动态取值。-->
    <input type="radio" name="tp" value="1" <%if rs0("tp")="1" then%>checked="<%response.write("checked")%>" <%end if%> />有图;
    <input type="radio" name="tp" value="0" <%if rs0("tp")="0" then%>checked="<%response.write("checked")%>" <%end if%> />无图
    <!--上面是单选按钮的动态取值-->
<%
rs0.close
set rs0=nothing
conn.close
set conn=nothing
%>

(完)

2010-01-06

Vimperator入门

此文来源于一篇叫《玩酷的vimperator教程》的文章,我是在这里看到的。我按照我的学习使用体会,对文章的局部进行重新排版,针对目前最新的Vimperator2.1进行了一些修改,添加了一点点内容和图片。版权为原作者所有。

Vimperator是什么?从虚来说,它是一种信仰,一种生活方式;从实来说,它是一个把Firefox(fx)的操作变成Vim式的fx扩展,它给fx提供了与Vim相似的快捷键,使fx变成了有“模”的浏览器。从而无论是 fx 的外观,还是 fx 的行为,都像极了 Vim。详情可以查看它的官方网页:http://vimperator.mozdev.org。可以说,有了Vimperator,就有了几乎完控fx的一切。当然,要耍酷,得付出点代价,得记住各种命令和快捷键,若你是vim的熟手,那就太容易不过了;若不是,估计你安装完vimperator,重启fx后就会傻眼:面对既没有菜单栏,也没有工具栏的 Firefox,可能会感到无所适从。开启方法是输入:set go=mT。m表示menu(菜单),T表示Toolbar(工具栏)。如果需要显示状态栏的话,就输入:set laststatus=2。即使这样,你也会发觉以前熟悉的fx快捷键几乎都没啦,咋办:按下Ctrl-z,你就会发现fx默认的快捷键又可以用了。要重新回到vimperator下,只需要按下Esc键。这里以vimperator2.1版来详细介绍下它的用法!先约定下表达方式:

  • Ctrl-x的另一种表示<C-x>;Alt-x 表示为 <A-x>;Shift-x 表示为 <S-x>
  • 很多操作既可以在normal mode下运行,又可以在command mode下运行,这里用“/”来表示,如:u对应的是:undo,就表示为 u/:undo
  • 有些操作有相反两个方向,这里用<-->表示,如:左右移动滚轴  h <--> l
  • 命令前后的数字,都可以换成任何数字

1.打开链接

:o[pen]/o     /*在当前标签页打开*/  
:t[abopen]/t  /*在新标签页里打开*/ 
:winopen      /*新开窗口实例打开*/

例子
:o  ../user/file.txt       /*打开$HOME目录下的file.txt文件*/
:t  google 水木        /*在新的标签页打开谷歌并搜索“水木”*/
:o 水木社区      /*在fx默认搜索引擎里搜索“水木社区”,由’defsearch’来设定默认引擎 */
:t  bbs.newsmth.net, bbs.lqqm.net, news.sina.com.cn    /*用3个新标签后台打开这三个网页*/

2.标签页

:2bd/:2tabc/2d    /* 关掉当前标签及右边紧邻的标签;2D是关掉当前及左边的标签 */
:3u[ndo]/3u      /* 重新打开最近关掉的3个标签 */
:qall/:winclose/ZQ    /* 退出fx,不保存各tab地址 */
:xall/ZZ                    /* 保存tab地址退出,重启fx后可以重新打开这些标签 */
g0/:tabfirst <--> g$/:tablast              /* 到第一个或最后一个标签 */
gT/<C-p>/:tabp <--> gt/<C-n>/:tabn        /* 到前一个或后一个标签  */
b5<CR>                  /* 到第五个标签,<CR>指回车 */
<C-o>/:ba <--> <C-i>/:fo  /* 前进或后退 */
<C-6>                   /* 可在标签栏上来回切换最近浏览过的两个标签 */ 
r              /* 刷新 */

3.在页面移动

<C-f> <--> <C-b>    /* 上下卷动一屏 */
<C-d> <--> <C-u>    /* 上下卷动半屏;可由’scroll’来定制 */
gg <--> G    /* 到页面顶部/尾部;45gg/45G 指到页面45%处*/
0 <--> $     /* 到页面最左端/最右端 */ 
h,j,k,l   /* 上下左右移动页面 */
                gg
                3k
                 |
  0, 3h ----+----- 3l, $
                 |
                3j
                G
2gi       /* 光标定位到当前frame的第二个输入框 */
]f<--> [f      /* 前进后退一个frame,对于存在框架的网页(比如谷歌图片搜索)要使用这个命令 */
]]<--> [[      /* 浏览一些论坛时的“下一页或上一页”,可由’nextpattern’定制 */

4.搜索当前页面

/pattern<CR> <--> ?pattern<CR>       /* 往下/上搜索pattern,支持正则 */
* <--> #      /* 往下/上搜索当前光标处的词,最好进入caret mode,好操作 */
:上面两种情形都可以用 n/N来下/上寻找下一个匹配

5.链接地址:URL

y<--> p          /* 把当前URL拷贝到粘贴板或把粘贴板上的URL在当然页打开 */
P           /* 大写的P是在新标签页打开粘贴板里的URL   */
注:Vimperator没有地址栏,对网页的修改很不方便。比如因为特殊的环境常要把http改成https,但这样的操作会变得很不方便,建议给fx装上Greasemonkey,再装上HTTP-to-HTTPS redirector 脚本,这样可以自动转成https。
gu          /* 到URL的上一层目录 */
gU          /* 到URL的根目录    */
<C-a><--> <C-x>   /* 把URL最后一个数字增加/减少1,然后打开 */
例如:
2gu 是指从http://www.example.com/dir1/dir2/file.htm到 http://www.example.com/dir1/
<C-a>是指从 http://www.example.com/2008.htmhttp://www.example.com/2009.htm

6.打开链接

在一个页面按f键,进入QuickHint mode(作者给取了这个名字),就会发现所有的链接都被数字编号了,此时只要你输入那个数字或者链接中部分关键词,就可以在当前页进入那个链接了(F是在新标签里打开)。

7.书签QuickMarks

QuickMarks  是Vimperator的书签解决模式,通过它可以很快速地打开网站,代价是要记住所有书签,并且最多只能添加42个书签。添加书签的方式是撕开要添加书签的网页,按M,再按[A-Za-z0-9]中的任意一个键,这个键就是当前网页的快捷键。详细的命令如下:
M+快捷键           /* 添加当前网页的快捷方式 */
:qmark+快捷键           /* 添加当前网页的快捷方式 */
go+快捷键           /* 在当前页打工指定的快捷网址 */
gn+快捷键           /* 在新标签页打开快捷网址 */
:delqm+快捷键           /* 删除指定的快捷键 */
:qmarks           /* 显示所有的快捷网址 */

8.页面

g<C-g>/:pageinfo      /* 查看当前页面信息 */
gf/:viewsource     /* 查看当前页源代码 */
zi <—> zo      /* 放大/缩小当前页,zoom in/out */
r/:reload <--> <C-c>/:stop     /* 重新载入当前页或停止载入当前页*/

9.调用fx的各种属性

:pref                     /* 调出fx的option对话框 */
:pref!                     /* 调出fx的about:config  */
:addon                    /* 调出fx的扩展对话框  */

           addons          /*  调出fx的扩展对话框 */
:dialog    checkupdates      /* 调出升级对话框 */
           console          /* 调出控制台 */
           downloads        /* 调出历史下载列表 */

9. ex命令、选项、配置文件及插件

A)  ex命令,也就是按下冒号后输入的命令,下面介绍几个最常用的
:cd           /* 切换当前目录 */
:pwd          /* 显示当前目录 */
:restart         /* 重启fx */
:saveas        /* 保存页面 */
:hardcopy      /* 打印当前页面 */
:set           /* 设置选项 */
:mkv          /* 建立配置文件 */
:!cmd          /* 可以执行系统命令 */

B) 选项设置
有5种数据类型
布尔型        例如:  set ic            /* 忽略大小写;反之则set noic */
数字型        例如: set ls=2,         /* 总是显示状态栏 */
字符串型      例如: set titlestring=fx    /* 把标题栏名字改为“fx” */
单字符串型    例如: set go=mT         /* 显示菜单栏和工具栏 */
串列表型      例如: set act=tabopen,paste  /* 自动激活:tabopen和y,Y命令 */

set命令的几种用法
:set                     /* 显示所有和默认不同的设置 */
:set all                   /* 显示所有设置 */
:set {option}?             /* 显示option的值 */
:set {option}&             /* 重新设定option的值为默认的 */
:set all&                  /* 重新设定所有option的值为默认的 */
:set {option}+={value}           /* 把option的值在原来基础上加value */
:set {option}-= {value}      /* 把option的值在原来基础上减value */
注:在配置文件里set命令前的冒号可以省略

C) 配置文件和插件
Vimperator可以有配置文件,文件名是.vimperatorrc或者_vimperatorrc,该文件所在的目录是系统变量$HOME所定义的位置
在unix/linux下一般为:  ~/
在Windows下一般为:  C:\Documents and Settings\user\
并且还可以设置一个用户变量或者系统变量$VIMPERATOR_HOME来改变vimperatorrc所在目录的位置,并且$VIMPERATOR_HOME优先度大于$HOME(强烈建议作者把vimperator扩展所在的相对目录也可存放配置文件,这样把fx放在U盘里,就不用麻烦还要拷贝配置文件到另外一台机子上的$HOME目录)Vimperatorrc里可以是ex命令,也可以是js脚本。你既可以新建这个文件,也可以在fx里用命令 :mkv来自动建立这个文件。并且vimperator还可以拥有插件,全放在vimperator目录下,插件都是些js脚本。而“vimperator目录”与配置文件所在目录一样。例如如果你需要hint mode下的链接编号为字母的话,就需要在http://vimperator.mozdev.org/scripts.html 下载插件char-hints.js 放入vimperator目录中,然后重启fx,或者用:source命令使之生效。目前绝大多数网上的插件都是日本人写的。

附一我的简单vimperatorrc文件
"------------------------------------------file begin-----------------------------------------------------
"2.1 (created: 2010/01/03 13:13:06)

set guioptions=mbT
noremap <C-c> <C-v><C-c>
cnoremap <C-c> <C-v><C-c>
inoremap <C-c> <C-v><C-c>

set nextpattern=\s*下一页|下一张|下页\s*,\bNext|next\b,^>$,^(>>|»)$,^(>|»),(>|»)$,\bmore\b
set previouspattern=\s*上一页|上一张|上页\s*,\bprev|previous\b,^<$,^(<<|«)$,^(<|«),(<|«)$

set titlestring=Fvim
set editor=gVimPortable -f
set guioptions=nN
map! <C-l> :!d:\green_soft\gVimPortable\gVimPortable.exe<CR>
" 解决vimperator与Google reader跟gmail快捷键冲突,自动PASS THROUGH状态
autocmd LocationChange .* :js modes.passAllKeys = /mail\.google\.com/.test(buffer.URL) || /google\.com\/reader\//.test(buffer.URL)

"------------------------------------------file  end-----------------------------------------------------

附二Vimperator常用命令图:
vimperator

(完)

2010-01-04

我使用的vim插件

这份是我目前使用的vim的插件的清单,顺便也整理了安装方法、优化设置、和使用感受等,另外我安装的插件还有《vim中安装游戏》一文中提到的两个游戏插件。

1.vimIM五笔输入法
    说明:vimIM是一个基于Vim的输入法,支持五笔、拼音等中文输入,只要按装了vimim.vim相应的中文词库就可以输入中文了。
    安装:把下载下来的vimim.vim和vimim.wubijd.txt放到vim安装目录下的plugin目录中。
    使用方法:a,在输入模式下按ctrl+6启动输入法,再ctrl+6切换回英文。更多更详细的可以看官方主页。 
    感受:玩玩可以,在需要的时候也可以应付一下,但我觉得玩具的性质重点。不知是我没有完全掌握还是这个插件本来如此。
图片:vimim
(图片:VimIM)

2.matrix(!)
    说明:一个玩酷的插件,让一堆字符在Vim的窗口滚动,就像在《黑客帝国》之类的电影中常出现的画面。
    安装:在Vim 网站上下载文件 matrix.vim ,存放到vim 安装目录下载的plugin目录中。
    使用方法:在命令行输入“:Matrix”;按任意键退出。
    感受:没事用来当屏保还不错,如果哪些字符可以自己设定就更好玩了。
图片:matrix
(图片:matrix)

3.NERDTree
    说明:让Vim拥有树状目录。
    安装:拷贝NERD_tree.vim到plugin目录下,NERD_tree.txt到plugin目录下。
    使用方法:
        a.在命令行输入“:NERDTree”或“:NERDTree D:\source”,就可以左边打开树状目录。
        b.常用快捷键:
            o 打开关闭文件或者目录
            t 在标签页中打开
            T 在后台标签页中打开
            ! 执行此文件
            p 到上层目录
            P 到根目录
            K 到第一个节点
            J 到最后一个节点
            u 打开上层目录
            m 显示文件系统菜单(添加、删除、移动操作)
            ? 帮助
            q 关闭
        c.书签操作:添加书签,将光标移动到想添加书签的目录上,然后输入“:Bookmark 书签名称”;输入B显示书签目录。
        d._vimrc中的设定(过滤文件、位置、热键):
            let NERDTreeIgnore=['\.o$', '\~$', '\.a$', '\.bak$', '\.d$']
            let NERDTreeWinPos='left'
            nmap <leader>d :NERDTreeToggle<CR>
    感受:很好很完美。
图片:NERDTree
(图片:NERDTree)

4.calendar.vim
    说明:日历插件。可以在左侧显示日历。
    安装:将calendar.vim拷贝到plugin目录下。
    使用方法:输入“:Calendar启动”。默认Calendar 把文件存放在 ~/diary目录下,可以在 vimrc 中添加以下设置指定路径“let g:calendar_diary=<PATH>”。Windows 系统类似“let g:calendar_diary="d:/win_home/xxxcjr/My Documents/home/vim_calendar"”。“t”回到今天,“q”关闭日历。
    let g:calendar_monday = 1 "以星期一为开始
    let g:calendar_focus_today = 1 " 光标在当天的日期上
    let g:calendar_mark = 'left-fit' "可以让*和数字可靠近
    感受:是个用来写日记的好插件,如果能自动开启Vim的加密,回车打开的文件是在右侧,那就完美了。
图片:calendar
(图片:calendar)

5.mru.vim
    说明:显示最近打开过的文章,安装后在工具栏有显示“Recent”点击可以显示最近编辑过的文件,我安装的是js4.me 修改的插件见这里http://js4.me/archives/2989/,它支持快捷键。
    安装:拷贝mru.vim到plugin目录下。
    使用方法:alt+r。
    感受:我的Vim是中文的,怎样才能让“Recent”变成中文呢?这个插件真的很好。

6.vim-autocomplpop
    说明:语法自动提示。
    安装:拷贝acp.vim到plugin目录下,acp.txt和acp.jax到doc目录下,acp.vim到autoload目录下。
    使用方法:会自动提示,按回车确定。
    感受:这个插件并不完美,使用多了就会体会出它的几个问题,但是有比无好,而且我的要求也不高,基本上凑合着可以用。另按这篇文章的说法,类似的插件还有code_completesnippetsemusnipmate ,没兴趣,没必要,也没空一一试了。
图片:vim-autocomplpop
(图片:vim-autocomplpop)

(完)

2010-01-02

我的vimrc文件

这份是我当前使用的vimrc文件,大部分是从网上东一点西一点抄来的,我已无法一一给出来源。我尽量给每个设定做注释,还有一些命令被我注释掉,因为我觉得这些命令很有用,可暂时又用不着,我怕日后忘了,同时也想把这个vimrc做成个小小的帮助文件。实际使用时可以把注释删掉,这样貌似可以提高一点点启动速度。还有就是我还没测试它在Linux系统的兼容性。此文件更新于2010-01-03

" 希锐亚的_vimrc文件
"2010.01.03

""""""""""""""""""""" 编码设置 """"""""""""""""""""""""""
if has("multi_byte")
  " 可自动识别的文件类型为带 BOM 字符的 Unicode 文件、UTF-8 编码的文件和 GBK 编码的文件。
  "set bomb
  set fileencodings=ucs-bom,utf-8,chinese,taiwan,japan,korea,latin1
  " CJK environment detection and corresponding setting
  if v:lang =~ "^zh_CN"
    " Simplified Chinese, on Unix euc-cn, on MS-Windows cp936
    set encoding=chinese
    set termencoding=chinese
    if &fileencoding == ''
      set fileencoding=chinese
    endif
  elseif v:lang =~ "^zh_TW"
    " Traditional Chinese, on Unix euc-tw, on MS-Windows cp950
    set encoding=taiwan
    set termencoding=taiwan
    if &fileencoding == ''
      set fileencoding=taiwan
    endif
  elseif v:lang =~ "^ja_JP"
    " Japanese, on Unix euc-jp, on MS-Windows cp932
    set encoding=japan
    set termencoding=japan
    if &fileencoding == ''
      set fileencoding=japan
    endif
  elseif v:lang =~ "^ko"
    " Korean on Unix euc-kr, on MS-Windows cp949
    set encoding=korea
    set termencoding=korea
    if &fileencoding == ''
      set fileencoding=korea
    endif
  endif
   " Detect UTF-8 locale, and override CJK setting if needed
  if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
    set encoding=utf-8
  endif
else
  echoerr 'Sorry, this version of (g)Vim was not compiled with "multi_byte"'
endif

"""""""""""""""""""""" 界面设置 """""""""""""""""""""""""
"语法高亮
syntax on
"根据文件类型高亮
filetype plugin on
"打开自动缩进
set backspace=2
set autoindent
"空格代替tab
set softtabstop=4
set tabstop=4
set cindent shiftwidth=4
"行号
set number
" 搜索急略大小写
set incsearch
" 配色方案
colorscheme desert
"colorscheme desert256
"设置帮助信息
set helplang=cn
"记录历史的行数 
set history=1000
"打开文件时自动回到上次编辑位置
if has("autocmd")
    autocmd BufRead *.txt set tw=78
    autocmd BufReadPost *
        \ if line("'\"") > 0 && line ("'\"") <= line("$") |
        \ exe "normal g'\"" |
        \ endif
endif
"在标签页栏中去除当前所编辑文件的路径信息,只保留文件名。
function ShortTabLabel ()
    let bufnrlist = tabpagebuflist (v:lnum)
    let label = bufname (bufnrlist[tabpagewinnr (v:lnum) -1])
    let filename = fnamemodify (label, ':t')
    return filename
endfunction
set guitablabel=%{ShortTabLabel()}
" 设置windows下的字体、字号;set columns=80 lines=21设置启动时窗口的大小
if has("gui")
   if has("win32")
       set guifont=新宋体:h12
   else
       set guifont=新宋体\ 10
   endif
endif
"设置行距
set linespace=2
"搜索关键字高亮
set hls
"设置备份,我不喜欢生成多余的文件所以第三行设定不保存备份
set backup
set backupext=.bak
set nowritebackup
"不需要保持和 vi 非常兼容
set nocompatible
" 自动换行
set wrap
"正确地处理中文字符的折行和拼接
set formatoptions+=mM
"自动将 Vim 工作目录迁移到所打开文本文件的目录下
autocmd BufEnter * cd %:p:h
"gvim窗口启动的时候可以自动最大化,似乎是Win32版本才用的~
"if has('gui_running') && has("win32")
"    au GUIEnter * simalt ~x
"endif
" 保存文件时强制保存成utf-8格式
set fenc=utf-8

set showcmd

"-----  状态栏设置(1) _BEGIN_ -----
"显示状态栏
set laststatus=2
"显示当前文件名,文件格式,文件类型
set statusline=%2*%n%m%r%h%w%*\ %F\ %1*[FORMAT=%2*%{&ff}:%{&fenc!=''?&fenc:&enc}%1*]\ [TYPE=%2*%Y%1*]\ [COL=%2*%03v%1*]\ [ROW=%2*%03l%1*/%3*%L(%p%%)%1*]\ *^÷^*
"设置状态栏根据不同状态显示不同颜色
function! InsertStatuslineColor(mode)
    if a:mode == 'i'
        hi statusline guibg=peru
    elseif a:mode == 'r'
        hi statusline guibg=blue
    else
        hi statusline guibg=red
    endif
endfunction
au InsertEnter * call InsertStatuslineColor(v:insertmode)
au InsertLeave * hi statusline guibg=orange guifg=white
hi statusline guibg=green

"注:此为状态栏设置的第一部分,第二部分必须放在文件的最后才能生效
"----- 状态栏设置(1)_END_ -----

"""""""""""""""""""""" 按键绑定 """""""""""""""""""""""""
" 允许用户使用 F2 来取消搜索/替换的加亮显示。
nmap <silent> <F2>      :nohlsearch<CR>
imap <silent> <F2> <C-O>:nohlsearch<CR>
" 按,v查看_vimrc
:nmap ,v :e $VIM/_vimrc<cr>
" 按,s更新配置文件
:nmap ,s :source $VIM/_vimrc<cr>
" 按F5显示buffer的文件,并提示输入文件的行号
map <F5> :ls<cr>:e #
"按j移动一行
nmap j gj
nmap k gk
" 按空格向下翻半屏
nmap <Space> <C-d>
" 把所选内容复制到系统粘贴板
vmap ,c "+y<cr>
" 把系统粘贴板的内容粘贴到下一行,也可按shilt+insert
nmap ,p "+p<cr>
"配置<Leader>,默认为\
let mapleader = ","
" F9、F10去除、显示工具、菜单栏
map <F9> <Esc>:set go=<CR>
map <F10> <Esc>:set go=mT<CR>
" F11全屏,F12还原窗口
map <F11> <Esc>:simalt ~x<CR>
map <F12> <Esc>:set columns=80 lines=21<cr>

"""""""""""""""""""""" 插件设置 """""""""""""""""""""""""
" 日历插件calendar的设置:路径、快捷键
let g:calendar_diary="d:/win_home/xxxcjr/My Documents/home/vim_calendar"
let g:calendar_wruler = '日 一 二 三 四 五 六'
let g:calendar_mark = 'left-fit'
let g:calendar_focus_today = 1
map ca :Calendar<cr>

" 树形目录NERDTree的设置
"按F5启动树状目录
nmap <leader>d :NERDTreeToggle<CR>
"按<leader>m启动matrix(!)
nmap <leader>m :Matrix<cr>

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"----- 状态栏设置(2) _BEING_ -----
hi User1 guifg=gray
hi User2 guifg=red
hi User3 guifg=white
"注:这三行设定状态栏的高亮,好像只有放在此文件的最后才能生效
"----- 状态栏设置(2) _END_ -----

图片:vim (我的vim截图)

(完)

2010-01-01

Vim按键映射

学会了Vim的简单使用的后,往往是开始折腾Vim的配置文件vimrc ,让它赶上其它编辑器:)。vimrc 中的设置实在是太多了,待日后把我的vimrc 文件贴出来后再做更多的说明,这里先对我已知道的按键映射(好像有的也叫按键绑定)做个笔记,同时也记下几个比较有意思的命令。

Vim的模式

在设置按键映射之前有必要先了解一下Vim的几种模式。据说Vim有十多种模式,但只要了解最基本的3种,基本上就可以满足日常应用了。

1. Normal mode (常态模式)

运行Vim后进入的就是Normal模式,在这种模式下可以移动鼠标、寻找、替换、编辑指令,但不能输入文字——这与其它编辑器有很大的差别。

2. Insert mode (插入模式)

在Insert 模式下,可以像在其它编辑器中一样输入文字。此时左下角状态列会有“-INSERT-”(-插入-)字样。在Normal模式按下下面的键可以进入Insert 模式:i (在当前字符的前面插入);a (在当前字符的后面插入);o (在当前行的后面添加新的一行);O (在当前行的上面添加新的一行)。

3. Visual mode (反白模式)

在Visual 模式下可以把文字反白起来,此时左下角状态栏会有“-VISUAL-”或“-VISUAL LINE-”或“-VISUAL BLOCK-”字样。在Normal模式下按v或V(有什么差别呢?)可以进入Visual 模式。

不管是在Insert 模式或Visual 模式或其它的什么模式,按Ese键都可以返回Normal模式。

按键映射

nmap:映射一个Normal模式下的键,只有在Normal模式这个命令才会生效。

例:nmap ,s :source $VIM/_vimrc<cr>

说明:绑定“,s”在Normal模式下映射为“:source $VIM/_vimrc<cr>”命令,即重新读取配置文件_vimrc 。

imap:映射一个Insert 模式下的键,只有在Insert 模式这个命令才会生效。

例:imap <F11> :r c:\boot.ini<cr>

说明:绑定F11在Insert 模式下的映射为“:r c:\boot.ini<cr>”命令,即读取c:\boot.ini文件到当前位置。

vmap:映射一个Visual模式下的键,只有在Visual模式这个命令才会生效。

例:vmap sb "zbi<b><c-r>z</b><ESC>

说明:选中文字后按sb,选中文字的前后将分别加上<b>和</b>。

再例:vmap g/ y/<c-r>"<cr>

说明:映射“g/”这个组合键匹配选中的字并给予高亮显示。

map:用map绑定的键对Normal, Insert, Visual和Command-line模式均有效。

例:map <F5> :ls<cr>:e #

说明:映射F5键,使得按下F5会显示当前可编辑文件的buffer,然后提示你输入buffer的行号。(我很喜欢这个!)

(完)

世上没有鬼(第5辑)

时间:09年12月5日
地点:潮州西湖公园
感受:这张相是上次想去潮州看梁咏琪姐姐时在西湖公园拍的。墓位于笔架山环山路南段的路边,十步之内就有小商店、游戏场。如果不是那红色的字,恐怕谁也不会想到这是座坟。我还疑心坟的右侧已被踩出一条小路。

我希望这只是一块石碑而已,而不是林奕新同志长眠之地,这样我不会太过感伤,但石碑上红色的字表明有人到这里扫墓,因此也有理由相信,林奕新同志就睡在这下面。

林奕新同志是谁?我想像他可能曾是某人的邻居、某人的朋友,他是谁的儿子又是谁的父亲,他也许干过一些坏事,也许做过不少好事,他认识的人不少,可相对于几十亿的人口却是微不足道的,而他对于他们也是微不足道的,但对于他的家人来说他曾是他们的一切。然而这些都已经过去了,他现在躺在这下面不动了。他对于任何人来说都不再重要。林奕新同志生前必定是个草根,死后他的墓也像杂草一样。人们只会修缮有价值的墓(像王朝云墓),很明显他们并没有发现林奕新同志的墓有什么价值。

名人与草根有这样的差别。当他们说想看云时,全世界的云的照片都会飞过去;当他们说想听听毕业旅行的故事时,故事们也会飞到他们的邮箱。而我,当我说要写写这此孤坟野鬼时,一年过去了,依然只有我一个人在写。

但这都无关紧要,只要我坚持写下去,就无所谓失败,即使到最后也只有我一个人在证明“世上没有鬼”。

林奕新同志之墓


活动说明:
世上没有鬼”是我无聊之极想出来自娱的一个活动。就是在偶遇孤坟、荒坟时,大喊一声:“出来照个相啊!”,之后拍照,把照片传到网上,写是时间地点及当时自己的感想。相片只要可以看出是墓地即可,感受可短至一句话,长至万字。坟主并没有从坟里走出来显现在照片上,由此可证明世上并没有鬼。欢迎博客串联,欢迎投稿,投稿请电邮xxxcjr@sohu.com

(完)