【问题标题】:zen-coding.vim not working for me (pathogen)zen-coding.vim 不适合我(病原体)
【发布时间】:2011-06-04 16:52:04
【问题描述】:

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

h1#title

什么都没有发生。我确信我的 .vimrc 已经被水洗了,但我对 vim 世界有点陌生,所以我很难找出我搞砸的地方。我的 vim 设置是here。我在 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-fugitive,~/.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/ru ntime,/Applications/MacVim.app/Contents/Resources/vim/vimfiles/after,~/.vim/bundle/snipmate.vim/after,~/.vim/after

【问题讨论】:

  • 两个zencoding脚本都加载了吗? plugin/zencoding.vim 和 autoload/zencoding.vim 都应该被加载。
  • 不。只是插件。知道为什么自动加载没有加载吗?我搞砸了病原体吗?
  • 你能把:set rtp?的输出贴出来
  • 我不了解你,但在我的设置中,我必须输入 <C-y>, 才能进行 zen 编码扩展。
  • @Randy...已添加。自动加载的东西没有被加载。我以为病原体会解决这个问题...嗯...

标签: vim macvim


【解决方案1】:

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

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

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

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

【讨论】:

  • 请注意,从今天开始,zen-coding.vim 已重命名为 emmet.vim,因此您需要从现在开始将上述选项中的“zen”替换为“emmet”。 mattn.github.com/emmet-vim
【解决方案2】:

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

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

我通过修改 pathogen#runtime_append_all_bundles() 函数以显式附加在 bundle 目录中找到的所有“之后”目录,在 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 网站上遇到this closed issue 后,我发现根本原因不是需要显式添加“之后”目录,而是它们不是由于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 issue 的记者说他们向 Tim 发送了一个 pull request,Tim 说他接受了,但是描述的更改不在当前版本的代码中,所以我想我会尽我所能在这里提供我的解决方案。

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 我不认为 zen-coding 使用 sparkup。我安装了 sparkup 插件,它工作正常。不知道我搞砸了 zen 编码,但我在 vim 中恢复了 zenness,这是最终目标。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多