无法使jedi-vim插件正常工作

10

我正在尝试使用jedi-vim插件进行Python自动完成,但我无法让它正常工作。

我使用的是Vim 7.3,以下是我的操作步骤:

1- 从GitHub中克隆了代码

git clone http://github.com/davidhalter/jedi-vim path/to/bundles/jedi-vim

2- 将 jedi-vim/plugin/jedi.vim 复制到 ~/.vim/plugin/

3- 将 jedi-vim/doc/jedi-vim.txt 复制到 ~/.vim/doc/

现在当我打开 vim,进入插入模式并输入

import wave
wave.

虽然文档指定了在插入模式下输入句点也会触发自动完成,但是没有任何反应。如果我尝试使用<Ctrl-Space>,则会出现以下错误。

E29: No inserted text yet
Press ENTER or type command to continue

我查看了 :map 命令,似乎没有使用 <Ctrl-Space>

我检查了:map命令,似乎没有使用<Ctrl-Space>

n  [m          *@:call <SNR>21_Python_jump('?^\s*\(class\|def\)')<CR>
n  [[          *@:call <SNR>21_Python_jump('?^\(class\|def\)')<CR>
n  ]m          *@:call <SNR>21_Python_jump('/^\s*\(class\|def\)')<CR>
n  ]]          *@:call <SNR>21_Python_jump('/^\(class\|def\)')<CR>
n  gx            <Plug>NetrwBrowseX
n  <Plug>NetrwBrowseX * :call netrw#NetrwBrowseX(expand("<cWORD>"),0)<CR>

因为我使用 <Ctrl-Space> 时出现了错误,所以我猜它一定是有用的,对吗?为什么我不能在 :map 中看到它呢?

我错过了什么吗?

编辑

:scriptnames

  1: /usr/share/vim/vimrc
  2: /usr/share/vim/vim73/debian.vim
  3: /usr/share/vim/vim73/syntax/syntax.vim
  4: /usr/share/vim/vim73/syntax/synload.vim
  5: /usr/share/vim/vim73/syntax/syncolor.vim
  6: /usr/share/vim/vim73/filetype.vim
  7: ~/.vimrc
  8: ~/.vim/plugin/jedi.vim
  9: /usr/share/vim/vim73/ftplugin.vim
 10: /usr/share/vim/vim73/plugin/getscriptPlugin.vim
 11: /usr/share/vim/vim73/plugin/gzip.vim
 12: /usr/share/vim/vim73/plugin/matchparen.vim
 13: /usr/share/vim/vim73/plugin/netrwPlugin.vim
 14: /usr/share/vim/vim73/plugin/rrhelper.vim
 15: /usr/share/vim/vim73/plugin/spellfile.vim
 16: /usr/share/vim/vim73/plugin/tarPlugin.vim
 17: /usr/share/vim/vim73/plugin/tohtml.vim
 18: /usr/share/vim/vim73/plugin/vimballPlugin.vim
 19: /usr/share/vim/vim73/plugin/zipPlugin.vim
 20: /usr/share/vim/vim73/syntax/vim.vim
 21: /usr/share/vim/vim73/syntax/python.vim
 22: /usr/share/vim/vim73/ftplugin/vim.vim

编辑2

我将Vim更新到了7.4,并按照文档中的描述,使用pathogen安装了vim-jedi:

1- 安装jedi 2- 安装pathogen 3- 在~/.vimrc中添加execute pathogen#infect() 4- 在~/.vim/bundle/下克隆git存储库

我创建了一个新文件,但仍然没有自动完成。例如:

import numpy as np
np.

在插入模式下,按下control+space键返回:

-- Omni completion (^O^N^P) Pattern not found

是否有任何与之冲突的omni completion插件?我没有安装这样的插件...

我是否应该在我的~/.vimrc文件中添加其他内容?


1
我不理解步骤1和2。它们似乎没有任何意义。请再次删除那些东西。你使用pathogen、vundle还是vam?我在:map中没有看到<Ctrl-Space>命令,但你应该能看到其他Jedi命令(例如leader-d)。请同时发布:mes:scriptnames - Dave Halter
1和2是安装jedi-vim。我编辑了我的问题,添加了:scriptname的输出。 - jul
只要你的脚本名称中没有 jedi-vim,它显然就不会起作用。但这不是 jedi-vim 的错,而是 pathogen/vundle/vam 的错或者是你的错误。(在你当前的 scriptnames 中我没有看到 jedi-vim。但也许在第二次编辑后它出现了?我不知道。) - Dave Halter
5个回答

