31

wxapp.vim 已全面支持微信小程序代码智能补全

 3 years ago
source link: https://zhuanlan.zhihu.com/p/22683585
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

wxapp.vim 已全面支持微信小程序代码智能补全

开源开发者,vimer

wxapp.vim 是专为小程序开发提供的 vim 插件, 它的目标是为 vim 使用者提供全面的小程序开发支持,目前主要功能已经开发完成。

智能补全基础

这里智能补全指的是提供 vim omnifunc 接口实现的补全,它默认通过快捷键 <c-x><c-o> 进行触发,详细说明可通过 :h omnifunc 查看帮助。

针对 wxml, wxss,javscript 这三种不同语言,wxapp.vim 提供了三种不同的补全实现。

wxss 补全

wxss 使用的是 vim runtime 自带的 css 补全函数,插件在 ftplugin/wxss.vim 内设置了:

setl omnifunc=csscomplete#CompleteCSS

只要你编辑 wxss 文件就可以使用 css 的智能补全了。

wxml 补全

wxml 相比与 html,更接近 xml,因为它的标签、属性和属性值完全是自定义的一套方案。 因此,wxapp.vim 专门提供了一套解析的方法,简单说就是判断当前位置需要解析的类型(标签 ,属性,属性值)然后找出相应的补全列表,具体实现代码位于autoload/wxmlcomplete.vim 内。 相关数据的存储使用了 json,所以如果你的 vim 不提供 json_decode 这个函数的话, 代码是无法运行的。

相比与官方的 IDE,这个补全的实现不仅可以补全标签名,还可以补全当前标签的属性, 以及当前属性可能的属性值,从而降低查看文档的成本。

插件内已经对 wxml 文件设置了:

setl omnifunc=wxmlcomplete#Complete

无需使用者另行配置。

javascript 补全

新版已经重做 javascript 代码补全,不仅全面支持所有 API,而且支持基于所有参数属性名补全,你需要使用 master 版本的 tern 来启用该功能(npm 版本暂时不支持,会报错),在你的 tern_for_vim 插件下使用命令

  npm install https://github.com/ternjs/tern/tarball/master -S

将文件 tern/wxapp.json 拷贝到所有 小程序项目的父目录下, 最后在小程序项目的根目录下配置文件 .tern-project为:

{
  "libs": [
    "browser",
    "../wxapp"
  ],
  "loadEagerly": [
  ],
  "plugins": {
    "doc_comment": {},
    "es_modules": {},
    "commonjs": {}
  }
}
  • doc_comment 插件用于反射 jsdoc 的文档 (可选,推荐)
  • es_modules 用于 es6 模块的路径解析 (可选,推荐)
  • commonjs 用于 require exports 相关 CMD 解析。

常用补全插件

社区有很多智能补全的辅助插件,例如: supertab, YouCompleteMe, neocomplete 等等。我用的是 deoplete.nvim, 因为感觉上速度要快一点。

如果你想保存文件后自动刷新微信 web 开发者工具,可以参考 让 vim 保存后自动刷新微信小程序

安利几个我个人开发,并且经常使用的插件:

欢迎大家试用。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK