日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php vim 补全,Vim 不使用 tags 文件补全 PHP 代码

發(fā)布時(shí)間:2025/3/17 php 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php vim 补全,Vim 不使用 tags 文件补全 PHP 代码 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

小朋友們大家好,還記得我是誰嗎?對(duì)了!我就是愛折騰 VIM 的 vimer。今天要給大家講一個(gè) Vim 下代碼補(bǔ)全的新故事。

記得前不久,我還給大家介紹過使用 ctags + Vim 來實(shí)現(xiàn)代碼補(bǔ)全和跳轉(zhuǎn)功能的文章。這篇文章介紹的 ctags 算是程序員的好伙伴——生成代碼 tags 的經(jīng)典軟件了,但這個(gè)世界就止于此了嗎?當(dāng)然不是!今天嘗試用了一下 Vim 的另外一個(gè)馬甲——neovim,發(fā)現(xiàn)居然有很多插件是只給 neovim 準(zhǔn)備的,而且有很多都很不錯(cuò)!其中一款叫做 nvim-completion-manager 的插件,用于即時(shí)(as you type)代碼補(bǔ)全。他神奇的地方在于他居然完全不使用 tags 文件,但自動(dòng)補(bǔ)全的效果卻相當(dāng)不錯(cuò)!

看了此插件的介紹,了解到除了利用 neovim 的多線程處理讓代碼即時(shí)補(bǔ)全不會(huì)卡界面之外(其實(shí)新的 Vim8.0 也支持異步處理了),另外他的補(bǔ)全都是通過其他插件后臺(tái)提供補(bǔ)全的數(shù)據(jù)來實(shí)現(xiàn)的。比如結(jié)合補(bǔ)全 PHP 的插件 phpactor。當(dāng)然 nvim-completion-manager 也是支持從 ctags 里獲取代碼信息來補(bǔ)全的。

這里也不得不重點(diǎn)提一下 phpactor 這個(gè)插件,本身這個(gè)插件是個(gè) PHP 寫的命令行工具,提供了 IDE 的某些功能,比如獲取某個(gè)類里的所有方法信息、重構(gòu)某個(gè)類等。功能還是挺強(qiáng)大的,只不過因?yàn)樗胁僮髟诿钚邢聢?zhí)行,相比較 IDE 來說還是不太方便。不過 phpactor 本身也提供 Vim 插件。通過與 Vim 的合體,他可以在 Vim 里面執(zhí)行他所提供的那些 IDE 級(jí)的功能,只不過這個(gè)插件并不提供即時(shí)代碼補(bǔ)全,需要設(shè)置 omnifunc 來喚起選擇框(然而這么做又把本來 PHP 環(huán)境下 omnifunc 的功能覆蓋了……然后就沒有辦法補(bǔ)全 PHP 本身的函數(shù)……真是糾結(jié))。而此插件與 nvim-completion-manager 配合使用則正好彌補(bǔ)了這個(gè)缺點(diǎn)。因?yàn)?phpactor 本身通過 composer + PHP 本身的類反射功能來實(shí)現(xiàn)獲取某個(gè)類下的所有方法,理論上來說比使用 tags 更準(zhǔn)確,因?yàn)楫吘故?PHP 原生的實(shí)現(xiàn)(我現(xiàn)在就遇到使用 tags 不能返回父類的方法,但我覺得應(yīng)該沒這么弱吧可能還需要什么設(shè)置)。

另外 phpactor 也支持通過類名返回類全名(包含命名空間)的功能,可以輕松展開/引入某個(gè)類的命名空間,所以之前一直用的 arnaud-lb/vim-php-namespace 擴(kuò)展也可以刪除了。

聽到這里是不是已經(jīng)想嘗鮮了呢?將以下配置加入到你的 neovim 配置文件里然后運(yùn)行 PlugInstall 命令即可(前提是安裝了 vim-plug 作為 Vim 插件管理工具,并且在 PATH 里安裝了 composer)。

Plug 'roxma/nvim-completion-manager'

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

Plug 'roxma/ncm-phpactor'

就我目前嘗試的效果還是不錯(cuò)的,但因?yàn)?Vim 本身跟 ctags 就是好基友,很多功能都通過 tags 文件來實(shí)現(xiàn)所以完全不用 tags 的話可能有很多功能還需要重復(fù)實(shí)現(xiàn),有點(diǎn) 2……(比如以前 ctrl + ] 是跳轉(zhuǎn)到定義,沒有 tags 文件就跳轉(zhuǎn)不了了,phpactor 重新實(shí)現(xiàn)了這個(gè)功能,并且還重新設(shè)定了快捷鍵……真是有夠折騰的……)下次我再試試 neocomplete 在 neovim 上的馬甲 deocomplete 看看好不好用。

寫作累,服務(wù)器還越來越貴

求分擔(dān),祝愿好人一生平安

天使打賞人

總結(jié)

以上是生活随笔為你收集整理的php vim 补全,Vim 不使用 tags 文件补全 PHP 代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。