18

这是使用Pathogen安装Jedi的基本步骤。

  1. 安装Pathogen

    mkdir -p ~/.vim/autoload ~/.vim/bundle && \
    curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
    
  2. 配置.vimrc
    如果你有一个~/.vimrc文件:请将以下行添加到其中

  3. execute pathogen#infect()
    

    否则:在您的主文件夹中创建一个名为.vimrc的空文件,并将以下行添加到其中。

    execute pathogen#infect()
    syntax on
    filetype plugin indent on
    
  4. 安装Jedi。

    cd ~/.vim/bundle/ && git clone --recursive https://github.com/davidhalter/jedi-vim.git
    
  5. 尽情享受吧!

    在此输入图片描述


1
谢谢,我花了几个小时试图让VIM成为我的下一个IDE。你的方法是我唯一可行的方法。我想知道你所描绘的粉色弹出框是否仍然存在?我只看到窗口顶部1/4-1/3的位置被占用,但这只是在MWE上使用帮助时。 - John
这应该是被接受的答案!这是最好的解决方案。 - huzefausama

6
如果您有
set paste

在你的 .vimrc 文件中,jedi将无法正常运行。

6

由于我打算使用的Python版本和被调用的版本不匹配,所以出现了类似的错误。

请确保jedi正在使用预期的Python版本。例如,将let g:jedi#force_py_version = 3 添加到您的.vimrc中。


0

我认为问题在于你的vim版本太低了,建议你升级到vim 7.4并确保它已经打开了python函数。如果你想要自动完成功能,我建议你可以尝试You complete Me,它更加强大,需要Vim 7.3.584+,现在vim 7.4已经发布,安装也很容易,你可以按照以下方式安装:

#!/bin/bash  
MyInstallDir="/root/MyVim74Install/"  
cd ~  
mkdir MyVim74Install  
if [ -d $MyInstallDir ]; then  
  echo "create MyInstallDir success"  
else  
  echo "create MyInstallDir Error"  
 fi  
cd $MyInstallDir  
pwd  

wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.9.tar.gz  
tar -zxvf ncurses-5.9.tar.gz  
cd ncurses-5.9  
./configure  
make  
make install  
make clean  

cd ~  
cd $MyInstallDir  
wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz
tar xzvf cmake-2.8.7.tar.gz   
cd cmake-2.8.7 
./bootstrap   
make
make install

wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2  
tar -jxvf vim-7.4.tar.bz2  
cd vim74 ./configure --enable-gui=gtk2 --enable-cscope --enable-multibyte --enable-xim   --enable-fontset \
--with-features=huge --enable-pythoninterp=yes --with-python-config-dir=/usr/lib/python2.7/config
make 
make install
make clean 

git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle 
apt-get install gcc  
apt-get install g++ 
wget http://prdownloads.sourceforge.net/ctags/ctags-5.6.tar.gz  
tar -zxvf ctags-5.6.tar.gz  
cd ctags-5.6  
./configure &&make &&make install  
ctags -R

1
  1. 使用jedi-vim不需要VIM 7.4。Jedi-vim可以与7.3完美地配合使用(甚至一些更低版本也可以,但某些内容如调用签名会被忽略[没有+conceal])。
  2. 对于Python而言,YouCompleteMe并不比jedi-vim更“强大”。它使用的是完全相同的引擎(Jedi)。但是,它支持更多的语言。
- Dave Halter

-4

我使用pathogen安装了jedi-vim,现在它可以正常工作。

编辑:回复下面的评论:我通过使用pathogen重新安装jedi-vim而不是从源代码安装来使其正常工作。这解决了我的问题,所以我认为这是一个答案。


1
一个使用示例/命令可能会在这里有所帮助(考虑详细说明您的答案)。 - vyi
2
这怎么算是一个答案呢? - j-i-l
1
这怎么可能是一个答案?这样一点帮助都没有。 - Gyan Gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接