2011-08-21 119 views
40

我正在嘗試在Vim中加入自動完成功能。我已經使用了Vim的omnicompletion以及Pydiction。但在這兩種情況下,這彈出消息:Python的Vim自動完成功能

全能補全(^ o^N^P)未找到模式

我已經試過Vim's Omnicompletion with Python just doesn't work。但這沒有幫助。有沒有解決方法?

+2

您是否看到此鏈接? http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/ – Efazati

+1

該文件是否被檢測爲python文件?打開它並運行':echo&ft'。如果這沒有返回「python」,那麼嘗試在你的vimrc上添加'filetype plugin'並且再次嘗試所有這些。 –

回答

45

嘗試Jedi!有一個Vim插件https://github.com/davidhalter/jedi-vim

它在Vim中的工作比其他任何Python都好。它甚至支持重命名,轉到等等。最好的部分可能是它真的試圖理解你的代碼(裝飾器,生成器等等。請看功能列表)。

+2

我試過這個,但我唯一得到的是數百個錯誤。 – pfnuesel

+1

那麼我需要知道錯誤和':ver'。如果你沒有安裝+ python的vim(例如某些windows vim版本),可能會發生這種情況。 –

+0

錯誤: Vim:捕獲致命信號SEGV Vim:完成。 分割錯誤 – pfnuesel

6

我試過pydiction(沒有爲我工作)和正常omnicompletion(太有限)。我按照建議看了Jedi,但發現設置起來太複雜。我發現python-mode,這到底能滿足我的需求。謝謝@klen

+0

這是爲我工作的那個。其他工具太複雜,無法安裝。 – max

0

我在我的Mac上使用帶有+ python的MacPorts vim進入了這個界面。問題是MacPorts vim只能用+ python綁定到python 2.5,而我的擴展是安裝在python 2.7下的。使用pip-2.5安裝擴展解決了它。

4

AFAIK有三種選擇,各有其優缺點:

  1. youcompleteme:不友好的安裝,但如果你設法得到它的工作工作良好。但是python3不支持
  2. jedi-vim:最酷的名字,但打破了你的undo history
  3. python-mode做了很多更多的自動完成:摺疊,語法檢查,突出顯示。就我個人而言,我更喜歡做好一件事的腳本,因爲它們更容易管理(和替換)。與其他兩個選項不同,它使用rope而不是jedi來自動完成。

Python 3和撤消歷史記錄(gundo!)對我來說是必須的,所以選項1和2都沒有了。

+0

感謝您指出缺點,這使得選擇更容易,因爲我分享關於Python 3和撤消的意見。 – Zelphir

+0

似乎繩子不支持Python 3(https://github.com/python-rope/rope/issues/57)?如何使用Python模式和繩子的自動完成功能?謝謝。 – Chad

2

在這個時候youcompleteme也做Python3。