1

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

h1#标题

什么都没发生。我确信我的 .vimrc 已经被水洗了,但我对 vim 世界有点陌生,所以我很难找出我搞砸的地方。我的 vim 设置在这里。我在 Mac OSX 上,我正在使用病原体来捆绑我的插件。

有人有什么建议吗?

谢谢,格伦

:set rtp 的输出

runtimepath=~/.vim,~/.vim/bundle/IndexedSearch,~/.vim/bundle/gist,~/.vim/bundle/jquery,~/.vim/bundle/nerdtree,~/. vim/bundle/snipmate.vim,~/.vim/bundle/textile.vim,~/.vim/bundle/vim-align,~/.vim/bundle/vim-cucumber,~/.vim/bundle/vim-逃犯,~/.vim/bundle/vim-git,~/.vim/bundle/vim-haml,~/.vim/bundle/vim-markdown,~/.vim/bundle/vim-rails,~/.vim /bundle/vim-repeat,~/.vim/bundle/vim-ruby,~/.vim/bundle/vim-ruby-debugger,~/.vim/bundle/vim-should,~/.vim/bundle/v im-supertab,~/.vim/bundle/vim-surround,~/.vim/bundle/vim-tcomment,~/.vim/bundle/vim-vividchalk,~/.vim/bundle/zencoding-vim,/Applications /MacVim.app/Contents/Resources/vim/vimfiles,/Applications/MacVim.app/Contents/Resources/vim/runtime,/Applications/MacVim.app/Contents/Resources/vim/vimfiles/after,~/.vim /bundle/snipmate.vim/after,~/.vim/after

4

3 回答 3

9

我把它放在我的.vimrc中让它工作:

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

(我使用<c-e>而不是默认值,主要是因为我习惯于使用其他带有 Zen Coding 的编辑器)

PS 对我来说,Sparkup 并不是一个真正的选择,因为我最喜欢的 Zen 编码功能之一是 Sparkup 不支持的“缩写形式”(目前)。

于 2011-01-13T15:06:10.887 回答
2

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

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

我通过修改pathogen#runtime_append_all_bundles()函数以显式附加在捆绑目录中找到的所有“之后”目录,在 Pathogen.vim 中修复了这个问题。

这是针对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

大编辑:在​​ Pathogen github 网站上遇到这个已关闭的问题后,我发现根本原因不是需要显式添加“之后”目录,而是由于 win32 上的反斜杠转义问题而没有添加它们命令中的系统substitute()

这是一个更简洁的补丁,这次是统一格式,对不起......

@@ -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 issue的记者说他们给Tim发了一个pull request,Tim说他接受了,但是描述的变化不在当前版本的代码中,所以我想我会尽我所能提供我的解决方案这里。

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

我将旧解决方案留在那里以供参考。

于 2011-01-18T16:12:44.850 回答
0

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

于 2011-01-08T21:27:38.463 回答