Vim Omnicomplete模式未找到(Python)

1 投票
1 回答
3593 浏览
提问于 2025-04-17 16:08

我看到说全自动补全应该是开箱即用的,但我这边不行,我在想我哪里做错了。

我编译了最新版本的vim,并且它显示有"+python":

user$ vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Feb 16 2013 11:22:56)
MacOS X (unix) version
Compiled by user@computer.local
Normal version without GUI.  Features included (+) or not (-):
-arabic +autocmd -balloon_eval -browse +builtin_terms +byte_offset +cindent 
-clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
-conceal +cryptv -cscope +cursorbind +cursorshape +dialog_con +diff +digraphs 
-dnd -ebcdic -emacs_tags +eval +ex_extra +extra_search -farsi +file_in_path 
+find_in_path +float +folding -footer +fork() -gettext -hangul_input -iconv 
+insert_expand +jumplist -keymap -langmap +libcall +linebreak +lispindent 
+listcmds +localmap -lua +menu +mksession +modify_fname +mouse -mouseshape 
-mouse_dec -mouse_gpm -mouse_jsbterm -mouse_netterm -mouse_sysmouse 
+mouse_xterm -multi_byte +multi_lang -mzscheme +netbeans_intg -osfiletype 
+path_extra -perl +persistent_undo +postscript +printer -profile +python 
-python3 +quickfix +reltime -rightleft -ruby +scrollbind +signs +smartindent 
-sniff +startuptime +statusline -sun_workshop +syntax +tag_binary 
+tag_old_static -tag_any_white -tcl +terminfo +termresponse +textobjects +title
 -toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo 
+vreplace +wildignore +wildmenu +windows +writebackup -X11 -xfontset -xim -xsmp
 -xterm_clipboard -xterm_save 
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/Users/user/Software/vim/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H   -DMACOS_X_UNIX -no-cpp-precomp  -g -O2 -D_FORTIFY_SOURCE=1      
Linking: gcc   -L/usr/local/lib -o vim       -lm -lncurses  -framework Cocoa     -framework Python

我把我的.vimrc文件清空,只留下:

" Automatic reloading of .vimrc
autocmd! bufwritepost .vimrc source %

filetype plugin on

而我的~/.vim/目录里只有

autoload/pythoncomplete.vim

这个是我从 http://www.vim.org/scripts/script.php?script_id=1542 下载的。

然后我运行这个命令,返回的是:

:echo &omnifunc
pythoncomplete#Complete

看起来没问题。但是每次我在下面的test.py文件里按控制键+x再按o:

#! /usr/bin/env python
import numpy
numpy.r

无论是在输入“num”还是“numpy.r”后,我得到的结果是

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

我的安装有问题吗?任何想法都非常感谢。谢谢。

编辑:根据TankorSmash的建议安装了python-mode后,我可以把“num”补全为“numpy”,但“numpy.r”却没有办法补全。

这是我新的.vimrc文件:

" Automatic reloading of .vimrc
autocmd! bufwritepost .vimrc source %

" Pathogen load
filetype off

call pathogen#infect()
call pathogen#helptags()

filetype plugin indent on
syntax on

还有我的.vim目录结构:

.vim
    autoload
        pathogen.vim
        pythoncomplete.vim
    bundle
        python-mode

有什么想法吗?

1 个回答

2

你其实不需要任何第三方的补全脚本就能在Python中实现代码补全。

我自己也没有(我唯一的Python相关脚本是一个简单的ftplugin),但当我在输入numpy.numpy.arc后按下<C-x><C-o>时,系统给我的建议就是这些……

numpy.

numpy.arc

看起来你是在Mac OS X上,实际上你真的不应该自己编译Vim。安装最新的MacVim快照是运行Vim在Mac上最好的方法,我很确定你会得到和这台Linux机器一样的建议。

补充

我刚在我妻子的简单配置的iMac(python 2.5)上测试了同样的代码,使用的是旧版的MacVim(快照53),结果得到的建议差不多(485对比551)。

撰写回答