LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2906|回复: 10

vim plugin: snipMate, SnippetsEmu & code_complete, FuzzyFinder, NERDtr

[复制链接]
发表于 2009-3-26 04:45:04 | 显示全部楼层 |阅读模式
副标题:刚刚试了一下 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> 擴展后是
  1. try:
  2.     pass
  3. except Exception, e:
  4.     raise e
复制代码

pass 这句被選上,如果這时候再用其它的 Snippet,例如 wh<Tab>,是不會擴展的,直接跳下一个 tabstop 了
而之前用的那两個没有這個情况

確實没有東西是完美的

再嘆,以前花了很多時間擴展那两個插件,
連 python 的各種 comprehension 都有定義
很明顯是 overdone 了

--------------- update Mar 26, 2009 ----------------
剛剛發現作者在 github 這個 tag 已經實現了嵌套的擴展,不過還没 merge 回 master,我現在已在用這個 branch
发表于 2009-3-26 05:36:32 | 显示全部楼层
前几天刚刚装上 snipmate,还不知道咋用,看来得赶紧看文档了。(其实只要几分钟就够了)
回复 支持 反对

使用道具 举报

发表于 2009-3-26 10:54:49 | 显示全部楼层
如果你set paste,tab就不会自动补全了,这个怎么处理?
回复 支持 反对

使用道具 举报

发表于 2009-3-26 11:35:23 | 显示全部楼层
这个东西不错,写代码方便了很多。
同时发现一件事,怎么没有发现 vim 的 overlay 呢?
layman 的一列表里有 emacs 的,难道用 vim 的人觉得 ebuild 太麻烦了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-26 12:08:32 | 显示全部楼层
Post by blackwhite;1965665
如果你set paste,tab就不会自动补全了,这个怎么处理?


set paste 好像很多副作用的啊
真的要用我会设好 pastetoggle 来一键切换
回复 支持 反对

使用道具 举报

发表于 2009-3-26 17:48:56 | 显示全部楼层
8pm兄有好东西推荐了,赞一个
回头试用一下这个,一直在用vim
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-26 18:06:01 | 显示全部楼层
Post by whitelilis;1965676
这个东西不错,写代码方便了很多。
同时发现一件事,怎么没有发现 vim 的 overlay 呢?
layman 的一列表里有 emacs 的,难道用 vim 的人觉得 ebuild 太麻烦了?


我的理解:因為 vim 祗是一个編輯器,而 emacs 是一个操作系统...

Post by axlrose;1965848
8pm兄有好东西推荐了,赞一个
回头试用一下这个,一直在用vim


謝謝
不敢專美,snipmate 是 zhou3345 兄推荐的,我也是昨天才知道,之前都是用我提到那两個

PS.
FuzzyFinder 真的挺好用
回复 支持 反对

使用道具 举报

发表于 2009-3-26 18:53:00 | 显示全部楼层
好东西啊,收了。
回复 支持 反对

使用道具 举报

发表于 2009-3-26 21:49:37 | 显示全部楼层
8pm太客气了,我用vim的时间不长,有很多功能很多有用的插件也需要大伙都推荐。

snipMate 肯定也还有不少各位觉得不合适的地方,不过作者很勤快,各位可以联系一下提提建议什么的。
回复 支持 反对

使用道具 举报

发表于 2009-4-8 16:03:24 | 显示全部楼层
请教各位,windows下snipMate如何安装,特别是convertSnip.py 拷贝到什么地方需要安装python吗?谢谢各位。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表