Vim 用户都应该知道 Vim 的 Normal 模式下 operator + motion 组合的便利,比如

  • daw 删除光标下的普通单词以及其后的空格
  • ciW 删除光标下的以空格分隔的“单词”并进入插入模式 (i 表示 inner,不删除单词后的空格)
  • yis 复制光标下的句子到默认寄存器

确实这几个都比较平淡无奇,不过请看以下这些

  • ci[ 删除一对 [] 中的所有字符并进入插入模式
  • ci( 删除一对 () 中的所有字符并进入插入模式
  • ci< 删除一对 <> 中的所有字符并进入插入模式
  • ci{ 删除一对 {} 中的所有字符并进入插入模式
  • cit 删除一对 HTML/XML 的标签内部的所有字符并进入插入模式
  • ci” ci’ ci` 删除一对引号字符 (” 或 ‘ 或 `) 中所有字符并进入插入模式

怎么样?ci[ ci< cit 在编辑 PHP 或者 HTML 源码时简直太爽了 (当然 matchit 插件增强的 motion % 也是必不可少的),ci” ci’ ci` 几乎在编辑任何语言的源代码时修改字符串都会非常方便。不过可惜的是以上这些严格的说只能叫文本对象选择,不是 motion,因此只能跟在 v 命令或者某个 operator 后面。可恨用了两年 Vim 居然今天才想起查 Vim 帮助里的 motion.txt。 -_-b

Tags: ,

需求:

将 host/item.html?type=test
rewrite 成
host/?q=item&type=test
其中 item 和 test 是可变的,并且 ?type=test 可有可无。

解决:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/[^/]+\.html$
RewriteCond %{QUERY_STRING} ^(type=.*)?$
RewriteRule ^([^/]+)\.html$ /?q=$1&%1 [L]
</IfModule>

解释:

  1. ?type=test 是不会出现在 REQUEST_URI 里的,必须使用 QUERY_STRING 来获得它。
  2. 若有多个 RewriteCond,只能反向引用最后一个 RewriteCond 里的 pattern 的 group。
  3. RewriteRule 后面的 pattern 是用来匹配当前 URL 的,当前 URL 不是 REQUEST_URI。因为(因此?)它会比 REQUEST_URI 少一个前导斜杠 “/”,并且它可能已经被前面的 RewriteRule 改变过。

规则 BT 吧?第一个搞得我差点以为无解,第三个规则也消耗了我大量时间。本以为不用测试就能搞定的一个小问题居然花了 40 分钟左右才完成。-_-b

Tags: , ,

Vim 7.0c beta Win32 binary

四月 3rd, 2006

偶拿 Microsoft Visual C++ 7.1 编译的,非 OLE 的 GUI 版本和 console 版本。

四个文件保持目录结构解压到某个地方,运行其中的 install.exe 即可。需要注意的是这些压缩包中没有 iconv.dll 和 diff.exe。如果你认为自己解决这些问题比较麻烦,或许你应该等待偶发布 NSIS 的安装程序的版本。

下载: gvim70c.zip vim70clang.zip vim70crt.zip vim70cw32.zip

附上偶的 .vimrc 文件: .vimrc

Tags: , ,

◆ 丁健 张万 江南

安装信息(Setup Information)文件是Windows系统支持的一种安装信息存放文件,一般以INF作为扩展名,因此也叫INF文件。安装信息INF文件与 Windows内建的安装服务引擎(API函数库)紧密协同工作,基于其严格的编写语法制作而成的INF文件在拷贝、删除文件,增、删注册表键,更改系统设置等方面都有优秀的表现,完全可以用来实现应用程序文件安装的目标,而且价格免费,透明度高,安装程序小,可完全定制。INF文件是文本文件,可在任何文本编辑器内查看、创建、修改,普通用户使用Windows系统本身提供的记事本、写字板即可进行文件安装脚本的编写。 Read the rest of this entry »

Tags: ,

上周六完成了最近的工作,狂睡一天+猛玩一天之后,昨晚花了一整夜的时间来进行升级工作。包括修改 WP 本身的少量代码,寻找插件的新版本并修改,以及完成去年三月就搁下的 Theme 移植 (从 1.2 的 style 移植到 1.5 的 Theme)。是的,去年三月…… 025

意外的发现 MarkDown 这个超好用的写作插件,以前竟然一直无视了它的存在。040 简单的说 MarkDown 可以让我们像写纯文本文件那样来写 HTML,再也不需要把 < > 写成 &lt; &gt; 了,直接书写 1. xxx 2. yyy 就可以产生 HTML 的有序列表,直接书写 * xxx * yyy 就可以产生 HTML 的无序列表等等。唯一不爽的是表示引用的效果需要用 Email 格式的 > 符号,并且至少每个段落前面要有一个 > 符号,这样就比直接使用 <blockquote> 麻烦多了,有空得研究一下如何修改它。

Update: 哈,原来要解决这个问题很简单,注释掉 markdown.php 中的这一行就可以了,目的是不去掉 WordPress 本身的段落自动转换过滤器。

//remove_filter('the_content', 'wpautop');

另外发现要使 Auto-hyperlink URLs 和 MarkDown 一起工作的话必须把前者的过滤器优先级设置得比 MarkDown 高,否则也会出些莫名其妙的问题。打开 autohyperlink-urls.php 把最末尾的三行改成这样就行了。add_filter() 函数的第三个参数表示过滤器优先级,由以前的 9 改成 5,因为 MarkDown 的过滤器优先级是 6。

add_filter('the_content', 'c2c_hyperlink_urls', 5);
remove_filter('comment_text', 'make_clickable');
add_filter('comment_text', 'c2c_hyperlink_urls', 5);
Tags: ,

[转载]About vi & emacs

十二月 16th, 2005

世界上有三种人,一种使用 vi,一种使用 emacs,另一种包括其他所有人。

“爸爸,我们为什么要躲避那些警察?” “因为我们用 vi,孩子,而他们用 emacs。”

Tags: ,

和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括 UCS-2、UTF-8 等流行的 Unicode 编码方式。然而不幸的是,和很多来自 Linux 世界的软件一样,这需要你自己动手设置。

Vim 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding (这些选项可能的取值请参考 Vim 在线帮助 :help encoding-names),它们的意义如下: Read the rest of this entry »

Tags: , , ,

还记得几年前初次接触 GNU/Linux 时,听说 GNU/Linux 下最常用的文本编辑器叫做 vi。在 DOS/Windows 下已经生活了一两年的我,自然知道文本编辑器的重要性。于是尝试输入 vi 启动这个被众多 GNU/Linux 用户“吹捧”的著名文本编辑器。

“Oh, shit!” 这是什么怪物?作为文本编辑器它居然就给我一个没有菜单的,只显示了一些莫名其妙的 ~ 符号和它自己名字的黑屏幕。最要命的是在我按了几个字母键之后,它居然除了让机箱里的 speaker 吱吱叫几声之外没有任何反应! Read the rest of this entry »

Tags: ,

用 Firefox 绝对不是因为前一段时间网上铺天盖地的宣传,恰恰相反,我对这种宣传比较反感。特别是当我看到某些我不喜欢甚至是讨厌的网站上也出现宣传 Firefox 的广告时更是如此。真正让我觉得 Firefox 比 IE 更好的是它对 Web Standard 的支持,包括更好的 CSS 1.0 支持和完善的 CSS 2.0 支持。

不过,对于普通用户来说,Firefox 也就是比 IE 好,跟 Maxthon/MyIE2 这样的基于 IE 内核的增强型浏览器 (为了方便叙述,以下统一使用 IE shell 一词来表示) 比起来还是有一定差距的。而且,对我来说造成这个差距的主要原因正是 Firefox 引以为荣的基于 XUL 的用户界面和基于 JavaScript 的扩展 (extension) 支持。 Read the rest of this entry »

Tags: ,

这个问题说起来也简单,只要安装 NT 版本的智能 ABC 就可以了。

下面的这个安装包,提供的 NT 版本的安装程序,安装完成以后就可以直接在输入法设置里面添加智能 ABC 了。 智能 ABC for WinXPe

Tags: ,