一组能让你爽出内伤的 Vim motion
March 27th, 2007
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
标签:Software_软件, Vim搞定一个 BT 的 Apache URL Rewrite
March 22nd, 2007
需求:
将 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>
解释:
- ?type=test 是不会出现在 REQUEST_URI 里的,必须使用 QUERY_STRING 来获得它。
- 若有多个 RewriteCond,只能反向引用最后一个 RewriteCond 里的 pattern 的 group。
- RewriteRule 后面的 pattern 是用来匹配当前 URL 的,当前 URL 不是 REQUEST_URI。因为(因此?)它会比 REQUEST_URI 少一个前导斜杠 “/”,并且它可能已经被前面的 RewriteRule 改变过。
规则 BT 吧?第一个搞得我差点以为无解,第三个规则也消耗了我大量时间。本以为不用测试就能搞定的一个小问题居然花了 40 分钟左右才完成。-_-b
标签:Apache, mod_rewrite, Software_软件使用 Linux shell I/O 重定向简化小程序的日志记录
March 12th, 2007
一些自动执行特定任务的小脚本程序,如果希望能使程序的 stdout/stderr 输出到屏幕的同时也把他们记录到一个日志文件,可以使用 tee 命令结合 shell I/O 重定向来轻松完成:
./a_tiny_script 2>&1 | tee the_log_contain_both_stdout_and_stderr.log
这个命令的精华在于 2>&1,意为让 stderr 使用 stdout 的文件描述符,效果也就是将 stdout 和 stderr 内容合并,并且输出到 stdout 被定向的位置。在这里也就是管道中的 tee 命令的 stdin 上,然后 tee 将得到的输入同时显示在屏幕上和记录到日志文件里。爽吧?
以前为了在 PHP 脚本里实现这样的功能竟然使用了 ob 系列函数 + 自定义的 output callback 函数,并且这样也只能做到同时显示和记录 stdout,真是晕到死。
标签:bash, GNU/Linux, PHP, Programming_编程Vim 7.0c beta Win32 binary
April 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
标签:Software_软件, Vim, Windows编写INF文件进行文件安装[转载]
March 2nd, 2006
◆ 丁健 张万 江南
安装信息(Setup Information)文件是Windows系统支持的一种安装信息存放文件,一般以INF作为扩展名,因此也叫INF文件。安装信息INF文件与 Windows内建的安装服务引擎(API函数库)紧密协同工作,基于其严格的编写语法制作而成的INF文件在拷贝、删除文件,增、删注册表键,更改系统设置等方面都有优秀的表现,完全可以用来实现应用程序文件安装的目标,而且价格免费,透明度高,安装程序小,可完全定制。INF文件是文本文件,可在任何文本编辑器内查看、创建、修改,普通用户使用Windows系统本身提供的记事本、写字板即可进行文件安装脚本的编写。 Read the rest of this entry »
标签:Software_软件, Windows