Автодополнение Python для экземпляров объектов в VIM - PullRequest
17 голосов
/ 17 июля 2011

Я обнаружил странное поведение в VIM при попытке использовать автозаполнение для объектов:

Если я создаю экземпляры объектов на уровне модуля, автозаполнение VIM будет работать на создаваемом мной экземпляре:

working completion

Если я попробую то же самое, когда в функции или классе он больше не работает:

non working completion

Кто-нибудь знает, как исправитьэто или нет способа заставить омникполнение работать с экземплярами в немодульной области?

Ответы [ 3 ]

14 голосов
/ 20 июля 2011

Несмотря на то, что он не использует плагин omnicompletion от Vim, с помощью Rope, Ropemode и Ropevim можно получить автозаполнение следующими способами:Я хотел, чтобы это работало довольно хорошо.

Я получил это так: установил дистрибутив rovinv из здесь и добавил следующие строки в мой файл .vimrc:

" Rope AutoComplete
let ropevim_vim_completion = 1
let ropevim_extended_complete = 1
let g:ropevim_autoimport_modules = ["os.*","traceback","django.*", "xml.etree"]
imap <c-space> <C-R>=RopeCodeAssistInsertMode()<CR>

Теперь нажатие Ctrl + Пробел вызовет меню завершения веревки.

1 голос
/ 02 февраля 2012

Мне пришлось использовать следующую строку, чтобы получить Ctrl + пробел

imap <Nul> <C-R>=RopeCodeAssistInsertMode()<CR>
0 голосов
/ 18 июня 2015

Расширение ответа @BergmannF.Если вы не хотите, чтобы rope's completion выбрал первую запись, просто добавьте <C-P> (перейти к предыдущей записи -> нет записи) к команде imap:

imap <C-Space> <C-R>=RopeCodeAssistInsertMode()<CR><C-P>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...