配置windows上的git commit时的默认编辑器

在Win下使用github的Git Shell,每次commit时都会弹出记事本,使用不是太爽,想换成vim才顺手。操作步骤如下

  • 安装gvim
  • 将gvim的目录加入Path环境变量中,在 我的电脑 – 属性 - 高级 - 环境变量中修改
  • 配置git
git config --global core.editor gvim
  • 重启Git Shell即可生效!

vimari – safari下的vimium扩展

虽说我现在用的主力浏览器还是chrome,但是偶尔还是会给safari一些机会,这让在chrome下用惯了vimium插件的我很不适应,按下熟悉的按钮没得到应有的反馈,简直就跟残废了似的。

于是我开始放狗搜索,然后得到了这个 — vimari.

简单介绍

vimari从chrome的vimium移植而来,大部分代码都是基于vimium。而vimium对于chrome来说,就象是vimperator之于firefox,在浏览网页的时候,也能带来vim类似的操作体验,对于vim控来说实在是不可多得的好扩展。

Vimari is a Safari extension that provides keyboard based navigation. The code is heavily based on \’vimium\’, a chrome extension that provides much more extensive features.
Vimari attempts to provide a lightweight port of vimium to Safari, taking the best components of vimium and adapting them to Safari.

稍加配置,我就很容易获得了和后者类似的使用体验。例如下图的配置选项中,我把 Modifier key to preceed commands 这一项留空,按下f键就可以选择打开页面上的某个链接,而不是使用它默认的快捷键ctrl + f.

\"vimari\"

注意事项

安装扩展之后请即刻升级至最新版本,否则可定制的选项比较少。

使用markdown格式写Todo list

上周我完成了chrome的markdown-preview扩展的修改,使它支持markdown文件的实时预览功能。现在可以考虑用这个功能来做一些更酷的事情,比如说,写Todo list?

开始干

  • 首先我找到了一个叫topmarks的markdown样式文件,这个样式文件能给出一个漂亮的Todo list样式,我把它合并到了 修改后的markdown preview插件
  • 关注了一下markdown-preview原作者的github,他有计划增加一项功能,让用户可以自定义css文件,但是近期完成无望,所以我新增了一个topmarks的分支,采用新的样式
  • 在chrome的扩展中重新加载插件

效果图

如图,我采用vim编辑文件,右边摆上chrome浏览器预览,文件采用dropbox同步,保证我随时能更新这个文件。

\"效果图\"

关于topmarks的补充说明

topmarks样式采用了这些自定义标签

  • <t> 新任务
  • <d> 已完成的任务
  • <c> 已取消的任务
  • http, ical, mailto, file链接有不同的图标

markdown文件的编辑以及实时预览

之前看到有一款叫Mou的软件可以编辑markdown格式的文本内容并且实时预览,可是我比较喜欢用vim编辑器,所以就想着能不能用别的软件配合着来实现实时预览。

今天看到一个chrome的扩展叫markdown preview,它可以自动把md或markdown后缀的文本转换为html格式在chrome中查看,只是还欠缺一个自动刷新的功能。然后我看到它的源码已经放在github上,于是抓回来做了一些修改,加上了自动刷新的功能。

演示

尝试了一下在vim中编辑文件,然后在chrome中浏览,效果还不错,见下图:

\"效果图\"

更改后的扩展

我把修改后的markdown preview插件放在github上 , 已经尝试向原作者发起pull requests,要试用的话需要按下面几步操作:

  1. 把插件的代码clone回来 git clone git://github.com/volca/markdown-preview.git
  2. 开启chrome扩展的开发者模式,具体位置在窗口 -> 扩展程序
  3. 载入正在开发的扩展程序
  4. 允许访问文件网址勾选上

然后你就可以尝试用chrome浏览器打开markdown文件预览html,采用趁手的编辑器去修改它。

BTW

  • chrome下的插件写起来比想像的要简单,写javascript就是了
  • 现在这篇blog即是我用markdown格式写成的,用到了wordpress的markdown on save扩展。

