问题标签 [jedi-vim]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - jedi-vim 是否与 YouCompleteMe 冲突?
YouCompleteMe (YCM) 和 jedi-vim 是两个提供自动补全功能的 vim 插件,它们都在 Python 下使用了 jedi。然而,两者都很好,因为除了文档之外,jedi-vim 还提供了一些有用的功能,比如“转到定义”和“查看文档字符串”,而 YouCompleteMe 可以与其他语言一起使用。
由于两者都提供 Python 自动完成功能,是否需要任何特殊配置来防止两个插件发生冲突?或者 jedi-vim 的自动完成器会简单地覆盖 Python 中的 YCM?
jedi-vim - 上班时遇到的严重问题 jedi vim (windows)
我已经在 stackoverflow 和其他页面上阅读了很多类似主题的主题和标签 jedi-vim。
但是这个问题仍然让我无法做我的实际工作:-/。
到目前为止我已经来回尝试了几个步骤,但基本上我做了以下操作:
1.安装最新的Python3.4(32bit)
2.得到这个预编译的VIM:
(https://bitbucket.org/Haroogan/vim- for-windows/downloads/vim-7.4.417-python-2.7-python-3.4-ruby-2.0.0-lua-5.2-perl-5.18-windows-x86.zip) (32Bit)
3. 已安装 Pathogen
4. 已安装Flake8 成功
5. 使用 pip 安装 Jedi(系统范围?)
6. 从 github.com/davidhalter/jedi-vim 获取 Jedi-vim 并将 dir jedi-vim-master 解压缩到:
6.1。$HOME/vimfiles/bundle/ 仅
6.2。$VIM/vimfiles/bundle/ 仅
6.3。两个都
python 和 python3 都可以工作(在我只有 python3 之前)。
所以
":python3 import sys; print(sys.version)" 和
":python2 import sys; print(sys.version)" 给出了输出。
在我的 vimrc 中,我强制 jedi-vim 使用 python3:
“let g:jedi#force_py_version = 3”
现在实际的错误如下:当我输入例如“self”时。在 *.py 文件中,他搜索了半秒并说:
E117: unknown function: pythoncomplete#Complete
-- Omni completion (^O^N^P) Pattern not found
当我想调用一个函数并输入参数时,会弹出/淡入一些东西,但这是一些不清楚的迹象,而不是实际参数。 看这里
其他信息:
:scriptnames : D:\tools\v\plugin\getscriptPlugin.vim
D:\tools\v\plugin\gzip.vim
D:\tools\v\plugin\matchparen.vim
D:\tools\v\plugin \netrwPlugin.vim
D:\tools\v\plugin\rrhelper.vim
D:\tools\v\plugin\spellfile.vim
D:\tools\v\plugin\tarPlugin.vim
D:\tools\v\plugin\tohtml .vim
D:\tools\v\plugin\vimballPlugin.vim
D:\tools\v\plugin\zipPlugin.vim
D:\tools\v\menu.vim
D:\tools\v\lang\menu_de.latin1.vim
D:\tools\v\lang\menu_de_de.latin1.vim
D:\tools\v\autoload\paste.vim
D:\tools\v_gvimrc
D:\tools\v\syntax\syntax.vim
D:\tools\v\syntax\synload.vim
D:\tools\v\syntax\syncolor.vim
D:\tools\v\filetype.vim
H:\vimfiles\autoload\pathogen.vim
D:\tools\v \ftoff.vim
D:\tools\v\syntax\nosyntax.vim
D:\tools\v\ftplugin.vim
D:\tools\v\indent.vim
D:\tools\v\syntax\python.vim
D: \tools\v\ftplugin\python.vim
D:\tools\v\bundle\jedi-vim-master\ftplugin\python\jedi.vim
D:\tools\v\bundle\jedi-vim-master\autoload\jedi .vim
D:\tools\v\bundle\vim-flake8-master\ftplugin\python_flake8.vim
H:\vimfiles\bundle\vim-flake8-master\ftplugin\python_flake8.vim
D:\tools\v\indent\python .vim
我的 vimrc: https ://drive.google.com/file/d/0Bwb4EPY-atMdOWhnOGJiNmxYbGM/view?usp=sharing
python - 如何让 JEDI 识别 Python C 扩展
我目前正在用 C 语言开发一个 Python 模块,但我无法弄清楚如何让 JEDI “看到”我的模块。
我已经在 C 代码中设置了所有文档字符串并在 my 中设置了每个字段setup.py
,但是当我编辑example.py
用于测试的文件并尝试使用Shift+在 vim 中显示文档时K,我收到一条错误消息:
例外,这不应该发生。
回溯(最近一次通话最后):
文件“/home/beben/.vim/bundle/jedi-vim/jedi_vim.py”,第 268 行,在 show_documentation
定义 = script.goto_definitions()
文件“/home/beben/.vim/bundle/jedi-vim/jedi/jedi/api/init .py ”,第 365 行,在 goto_definitions
names = [s.name for s in definitions] AttributeError: 'NoneType' object has no attribute 'name'
没有找到相关的文档。
阅读jedi
的文档后,我了解到它用于Pydoc
收集有关模块的信息。当我运行Pydoc mymodule
时,文档会正确显示。
我还需要在我的代码中添加什么内容才能被 JEDI 识别吗?
python - 无法在导入的模块上使用 jedi vim
可以说我有下一个结构
我现在编辑 run.py:
jedi vim 在 MyClass1 上运行良好,但是当我尝试 MyClass2 中的任何内容时,它只会显示错误:
如何使它在 myclass2 上完成?
python - 在 TAB 完成时未检测到 Jedi Vim Python 子类
问题出在 Arch (1) 和 Debian Jessie (2) 上,其中:
1.
- Debian Jessie 没有设置 PYTHONPATH。
我的 vim 是用 python 编译的。
我尝试了以下 Arch Linux 软件包:
补全适用于类,但不适用于子类。
我删除了它们并下载了 git 包。
同样,补全适用于类,但不适用于子类。
我之前从Vim YouCompleteMe Python 子类发送我到 jedi-vim 的问题在 Arch Linux 中的 TAB 完成中未检测到
python - 在 Jedi 中获取建议函数的返回类型
我正在尝试改进使用 YouCompleteMe(使用 Jedi)显示 python 完成的方式。目前它只显示完成和“完整路径”:
理想情况下,我希望它显示函数的签名和推断的返回类型(就像您使用 C/C++ 完成一样)。
有没有办法从jedi.api.classes.Completion对象(代表一个函数)到该函数的返回类型?
Jedi 在某处拥有该信息,因为如果您调用该函数并完成它obj.function().|
,它知道function
返回什么类型并提供正确的完成。
vim - jedi-vim如何跳转到其他文件中的函数定义
我是新手jedi-vim
,不知道如何跳转其他文件中的函数定义。
的jedi-vim
文档是:
以下是其中的一部分:
注意:可能会发生变化!
let g:jedi#goto_command = "<领导>d"
让 g:jedi#goto_assignments_command = "<领导>g"
让 g:jedi#goto_definitions_command = ""
让 g:jedi#documentation_command = "K"
让 g:jedi#usages_command = "<领导者>n"
让 g:jedi#completions_command = "< C 空间>"
let g:jedi#rename_command = "<领袖>r"
我想知道什么是<leader>
和<C-Space>
意味着什么以及如何在 VIM 上使用这些命令
python - Jedi-vim 仅自动插入匹配选项(需要禁用它)
问题是当 jedi-vim 只找到一个自动完成匹配项时,它会自动插入该匹配项。我需要以某种方式禁用此功能。
我已经尝试过的:
let g:jedi#smart_auto_mappings = 0
,但它只禁用自动from ... import ...
插入;let g:jedi#popup_on_dot = 0
,但它也会禁用点选项上的弹出窗口(所以我需要输入<C-space>
才能看到它)。let g:jedi#popup_select_first = 0
也无济于事,因为它只会禁用弹出菜单中的第一个匹配选择,但不会阻止自动插入唯一匹配。
另外我没有安装任何其他自动完成插件。如果有帮助,这是我的 .vimrc 文件
有没有办法禁用仅匹配功能的自动插入但保持弹出点?
PS您可以使用此示例重新创建此行为:
然后,当您键入A
并按点时,i
将自动插入。
python - 使用 jedi-vim 自动完成父对象
我jedi-vim
用于完成,它做得很好。但由于某种原因,我在完成父对象时遇到了麻烦。
例如:
有没有我应该添加的设置,.vimrc
或者这就是绝地的工作方式?我还挖掘了一些问题跟踪器,但没有找到有用的东西。
vim - jedi-vim:来自非标准路径的模块
我有不同的本地 python 安装,它们是用hashdist 构建的。另一方面,vim 安装在系统范围内(ArchLinux),引用系统的 python3。
我想将绝地的自动完成功能用于一个孤立的 python 构建的包。some/path/lib/python2.7/site-packages
系统python(因此,vim)不知道的模块所在的位置。此外,vim 是为 python3 编译的;那个“其他版本”是python2.7。
有没有办法做到这一点?如果我也可以选择一个特定的包裹,那也很好。由于 python 版本冲突,$PYTHONPATH 不起作用(至少)。