python vim插件_有哪些好用到爆的vim插件?

当初写这个回答的时候用手机码的,非常水。我另外写了一篇文章整理了一些常见的生产力插件,比这个回答要全很多,也要客观很多,有兴趣的话可以去看看Sainnhepark:VIM 插件推荐​zhuanlan.zhihu.com

以下言论带有严重主观倾向,只是我个人的使用体验,算不上是评测。

插件管理器:

1. vim-plug

异步安装更新,友好的UI,简单易用,提供绝大部分你需要的操作

2. dein.vim

异步安装更新,UI不友好也不简单易用(不过你可以安装dein-ui),但是相比vim-plug提供更加丰富的函数,使用缓存因此插件比vim-plug加载更快,另外lazy load做得也比vim-plug好得多

Language Server Client:

1. LanguageClient-neovim

异步,python插件,支持大部分language server操作,支持deoplete和ncm2两个补全框架

2. vim-lsp

异步,纯vim script插件,支持asyncomplete, deoplete和ncm2三个补全框架,部分lsp支持有问题

3. coc.nvim

8012年的黑马。异步,nodejs后端,全部language server操作,支持coc.nvim本身的补全框架

不推荐vim-lsc,虽然也是异步的但是和其它插件的的整合并不好。

也不推荐ale的language server功能,同样是因为和其它插件的整合并不好。

另外也不推荐neovim内置的lsp客户端,理由同上。

我说的整合不好是比如和补全框架的整合。

补全框架:

1. deoplete.nvim

异步,python后端,支持lsp和snippets,最多的external sources,但是是这几个补全框架里最慢的一个(就算你把auto complete delay那个全局变量改到0并且不开omni还是很慢,而且要是设置得太小还会有bug)

这里额外推荐一个deoplete的external source,deoplete-tabnine。tabnine用了ycm的补全资源并且用了机器学习,说实话确实有点智能,用过就知道了。

2. ncm2

异步,python后端,支持lsp和snippets,我觉得是这几个补全框架里第二快的,非常丝滑。另外虽然说不上开箱即用但是也不用像deoplete那样设置太多东西,很好配置。

3. asyncomplete

异步,纯vim script,vim-lsp的作者开发的插件,定位就是最小化依赖。同样,它也支持lsp和snippets。

4. coc.nvim

8012年的黑马,这是这几个补全框架里最快的一个。异步,nodejs后端,配合它自身的lsp支持用起来非常舒服,同样也支持lsp和snippets,强烈推荐,值得一试。

没有推荐ycm,虽然已经支持异步了,但是需要编译,需要弄个100多MB的可执行文件,而且很多人都弄不好,那为什么不用补全框架+lsp+external source的搭配呢?个人不觉得ycm这种all in one式的做法有什么优势。另外,你要是实在想用ycm的补全资源,你可以试试deoplete-tabnine。

没有推荐completor.vim,因为虽然也是异步补全框架,但是不支持lsp

2018.12.13

我的锅,completor是支持lsp的。只不过目前我只知道LanguageClient-neovim可以和它整合,,而且还仅限于python,那我干嘛不直接用jedi呢

snippets:

1. neosnippet.vim

并不依赖python,支持额外的snippets sources,简单粗暴并且对上面几个补全框架的支持很不错,但是比较让我受不了的是它貌似只能往前跳?

2. ultisnips

if has('python')插件,同样支持很多额外的snippets sources,非常有名的老牌插件,当然,对上面几个补全框架的支持也是最好的。如果你的vim有python支持,那么首推。不过Shougo大佬认为他的neosnippet.vim更快,也有一些其它特性我忘了,有兴趣的话可以去看看neosnippet里关于比较这两个插件的那个issue

没有推荐vim-snipmate,因为和补全框架的整合不如上面两者,我的意思是一些补全框架不支持vim-snipmate。

值得关注的插件:deoppet.nvim

看到deo你就懂了,这也是Shougo大大的插件,目前处于实验阶段,neosnippet的"dark powered"版本。

2018.12.29

coc-snippets,支持额外的snippets,支持来自其它coc扩展的snippets,支持嵌套snippets,“Most importantly, it never slows you down.”

异步Fuzzy Finder:

vim的fuzzy finder可不是只能像命令行里的fzf那样简单地fuzzy match,下面推荐的几个fuzzy finder插件你可以用它来:搜索字符串,对grep结果进行过滤(不需要其它grep插件了),浏览和跳转tags(不需要tagbar了),浏览、跳转以及管理buffer、files,跳转最近使用的文件(MRU),搜索历史剪切板内容,切换color scheme,甚至浏览你的github星标版本库。

1. denite.nvim

最高的可定制度,最高的可扩展性,最多的source,也最不好上手。依赖python。

2. fzf.vim

开箱即用,新手友好,无需太多配置,source也足够多。但它实际上fzf的一个vim前端,并不是一个典型的vim插件,你需要安装fzf才能使用,不过也正是因为如此,它用起来非常丝滑。另外它缺乏官方文档,可定制度也较差。不依赖python。

3. LeaderF

开箱即用,新手友好,无需太多配置。它的算法非常厉害(个人觉得只有fzy能和它比),另外它也提供了很多非常实用的选项(比如正则过滤),但是source相比前两者较少。依赖python。

2018.12.20

最近的一个32万行代码的模糊匹配测试中,对下面几个模糊匹配工具进行了测试:

leaderf, fzf, skim, ctrlp的默认matcher, denite的默认matcher,cpsm(denite和ctrlp的matcher之一), fruzzy(denite和ctrlp的matcher之一)

按匹配精准度和匹配速度来衡量它们的性能的话,leaderf的表现是最好的。

Note: leaderf的关键部分是用c写的

另外,关于ctrlp。ctrlp已经有了异步模式,但是它的性能和leaderf, fzf不在一个档次,并且群里有大佬说它的异步还有很多bug。

如果你的vim没有python支持,个人推荐用fzf

异步检错:

1. ale

ale一直是个饱受争议的插件,毫无疑问它在语法检错方面确实做得非常不错,另外和status line的整合也相当好。但是很多人认为ale做了太多应该由其它插件来完成的事情,导致它非常臃肿。

我想在这里替ale说两句。

首先它并不臃肿,因为只要你不在插件加载前设置一个全局变量为true,那么很多功能都不会加载,“One of ALE's general missions is that you won't pay for the features that you don't use.”

其次,那些杂七杂八的功能也并不反unix哲学,它确实是只想做一件事,并把它做好。lint的工具可以大致分为两类,一类是外部语法检查工具如cppcheck、stylelint,另一类是lsp自带的语法检查功能。而一个优秀的异步检错插件应该能同时使用这两类工具来检错。

而你知道,lsp本身提供了丰富的功能,不仅仅是语法检查,还有补全,symbol之类的。所以ale开发者就觉得,反正都做了lsp了,那干脆把lsp的其它功能也弄上去算了。于是ale就提供了其它很多lsp的功能,导致它看起来非常emacs。

但我觉得ale作为一个lint插件足够优秀,所以在这里推荐一下。

2. neomake

由于ale这些杂七杂八的特效,很多人选择了neomake,它就不提供ale的那些lsp的额外功能。

但我觉得它俩是一路货色,neomake也做了应该由其它插件完成的事情,它不仅仅用来lint,还用来make。

我猜neomake开发者的想法和ale的开发者想的差不多的,反正都把外部工具的lint功能都做了,那干脆就把这些工具的其它功能(make)一起做了算了。但这些其它功能应该是asyncrun.vim或者vim-autoformat的工作。

另外多说一句,neomake不支持lsp的lint。

2018.12.14

评论区有大佬指出这个插件原本是因为vim的make不是异步的所以才做了这个插件。是我的锅。

没有推荐vim-watchdogs虽然也是异步lint但是官方文档是日语,我也不清楚和statusline的整合好不好。

再来几个:

vim-polyglot,扩展语言包

vim-orgmode,vim版的emacs org mode。以后再有邪教成员拿org mode给你洗脑,就拿这个去怼他。

vdebug,只支持使用DBGP协议的debug工具。

vim-vebugger,支持的debug工具也很多,不局限于使用DBGP协议的工具。

上面这些插件都是重量级的插件,其它一些零零散散的就懒得说了,去翻vimawesome,或直接搜vim然后按星标递减排名,慢慢找吧。

个人强烈建议自己来配置插件,不要去用别人的。别人的.vimrc是拿来看的,不是拿来用的。你可以拿他们的配置文件作为参考,但是不要直接用。

而且说句真心话,那些比较有名的.vimrc里有很多插件真的是又老又旧。。。。

另外,如果你确实觉得自己英语不好,看不懂:help foo的英文文档,那么你可以装个vim-youdao-translater来划词翻译。

关于“插件那么多我该用哪个?”,你可以去reddit看看网友们的评论,也可以去README.md或issue里翻一翻有没有这些插件间的比较。

不过,只有小孩子才做选择,大人当然是全都要。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值