|
|
副标题:刚刚试了一下 snipmate 这个 vim 插件,感觉很不错
首先要感谢 zhou3345 兄在这里让我知道了 snipmate 这个 vim 插件
我一直都很羡慕 TextMate 具有的 snippet 功能,也一直在尋找類似功能的 Vim plugin。
google 一下就可發現,類似的 Vim plugin 很多。
我第一個用的是 code_complete(及其改名後的後继版),並按照自己的習慣 customized。用了一段時間,當我發現 code_complete 並不支持變量替换,而这个功能在 for 循环里或者 class 以及 constructor 和 destructor 的定義時很方便,于是我又开始尋找。這個是我改過的 code_complete
第二個找到的是 snippetsemu,又根据我的個人習慣做了大量的 customization。也用了好一段時間,但是效果我不是很满意。snippetsemu 支持變量替换,但是對於 placeholder 的要求高很多,因为其 placeholder 同時也作為變量,这样带來一些限制,例如 _ 不能出現在 placeholder 裏,這讓我改動時費了不少功夫。
而两者还有个共同的缺點,因为同用特征字符串作为 tabstop 的標識,會出现一些诸如在特征字符串之間按 tab 可能有預期不到的現像。這個是我改過的 snippetsemu ftplugin
這两者都很棒,但在我個人來說还有些不如意的地方。
而 snipmate 则基本上没有上面两者的缺點,snipmate 不是用特征字符串来標識 tabstop,其 snippet 的格式和 TextMate 的基本兼容(${1}, ${2} 等),placeholder 的限制也没這麼多,尤其是 snipmate 还支持 out-of-order 的 tab 跳转,這是上面两者都无法做到的(因为它们的實現方式是查找特征字符串,只能單纯向前向後),更支持一對多的對應關係。
我想我不用再尋找了,祗是感覺相見恨晚,太晚了,因為用前两個時我各加了近千行的 customization code...
再次感謝 zhou3345 兄,以及以上 vim plugin 的作者們。
PS. gedit 也有 snippet 的插件,格式類似 TextMate
--------------- update ----------------
還有一個我觉得很好用的文件瀏覽 plugin
FuzzyFinder
比如绑定到 normal 的 F3
支持模糊匹配,支持打開文件和切换 buffer
有些時候感覺比 NERDTree 還好用
--------------- update Mar 25, 2009 ----------------
今天用了好一陣子 snipMate,發現 snipMate 不支持嵌套的擴展,一個明顯例子就是 ft=python 時
try<Tab> 擴展后是
- try:
- pass
- except Exception, e:
- raise e
复制代码
pass 这句被選上,如果這时候再用其它的 Snippet,例如 wh<Tab>,是不會擴展的,直接跳下一个 tabstop 了
而之前用的那两個没有這個情况
確實没有東西是完美的
再嘆,以前花了很多時間擴展那两個插件,
連 python 的各種 comprehension 都有定義
很明顯是 overdone 了
--------------- update Mar 26, 2009 ----------------
剛剛發現作者在 github 這個 tag 已經實現了嵌套的擴展,不過還没 merge 回 master,我現在已在用這個 branch |
|