zen-coding.vim不适合我(病原体)

时间:2011-01-06 14:38:47

标签: vim macvim

所以,我刚刚安装了zen-coding.vim插件,并且没有进行扩展。如果我做脚本名称,插件就在那里,并且:详细地图显示了ZenCoding映射。但是,如果我编辑一个html文件(或设置ft = html)并输入

H1#标题

什么都没发生。我确信我的.vimrc已被软管,但我对vim世界有点新意,所以我正在努力找出我搞砸了什么。我的vim设置为here。我在Mac OSX上,我正在使用病原体捆绑我的插件。

有人有什么建议吗?

谢谢, 格伦

输出:set rtp

runtimepath =〜/的.vim〜/的.vim /捆/ IndexedSearch〜/的.vim /束/要旨,〜/的.vim /束/的jquery〜/的.vim /束/ nerdtree,〜/ VIM /捆绑/ snipmate.vim〜/的.vim /束/ textile.vim〜/的.vim /束/ VIM对齐,〜/的.vim /束/ VIM-黄瓜,〜/的.vim /束/ VIM-逃犯,〜/的.vim /束/ VIM-git的,〜/的.vim /束/ VIM-HAML〜/的.vim /束/ VIM-减价,〜/的.vim /束/ VIM-导轨,〜/ vim的 /bundle/vim-repeat,~/.vim/bundle/vim-ruby,~/.vim/bundle/vim-ruby-debugger,~/.vim/bundle/vim-shoulda,~/.vim/bundle/v IM-SUPERTAB〜/的.vim /束/ VIM-环绕,〜/的.vim /束/ VIM-tcomment〜/的.vim /束/ VIM-vividchalk〜/的.vim /束/ zencoding-VIM,/应用/MacVim.app/Contents/Resources/vim/vimfiles,/Applications/MacVim.app/Contents/Resources/vim/ru n时间,/应用/ MacVim.app /内容/资源/ VIM / vimfiles /后,〜/的.vim /束/ snipmate.vim /后,〜/的.vim /后

3 个答案:

答案 0 :(得分:9)

我把它放在我的.vimrc:

let g:user_zen_expandabbr_key = '<c-e>' 
let g:use_zen_complete_tag = 1

(我使用<c-e>而不是默认值,因为这是我习惯使用其他编辑器使用Zen Coding的方法)

P.S。对我来说,Sparkup并不是一个真正的选择,因为我最喜欢的zen编码功能之一就是Sparkup不支持的“缩写包装”。(/ p>

答案 1 :(得分:2)

似乎Pathogen没有明确包含您放在“bundle”目录中的插件中找到的“after”目录。这意味着zen-coding和snipMate等插件无法运行其初始化/清理/键绑定例程。

显然这些插件对于其他环境中的其他人来说都很好用,但对于我来说,在Windows中,snipMate不能正常工作,因为“after”目录中的最终片段加载命令没有来源。

我在pathogen.vim中通过修改pathogen#runtime_append_all_bundles()函数来明确地附加在bundle目录中找到的所有“after”目录。

这是pathogen.vim版本1.2的补丁:

121c121,125
<       let list +=  [dir] + pathogen#glob_directories(dir.sep.name.sep.'*[^~]')
---
>       let subdirs = pathogen#glob_directories(dir.sep.name.sep.'*[^~]')
>       let list += [dir]
>       for subdir in subdirs
>         let list += [subdir] + pathogen#glob_directories(subdir.sep.'*after*')
>       endfor

BIG EDIT :在Pathogen github网站上遇到this closed issue之后,我发现根本原因并不是需要明确添加“after”目录,而是他们由于substitute()命令在win32系统上出现反斜杠转义问题,因此没有添加。

这是一个更简洁的补丁,这次采用统一格式,抱歉......

@@ -116,7 +116,8 @@
   let list = []
   for dir in pathogen#split(&rtp)
     if dir =~# '\<after$'
-      let list +=  pathogen#glob_directories(substitute(dir,'after$',name.sep.'*[^~]'.sep.'after','')) + [dir]
+      let replacement = substitute(name.sep.'*[^~]'.sep.'after', '\\', '\\\\', 'g')
+      let list +=  pathogen#glob_directories(substitute(dir,'after$',replacement,'')) + [dir]
     else
       let list +=  [dir] + pathogen#glob_directories(dir.sep.name.sep.'*[^~]')
     endif

github问题的记者说,他们给蒂姆发了拉请求,蒂姆说他接受了,但是所描述的改变不在当前版本的代码中,所以我想我会尽我所能在这里提供我的解决方案。

此补丁会转义glob中的任何反斜杠。首先,在非win32系统上的任何运行时路径项中都不应该有任何反斜杠,或者是因为它是因为在vim中设置了+ shellslash而且可能需要这种转义。

我将旧解决方案留在那里作为参考。

答案 2 :(得分:0)

我必须使用chmod +x sparkup的支持脚本才能使其正常工作。 Vim会给你一些错误信息吗?