2019了,距离上次写《VIM JavaScript补全》已经过去4年了。

VIM的JavaScript补全 | EFE Tech​efe.baidu.com

这几年,JavaScript社区发生很多变化,当年JS的模块化系统主要还是AMD、CommonJS、CMD等,如今遍地都是ES Module;当年JS的类型系统也几乎是一片空白,如今TS、Flow大行其道!

当年VIM的semantic completer并没有太多选择,只有TernJS。

现在有如日中天的ts,再加上TernJS基本不怎么维护了,所以VIM基于TSServer的completion插件就几乎成了唯一选择。

当然也有基于flow的completion插件

TSServer作为一个language service,可以向vim、vscode、sublime等客户端提供服务。

本文以YouCompleteMe为例,演示一下vim配合TsServer的效果。

YouCompleteMe安装ts completer比较简单:

cd ~/.vim/plugged/YouCompleteMe
./install.py --ts-completer

目前YouCompleteMe内置的ts版本是3.3.3333,硬编码在ycmd中:

https://github.com/Valloric/ycmd/blob/master/build.py#L96​github.com

这里有点坑,后面我会提到。

我们拿一个RN仓库来演示。

react-native init rn48 --version 0.48.0

TSServer需要一个`jsconfig.json`或者`tsconfig.json` 配置才能工作,tsc生成一个就ok了:

cd ./rn48
tsc --init

打开tsconfig中的`allowJs`选项:

{"compilerOptions": {"allowJs": true}
}

编辑一下试试:

VIM

糟糕!好像不太对啊,输入`.`之后没有语义提示啊,只有一些identifier、snip,什么鬼!

vscode可是一切正常的:

VSCODE

要是干不过vscode,可就没什么牛逼可吹了!^_^

经过一番探索,发现原来是因为没有找到类型定义文件!

vscode会自动分析依赖,然后把类型定义文件安装到`~/Library/Caches/TypeScript/<version>` 文件夹下:

而YouCompleteMe内置的ts版本是3.3.3333,刚好不在Caches目录中,vim也不会自动提取安装类型定义文件,所以就挂了!

所以对于VIM,我们需要手动安装类型定义文件:

npm i @types/react-native --save-dev

再试一下:

VIM

终于可以愉快地玩耍了,提示同vscode一致!

补全依赖_VIM JavaScript补全(2019)相关推荐

  1. 解决IDEA中,maven依赖不自动补全的问题

    解决IDEA中,maven依赖不自动补全的问题 参考文章: (1)解决IDEA中,maven依赖不自动补全的问题 (2)https://www.cnblogs.com/flypig666/p/1179 ...

  2. Sublime text代码补全插件(支持Javascript、JQuery、Bootstrap框架)

    Sublime text代码补全插件(支持Javascript.JQuery.Bootstrap框架)   插件名称:javascript-API-Completions 支持Javascript.J ...

  3. php 0补全,PHP给数字或字符串补零0或自动补全其他符号

    PHP给数字或字符串补零0或自动补全其他符号 2014-04-10 在php中有两个函数--至少有两个是否有其他的我还不知道,能够实现数字补零,str_pad(),sprintf()详细如下 一.st ...

  4. 狂补dp Atcoder Educational DP Contest(全)

    狂补dp Atcoder Educational DP Contest(全) 注意 为了减少篇幅,本博客代码部分只放主代码部分,其余省略快读.快输.头文件等代码,即把代码看做伪代码更佳 A - Fro ...

  5. JavaScript补齐指定位数

    开发过程中,我们会经常遇到日期或者数值显示指定位数,例如: "2016-8-3"显示为"2016-08-03" 一.通常解决方案 function dataLe ...

  6. JavaScript补环境及AST实战

    强烈推荐,适合爬虫,js逆向,js逆向小白.爬虫工程师.反爬工程师等等. -----AST入门实战+零基础JavaScript补环境 1. 目录 AST入门实战+零基础JavaScript补环境一.J ...

  7. JavaScript 入门·JavaScript 具有全范围的运算符

    复合赋值运算符 运算符 符号 加法 += 按位与 &= 按位或 |= 按位异或 ^= 除法 /= 左移 <<= 取模 %= 乘法 *= 右移 >>= 减法 -= 无符号 ...

  8. AJAX工作原理及其优缺点 1.什么是AJAX? AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页

    参考文章:https://www.cnblogs.com/SanMaoSpace/archive/2013/06/15/3137180.html AJAX工作原理及其优缺点 1.什么是AJAX? AJ ...

  9. 全栈必备 JavaScript基础

    JavaScript 来了 喔家ArchiSelf 1995年,诞生了JavaScript语言,那一年,我刚刚从大学毕业.在今年RedMonk 推出的2017 年第一季度编程语言排行榜中,JavaSc ...

最新文章

  1. python初学者代码-Python-为什么Python是初学者的完美选择?
  2. 从用户的视角看待网页设计(一)
  3. python join函数_一行 Python 代码能实现这么多丧心病狂的功能?
  4. 红米3国际稳定版刷机+完美ROOT
  5. RegExp()方法参数含义和使用方法
  6. 记录并分析一些软件,以便以后换电脑重新安装(不定时更新)
  7. JavaScript变量,js定义变量
  8. Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector 论文翻译
  9. OpenGL学习之颜色
  10. 伊对和连信交友相亲聊天平台靠谱吗?
  11. padbineditor.php,《智龙迷城》padBinEditor修改器教学
  12. 最先进的Git分布式仓库系统——是如何提升编程效率的?
  13. vi vim 快速跳到文件末尾 GA 在最后一行下方新增一行 (光标换行,文字不换行) GO
  14. 如何给apk文件签名(一)
  15. SAS卡,RAID卡,HBA卡区别与联系
  16. python list除以_每日一课 | python判断奇数和偶数
  17. 安卓商店应用商城申请需要资料
  18. 设置goland里的行间距
  19. 期刊勘误、关注和撤稿:科研作者该知道的信息(转载)
  20. 想体验.NET7又不想安装体验版,Windows沙盒了解一下

热门文章

  1. 微信小程序如何使用iconfont阿里巴巴图标库?
  2. Get 了滤镜、动画、AR 特效,速来炫出你的短视频开发特技!
  3. serv-u 15 设置非21端口外网FTP访问以及更改被动模式端口、防火墙映射
  4. ECS 备份数据到NAS(一):使用Windows Server Backup工具
  5. CENTOS php 7.0 +nginx 环境下 安装yaf框架
  6. Gitlab用户权限管理
  7. [C#项目开源] MongoDB 可视化管理工具 (2011年10月-至今)
  8. 集成服务入门(实验9)日志记录和邮件通知
  9. MySQL Replace INTO的使用
  10. iwebshop商户手机模板_认证小红书企业号手机端最详细的认证流程!认证之前看这篇!...