Update

  • 测试把文件放在dropbox的Public下,修改之后的效果能够立刻在共享链接里看到效果,很完美

php文档更新

php.net最近更新了php文档,比较有用的是新增的pman工具。pman是一个命令行小工具,方便查看php函数的本地帮助文档,但是不包含php.net的评论数据。简单的试用心得如下:

安装pman

使用传说中的pear来安装pman

sudo pear install doc.php.net/pman

如果pear版本比较老,需要先升级pear才可以继续

sudo pear upgrade pear

pman使用方法

pman的使用方法很傻瓜,比如我们想查看strlen的帮助信息:

pman strlen

帮助文本的内容是彩色的,能和chm版本的php帮助文档媲美。pman的详细使用帮助如下

#pman --help
man, version 1.6c

usage: man [-adfhktwW] [section] [-M path] [-P pager] [-S list]
	[-m system] [-p string] name ...

  a : find all matching entries
  c : do not use cat file
  d : print gobs of debugging information
  D : as for -d, but also display the pages
  f : same as whatis(1)
  h : print this help message
  k : same as apropos(1)
  K : search for a string in all pages
  t : use troff to format pages for printing
  w : print location of man page(s) that would be displayed
      (if no name given: print directories that would be searched)
  W : as for -w, but display filenames only

  C file   : use `file' as configuration file
  M path   : set search path for manual pages to `path'
  P pager  : use program `pager' to display pages
  S list   : colon separated section list
  m system : search for alternate system's man pages
  p string : string tells which preprocessors to run
               e - [n]eqn(1)   p - pic(1)    t - tbl(1)
               g - grap(1)     r - refer(1)  v - vgrind(1)

还有一个好处是在vim里查看php帮助信息更方便了,结合完美

:!pman strlen

用gvim编辑firefox的文本框内容

到目前为止,已经使用近两年vim,渐渐的对这玩意有一些依赖性。

平常用的是firefox浏览器,为了看上去比较酷或者在装A和装C之间徘徊,我又安装了vimperator插件,这样操作firefox就像用vim一样,干啥都得敲一些键盘命令,浏览网页的时候对鼠标不会太依赖,还可以方便的调整本本的位置比如放在腿上。

为了最大化的利用vim,我不厌其烦的在狗狗上爬来爬去,终于学到一招实用技巧——利用gvim编辑网页中的文本内容。简单的说,只要光标停留在目标网页的文本框里,就可以使用ctrl + i (<C + i>)快捷键biu的一下呼出gvim编辑文本。

设置过程笔记

  • 安装vimperator插件
  • 在firefox里输入伪vim命令
    :set editor=gvim -f 
  • 在系统的path环境变量中加入gvim.exe的路径,比如俺的是 D:\Program Files\Vim\vim72,很可能要重启电脑才能生效

顺利的话就可以使用前文说到的快捷键了。

优点

  • 切换页面的时候,不会因为编辑焦点区域丢失导致保存内容失败
  • 论坛中灌水的时候效率明显提升
  • 写wiki或blog的时候得心应手

缺点

  • 对vim的依赖程度会越来越高,不可自拔

本人的_vimperatorrc配置

autocmd LocationChange .* :js modes.passAllKeys = /mail\.google\.com/.test(buffer.URL) || /google\.com\/reader\//.test(buffer.URL)
set complete=sfl
set titlestring=hello
set wildoptions=auto

noremap  
noremap  
noremap  
noremap  
cnoremap  
cnoremap  
cnoremap  
inoremap  
inoremap  
inoremap  
inoremap  
inoremap  
inoremap  

:style -name commandline-ime chrome://* #liberator-commandline-command input {ime-mode: inactive;}

set nextpattern=\s*下一页|下一张|下一篇|下一頁|下页|后页\s*,^\bnext\b,\bnext\b,\bsuivant\b,^>$,^(>>|››|»)$,^(>|»),(>|»)$,\bmore\b
set previouspattern=\s*上一页|上一张|上一篇|上一頁|上页|前页\s*,^\bprev|previous\b, \bprev|previous\b,\bprécédent\b,^<$,^(<<|‹‹|«)$,^(<|«),(<|«)$

bom头的影响

前阵子有同事写了一段代码,在setcookie的时候出现下面错误。

Cannot modify header information – headers already sent by ….

这个错误非常之常见,如果在setcookie之前输出了任何文本内容,便会有上述错误提示。由于页面头部require了若干文件,一行行排查是很麻烦的事情,因此,我在页面顶部加上:

ob_start();

在setcookie之前加上代码:

ob_get_clean();

这是为了获取setcookie之前页面输出的内容。页面运行后,显示输出了一个空字符串,也就是说,setcookie之前没有任何输出。

继而用vim打开了源文件,发觉vim有打开bomb选项,怀疑因此给代码添加了隐藏的字符串,关闭之:

set nobomb

问题解决。

BOM是什么意思?

BOM是“Byte Order Mark”的缩写,用于标记文件的编码。并不是所有的文本编辑工具都能识别BOM标记

用vim来写wordpress

用vim习惯了之后,用别的编辑器写长一点的文本都没法适应,写wordpress更是如此。为此我郁闷了很长一段时间,直到前不久找到了一个新的宝贝 —- vimpress。这个东东可不是什么新的软件,它只不过是vim的一个plugin罢了。

只要装好vimpress,你就可以用它来列出或者发布blog。

目前这个插件有如下功能

  • 获得文章列表
  • 写新文章
  • 编辑文章
  • 现场保存 (yeah, no kidding)
  • 支持分类
  • 支持标签

vim命令清单

  • “:BlogList”
    列出blog里的文章
  • “:BlogNew”
    写新文章
  • “:BlogOpen id”
    打开一篇现有的文章进行编辑
  • “:BlogSend”
    保存并发布文章

安装过程

  • 将解压之后plugin和syntax目录复制到vimfiles目录下
  • 修改plugin下的blog.vim进行配置,需要配置username,password以及xmlrpc.php的url
  • 如果需要支持tag,可以设置enable_tags=1。
  • 如果需要支持UTW tags,需要另外下载一个vim插件utw-rpc-autotag

vimpress的主页

发现的bug

  • 如果标题中包含:号,那么:以后的字符会被截断
  • 如果试图对草稿进行修改,那么发布后的博客没设定发布日期

BTW:现在这篇blog就是我使用vimpress完成的:)

很爽的vim motion操作

在“一组能让你爽出内伤的 Vim motion”里头看到一组这样的vim操作:

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

使用了之后,用vim写php/html感觉效率高了很多。从上面的操作中进一步演化,还能有些实用的组合:

* vi[ 选择一对 [] 中的所有字符
* vi( 选择一对 () 中的所有字符
* vi< 选择一对 <> 中的所有字符
* vi{ 选择一对 {} 中的所有字符
* vit 选择一对 HTML/XML 的标签内部的所有字符
* vi” vi’ vi` 选择一对引号字符 (” 或 ‘ 或 `) 中所有字符

如果在选择之后,再用zf组合把它们缩成一行(folder),啊,大量的html就很好伺候了~~还有大段的php function,不在话下。

vim 7.1跳出来了

vim 7.1发布啦~~ 这个时候距上次vim 7.0的发布相隔了一年之久。这个版本有啥变化?还是老一套:

输入下面命令就知道了:

“:help version-7.1”.

Changes since 7.1a:

– Lots of spelling mistakes fixed.
– Several runtime files updated. Somehow people tend to send me updates
_after_ doing a release…
– Bug in downloading a missing spell file fixed. Could wipe out a
buffer with your text when downloading failed.
– Building with MingW fixed (and now Win32s version also builds).
– Editing compressed files didn’t work when folding enabled.

更新的详细内容:
http://tech.groups.yahoo.com/group/vimannounce/message/178