小朋友们大家好,还记得我是谁吗?对了!我就是爱折腾 VIM 的 vimer。今天要给大家讲一个 Vim 下代码补全的新故事。

记得前不久,我还给大家介绍过使用 ctags + Vim 来实现代码补全和跳转功能的文章。这篇文章介绍的 ctags 算是程序员的好伙伴——生成代码 tags 的经典软件了,但这个世界就止于此了吗?当然不是!今天尝试用了一下 Vim 的另外一个马甲——neovim,发现居然有很多插件是只给 neovim 准备的,而且有很多都很不错!其中一款叫做 nvim-completion-manager 的插件,用于即时(as you type)代码补全。他神奇的地方在于他居然完全不使用 tags 文件,但自动补全的效果却相当不错!

看了此插件的介绍,了解到除了利用 neovim 的多线程处理让代码即时补全不会卡界面之外(其实新的 Vim8.0 也支持异步处理了),另外他的补全都是通过其他插件后台提供补全的数据来实现的。比如结合补全 PHP 的插件 phpactor。当然 nvim-completion-manager 也是支持从 ctags 里获取代码信息来补全的。

这里也不得不重点提一下 phpactor 这个插件,本身这个插件是个 PHP 写的命令行工具,提供了 IDE 的某些功能,比如获取某个类里的所有方法信息、重构某个类等。功能还是挺强大的,只不过因为所有操作在命令行下执行,相比较 IDE 来说还是不太方便。不过 phpactor 本身也提供 Vim 插件。通过与 Vim 的合体,他可以在 Vim 里面执行他所提供的那些 IDE 级的功能,只不过这个插件并不提供即时代码补全,需要设置 omnifunc 来唤起选择框(然而这么做又把本来 PHP 环境下 omnifunc 的功能覆盖了……然后就没有办法补全 PHP 本身的函数……真是纠结)。而此插件与 nvim-completion-manager 配合使用则正好弥补了这个缺点。因为 phpactor 本身通过 composer + PHP 本身的类反射功能来实现获取某个类下的所有方法,理论上来说比使用 tags 更准确,因为毕竟是 PHP 原生的实现(我现在就遇到使用 tags 不能返回父类的方法,但我觉得应该没这么弱吧可能还需要什么设置)。

另外 phpactor 也支持通过类名返回类全名(包含命名空间)的功能,可以轻松展开/引入某个类的命名空间,所以之前一直用的 arnaud-lb/vim-php-namespace 扩展也可以删除了。

听到这里是不是已经想尝鲜了呢?将以下配置加入到你的 neovim 配置文件里然后运行 PlugInstall 命令即可(前提是安装了 vim-plug 作为 Vim 插件管理工具,并且在 PATH 里安装了 composer)。

Plug 'roxma/nvim-completion-manager'

Plug 'phpactor/phpactor', {'do': 'composer install'}

Plug 'roxma/ncm-phpactor'

就我目前尝试的效果还是不错的,但因为 Vim 本身跟 ctags 就是好基友,很多功能都通过 tags 文件来实现所以完全不用 tags 的话可能有很多功能还需要重复实现,有点 2……(比如以前 ctrl + ] 是跳转到定义,没有 tags 文件就跳转不了了,phpactor 重新实现了这个功能,并且还重新设定了快捷键……真是有够折腾的……)下次我再试试 neocomplete 在 neovim 上的马甲 deocomplete 看看好不好用。

写作累,服务器还越来越贵

求分担,祝愿好人一生平安

天使打赏人

