wxapp.vim 已全面支持微信小程序代码智能补全
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.
wxapp.vim 已全面支持微信小程序代码智能补全
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 保存后自动刷新微信小程序
安利几个我个人开发,并且经常使用的插件:
- vim-easygit 在 vim 里面高效的操作 git
- unite-git-log 使用 unite 界面与 gitlog 高效交互
- unite-js-func 使用 unite 界面快速定位 javascript 函数
- mycomment.vim 一键解决注释问题,已支持小程序
- unite-extra 提供 emoji,command,project 和 node 的 unite source
- redismru.vim 提供异步的 MRU 文件列表支持
- macnote.vim 提供 Markdown 为语法的笔记管理功能
欢迎大家试用。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK