VIM YouCompleteMe(ycm) 对于Python3第三方库的自动补全【部分解决】

问题:VIM 用YouCompleteMe(ycm)自动补全插件时,只能支持Python3 的标准库的自动补全,而不能自动补全第三方库的内容。

环境:Mac+VIM 8.0+vundle+ycm+python3

解决:

尝试对Python3第三方库的自动补全进行配置。

1)在网上查阅了很多资料,至今未能解决。

首先是官网https://github.com/Valloric/YouCompleteMe#working-with-third-party-packages里的安装介绍。

照着操作完全没有起作用,第三方库还是联想不起来。

根据查阅的资料,ycm实际是用的jedi的模块和功能来补全python,因此参考https://vi.stackexchange.com/questions/2403/vim-code-completion-for-python-3的意见,直接下载jedi并安装。

git clone --recursive https://github.com/davidhalter/jedi-vim.git ~/.vim/bundle/jedi-vim

然后在~/.vimrc中添加:

"为了Python3的第三方库安装Jedi插件
Plugin 'davidhalter/jedi-vim' "===============================Jedi==================================
if has('python3')
let g:loaded_youcompleteme = 1 " 判断如果是python3的话,就禁用ycmd。
let g:jedi#force_py_version = 3
let g:pymode_python = 'python3'
endif
"===============================Jedi===================================

但是实际运行起来会报错,提示在Python的目录下没有找到jedi.py的文件,于是再安装一个jedi的库。

pip3 install jedi

结果,还是不行;而且jedi的匹配需要用到很多快捷键。因此直接放弃。还是回头来找ycmd的实现。

2)重新查阅官方文件。检查配置,首先清除多余的配置,注意:清干净!

在~/.vimrc中添加:

let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py' 

然后按照官方指导老老实实的重新配置.ycm_extra_conf.py。按照官方的说明,加上Python语言有一些了解,对  ~/.vim/bundle/YouCompleteMe下的.ycm_extra_conf.py做如下更改(老规矩,更改之前先备份),并拷贝到$HOME目录:

def PythonSysPath( **kwargs ):
sys_path = kwargs[ 'sys_path' ]
改为:
def PythonSysPath( **kwargs ):
sys_path = kwargs[ 'sys_path' ]
sys_path.insert( 1, '/path/to/third_party/package' )
return sys_path
cp ~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py ~/

然后重启vim,执行:YcmCompleter GoTo 就可以看到部分效果了。不是所有都能引用,但是比原来一点没有补全要强的太多了。

VIM YouCompleteMe(ycm) 对于Python3第三方库的自动补全【部分解决】的更多相关文章

  1. Vim使用YouCompleteMe达到类似IDE的代码提示、补全,以及其他实用设置

    接触Linux有两年了,vim还是只会简单的操作.最近实在受不了sublime的代码提示,决定花点时间来配置下vim.本文讲自己认为方便的vim配置,称不上完美,只讲究简单实用. 使用 ctags 主 ...

  2. Vimer的福音 新时代的Vim C++自动补全插件 clang_complete

    使用vim的各位肯定尝试过各种各样的自动补全插件,比如说大名鼎鼎的 OmniCppComplete .这一类的插件都是对 Ctags 生成的符号表进行字符串匹配来获得可能的补全项.他们在编写 C 代码 ...

  3. 新时代的Vim C++自动补全插件 clang_complete

    Vimer的福音 新时代的Vim C++自动补全插件 clang_complete   使用vim的各位肯定尝试过各种各样的自动补全插件,比如说大名鼎鼎的 OmniCppComplete .这一类的插 ...

  4. [转载]启用 VIM 中的 Python 自动补全及提示功能

    转载: http://zhongwei-leg.iteye.com/blog/941474 周围的同事不喜欢使用 VIM 写 Python 代码的原因之一就是,VIM 不能像 Visual Studi ...

  5. 解决VS Code开发Python3语言自动补全功能不带括号的问题

    Visual Studio Code(以下简称VS Code)用来开发Python3,还是很便利的,本身这个IDE就是轻量级的,才几十兆大小,通过安装插件的方式支持各种语言的开发.界面也美美哒,可以在 ...

  6. Linux --- vim 安装、支持python3的配置、插件自动补全YCM的安装配置及全过程错误总结

    1.git(用来下载vim和相关插件) sudo apt-get install git 2,cmake(用来编译clang-llvm) sudo apt-get install build-esse ...

  7. 如何安装vim自动补全插件YouCompleteMe(YCM)

    Vim是全平台上一个高度可拓展的编辑器.它本身只是一个简陋的编辑器,但是因为有各种插件而变得强大.使用Vim编写代码就不免遇到代码补全的问题.常用的代码补全插件有两个:日本人shougo写的neoco ...

  8. Vim自动补全神器–YouCompleteMe

    一.简介 YouCompleteMe是Vim的自动补全插件,与同类插件相比,具有如下优势 1.基于语义补全 2.整合实现了多种插件 clang_complete.AutoComplPop .Super ...

  9. Vim自动补全神器–YouCompleteMe

    YouCompleteMe的特别之处 基于语义补全 总所周知,Vim是一款文本编辑器.也就是说,其最基础的工作就是编辑文本,而不管该文本的内容是什么.在Vim被程序员所使用后,其慢慢的被肩负了与IDE ...

  10. Vim自动补全神器:YouCompleteMe

    第一次听说这个插件还是在偶然的情况下看到别人的博客,听说了这个插件的大名.本来打算在实训期间来完成安装的,无奈网实在不给力,也就拖到了回家的时候.在开始准备工作的时候就了解到这个插件不是很容易安装,安 ...

随机推荐

  1. Spring事务(三)-事务传播行为

    在Spring里,一个事务方法被另外一个事务方法调用时,两个方法的事务应该如何进行,说白话一点,就是说当出现异常需要回滚时,各个方法的数据操作是否要全部回滚,事务传播行为就是决定了这样的一个处理结果. ...

  2. folder-alias vscode左侧目录树 起别名 插件 (git decorations)

    folder-alias vscode左侧目录树 起别名 插件 插件 效果 不足 文件路径或目录路径中包含中文 会挂不上别名,纯英文路径没问题 有修改后,git会覆盖,不显示别名 个人意见 我的项目都 ...

  3. UDP可靠传输协议KCP的一些理解

    UDP主要用在哪两个方面 游戏 音视频通话 为什么要使用UDP? 实时性的考虑,丢包重传,TCP协议栈重传无法控制,UDP重发可以自定义策略. 在DNS查询的时候,也使用UDP,对资源的考虑. 如何做 ...

  4. PAT 甲级【1007 Maximum Subsequence Sum】

    本题是考察动态规划与java的快速输入: max[i]表示第i个结尾的最大的连续子串和.b begin[i]表示第[begin[i],i]为最大和的开始位置 超时代码: import java.io. ...

  5. 瑞云科技CTO赵志杰出席广州广告数字创意峰会并发表演讲

    3月23日下午,广州广告数字创意峰会暨穗广协企业家大讲堂年度巡礼活动在广州图书馆圆满举行.本次峰会由广州市人民政府统筹,中共广州市委宣传部.广州市文化广电旅游局.中共广州市天河区委.广州市天河区人民政 ...

  6. 03.Java数据结构问题

    目录介绍 3.0.0.1 在arrayList中System.arraycopy()和Arrays.copyOf()方法区别联系?System.arraycopy()和Arrays.copyOf()代 ...

  7. Toast源码深度分析

    目录介绍 1.最简单的创建方法 1.1 Toast构造方法 1.2 最简单的创建 1.3 简单改造避免重复创建 1.4 为何会出现内存泄漏 1.5 吐司是系统级别的 2.源码分析 2.1 Toast( ...

  8. 记录--try...catch知识补全

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 说到try...catch都觉得非常熟悉了,不就是用来捕捉代码块中的错误嘛,平时也用得比较多的.然而因为了解不够多,我的面试却栽在了一个简 ...

  9. 如何用Flask中的Blueprints构建大型Web应用

    本文分享自华为云社区<构建大型Web应用Flask中的Blueprints指南>,作者: 柠檬味拥抱. 什么是Blueprints? Blueprints是Flask中的一种模式,用于将应 ...

  10. Csharp中表达式树

    Csharper中的表达式树 这节课来了解一下表示式树是什么? 在C#中,表达式树是一种数据结构,它可以表示一些代码块,如Lambda表达式或查询表达式.表达式树使你能够查看和操作数据,就像你可以查看 ...