php vim 补全,Vim 不使用 tags 文件补全 PHP 代码相关推荐

  1. vim:精通 vim

    VIM下的跳转练习 < type="text/javascript"> document.body.oncopy = function() { if (window.c ...

  2. tags文件生成及使用

    http://www.winu.cn/space-14160-do-blog-id-76086.html ctags可以分析程序生成tag文件为vim所用,从而在编写程序时实现函数原型.数据结构声明等 ...

  3. Vim: 使用tags文件扩展YCM对C族语言第三方库的代码自动补全功能

    前言 在众多Vim编辑器的自动补全插件中,YouCompleteMe(YCM)绝对是最好用的插件之一,但其配置过程往往令初学者望而却步.经过笔者多年折腾,至今基本达到满足日常使用水平. 如果读者对Yo ...

  4. vim note(6)--vim的一个较全的介绍(转)

    vim的配置文件 ~/.vimrc       用户的默认配置文件 ~/.vim/plugin/   用户的默认脚本文件的存放文件夹 ~/.vim/ftplugin/ 用户的默认文件类型相关脚本文件的 ...

  5. 用python实现一个按需生成用于vim跳转的tags文件的小程序

    初学python,找个有用的来练手.选定了一个我早就想做的让vim按需生成tags跳转文件的小程序. vim的tags用于跳转的好处自是不用多说,但是如何生成tags确实困扰我的一大问题,用VS的都知 ...

  6. 最全VIM in PyCharm 的.ideavimrc文件的键盘设置

    .ideavimrc -- 插件vim在PyCharm的配置文件,位于C盘Administrator目录,通过修改可以无限绑定各种键. 具体键盘图片链接:一图读懂 VIM KeyMap / Cheat ...

  7. 你见过的最全vim编辑器常用操作总结(我是困不住的野马,却想做你怀里的猫)

    目录 一.文本编辑器vi/vim 1.文本编辑器的作用 2.Linux中最常用的文本编辑器 3.vi/vim区别 二.vim编辑器的工作模式 1.三种工作模式 2.不同模式之间的切换 (1)命令模式- ...

  8. vim的强大,vim设置和插件的使用,脱离windows才是王道

    map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR> let Tlist_Show_One_ ...

  9. java vim ide_把VIM配置成IDE开发环境 | 学步园

    VIM常用命令 VIM命令图 VIM键盘布局图 VIM键盘布局英文 VIM键盘布局中文 将VIM配置成IDE(通过 VIM基本插件 和VIM配置文件) Ubuntu14下我的VIM IDE配置的效果图 ...

最新文章

  1. 使用思维导图编写测试用例
  2. 浅谈大数据中的 2PC、3PC、Paxos、Raft、ZAB
  3. python发送各类邮件的主要方法
  4. jQuery Object 和 HTML Element间的转换
  5. 2019-03-18-算法-进化(删除链表的倒数第N个节点)
  6. 查看sql server 数据库连接数
  7. html5饼图的制作方法,html5制作饼图
  8. iPhone XI Max带壳渲染图曝光:依然刘海屏 后置“浴霸”三摄实锤
  9. 如何用编程 get 百万年终奖?
  10. 深度理解依赖注入(Dependence Injection)
  11. 测试用例,怎么写 ?
  12. mysql s索引 树_mysql 学习 - B+树索引
  13. java中改变文本字体和大小_Java实训——编写一个窗体程序,可以对文本区中的文字设置字体和大小。...
  14. Android等宽字体
  15. 韦恩州立大学计算机科学,2019上海软科世界一流学科排名计算机科学与工程专业排名韦恩州立大学排名第301-400...
  16. 解决笔记本WIFI共享网络给黑群晖
  17. 父亲节php源码,父亲节 | 愿时光再慢一点,祝天下所有的父亲,父亲节快乐
  18. UVA, 563 Crimewave
  19. 数列和级数(基本概念)
  20. 20165232 结对编程第二周总结

热门文章

  1. 一个大数据量表访问优化--联动下拉框查询优化
  2. STM32之DAC原理
  3. makefile之伪目标(6)
  4. 建站用什么cms_我想做独立站,我应该用什么建站工具?
  5. InnoDB原理篇:Change Buffer是如何提升索引性能的?
  6. 卧槽!我随便写的一个 API 竟获得 2.5 亿的访问量...
  7. “既生 ExecutorService, 何生 CompletionService?”
  8. 超干货!为了让你彻底弄懂MySQL事务日志,我通宵肝出了这份图解!
  9. Redis——史上最强【集群】入门实践教程
  10. 什么鬼?弃用JDK动态代理,Spring5 默认使用 CGLIB 了?