интроспективное завершение кода с помощью VIM? ... или другой легкий редактор с этой функцией? - PullRequest
7 голосов
/ 09 сентября 2011

Я был во всем Интернете, пытаясь найти способ заставить VIM иметь завершение кода, подобное PyDev. Не похоже, что это возможно!

-Я пытался использовать предложенное по этой ссылке омниполнение: http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/.

-Я пробовал несколько дополнений, чтобы облегчить проблему, ни один не работает.

Функциональность "omnicomplete" - это НЕ то, что я ищу. Он просто берет все слова в файле, над которым вы работаете, и использует их, чтобы попытаться завершить то, что я делаю. Например, если я написал:

import numpy
a_single_array = range(100)
np.a#[then I hit cntrl+n to code complete]

Было бы выплевывать "a_single_array" как возможное завершение - но это абсурд! Это недопустимое завершение для "numpy.a ..."

В чем здесь проблема? Все, что нужно сделать аддону, это запустить dir (работу, которую вы хотите найти) из папки, в которой вы находитесь, и затем отфильтровать вывод! Это не может быть так сложно! (Полагаю, вам также придется прочитать файл, который вы в настоящее время редактируете, и отфильтровать его, чтобы принять к сведению изменения имени ... но это почти все!)

Говоря о том, как легко было бы ... если ничего еще не было сделано, я подумал написать сценарий сам! Любые руководства о том, как это сделать?

Ответы [ 3 ]

7 голосов
/ 10 сентября 2011

Нет, функция завершения omni - именно то, что вы ищете.

Вы используете <C-n> вместо <C-x><C-o>:

  • type <C-n> & <C-p> для заполнения словами из буфера (после и перед курсором соответственно)
  • введите <C-x><C-o> для завершения имен методов / свойств

Это специально объяснено в статье, которую вы связали:

В V7 VIM представил всестороннее завершение - учитывая, что он настроен на распознавание Python (если нет, эта функция только плагин) Ctrl + x Ctrl + o открывает раскрывающийся диалог, как и любойдругой IDE - даже весь Pydoc будет отображаться в разделенном окне.

4 голосов
/ 10 сентября 2011

Ctrl n - вставка-завершение.

Ctrl x Ctrl o является всевозможным завершением.

Я переназначаю omnicompletion в Ctrl Пробел :

inoremap <C-Space> <C-x><C-o>

Вы также можете попробовать SuperTab .

1 голос
/ 09 сентября 2011

Я понятия не имею о различных вариантах завершения Python в Vim.Но если вы хотите сделать свой собственный бросок, вам бы посоветовали изучить и изменить один из существующих, например:

http://www.vim.org/scripts/script.php?script_id=1542

Кроме того, если все ваше омниполнение делаетперечисляет слова в текущем файле, тогда у вас нет правильной настройки для специфичного для Python завершения.,,,Не уверен, насколько хороши специализированные системы завершения Python, но они определенно конкурируют на основе внешних модулей Python по отношению к вашему текущему файлу.,,,

...