KrasniyRus 26.03.2011 14:57

Есть вопрос!Vi omni completion

Давненько хочется слезть с больших IDE, на любимый Vi, но мешает то, что я никак не могу понять как работает автокомплит.

Доки курил, но ясности это как-то не добавило, а вопросы такие:
1. Можно ли сделать чтобы user defined классы в проекте (скажем через плагин project) подхватывались "на лету"?
2. Что такое omni completion и с чем его есть для Python? (доки курил, но плохо раскуриваются)

Принимаются ссылки на годные маны (разжевали для новичка и положили в мозг) или рабочие конфиги vi (не сильно навороченные), с использования которых можно начать, ну или может кто возьмет на себя титанический труд по объяснению на пальцах

P.S.: В гугле не забанили, просто все что нахожу это для тех кто вкурил и уже пользуется, а вот информации о том как пользоваться начать, я так нигде и не смог найти.

Заранее всем спасибо!


Тэги: omni completion python vim вопрос
+ 3 -
Похожие Поделиться

Denis 26.03.2011 15:39 #
Аналогичная проблема. В интернете куча материала, но ничего адекватного для себя не нашел. Особенно интересует подхват классов/функций/методов из подключаемых файлов.
neol 26.03.2011 16:49 #
Автодополнение для python неплохо делает ropevim
KrasniyRus 26.03.2011 16:59 #
Спасибо покурю
kstep 31.03.2011 18:39 #
Ой огроменное человеческое тебе спасибо! Именно такой тулзы долгое время и хватало!
klen 26.03.2011 16:56 #
ropevim как уже писали.

Как работает посмотри в моем конфиге. https://github.com/klen/.vim
Можешь просто взять bundle https://github.com/klen/.vim/tree/master/bundle/ropevim
и подключить его к себе, тогда ничего дополнительно ставить не прийдется, правда все никак не соберусь оформить это в качестве отдельного плагина.
KrasniyRus 26.03.2011 17:01 #
Спасибо!

Я так понимаю с omni completion никто толком не заморачивался?

Т.к. из офф. доков интересен тот момент что оно вроде как для всех языков пригодно. Т.к. на python я в основном скриптики для себя пишу, а хотелось бы заменить netbeans/exclipse в идеале =)
lockie 26.03.2011 17:19 #
Ну, я бы выделил несколько ключевых моментов.
  1. подхватывались "на лету"
    Могу сказать только о C/C++, на питоне почти не пишу. Подхватывать на лету без чудес костылестроения не получится, но можно сделать, чтобы всё подхватывалось при сохранении и/или по хоткею (через ctags, которые, кстати, умеют в python):

    function! UPDATE_TAGS()
    let _f_ = expand("%:p")
    let _cmd_ = '"ctags -a --c++-kinds=+pl --fields=+iaS --extra=+q " '
    let _resp = system(_cmd_)
    unlet _cmd_
    unlet _f_
    unlet _resp
    endfunction
    autocmd BufWritePost *.cpp,*.hpp,*.c,*.h,*.cxx,*.hxx call UPDATE_TAGS()

    " обновить ctags
    map <C-u> :!ctags -R --c++-kinds=+pl --fields=+iaS --extra=+q .<CR>


  2. Omni completion я юзал опять-таки только для C/C++ - оно при нажатии на точку, -> или :: вываливает менюшку с возможными вариантами.
  3. Ещё есть няшка SuperTab, работающая примерно аналогично клавише Tab в шеллах - дополняет всё, что можно. Настраивается так:

    set wildmenu " дикое меню :3"
    set completeopt=menu,menuone,longest,preview " всплывающая менюшка"
    set complete=.,t,b,k " порядок автодополнения: словарь текущего буфера, ctags, словарь всех буферов

KrasniyRus 26.03.2011 17:23 #
Спасибо за ответ

1. На чудо я и не надеялся, главное наличие такой возможности =)
2. А можно строки из конфига как его включали ставили ли до плагины?
lockie 26.03.2011 23:09 #
до плагины

Всмысле, дополнительные? Не, не ставил.

А можно строки из конфига как его включали

" OmniCppComplete {
set tags+=~/.vim/tags/qt4
set tags+=~/.vim/tags/libstdc++ " эти файлики сгенерил ручками из хедеров qt и исходников libstdc++ соответственно"

let OmniCpp_NamespaceSearch = 2
let OmniCpp_ShowPrototypeInAbbr = 1 " показывать параметры"
let OmniCpp_ShowScopeInAbbr = 1
let OmniCpp_MayCompleteDot = 1 " автодоплнять после ."
let OmniCpp_MayCompleteArrow = 1 " автодоплнять после ->"
let OmniCpp_MayCompleteScope = 2 " автодоплнять после ::"
let OmniCpp_DefaultNamespaces = <"std", "_GLIBCXX_STD">
let OmniCpp_LocalSearchDecl = 1
" автоматически открывать и закрывать окошко предпросмотра"
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
" }
time2die 27.03.2011 13:55 #
я вот видимо слабак, надоело пилить vim под полноценную java ide, перелез на eclipse, не хватает только быстрого перехода к нужной строке + не совсем устраивает зависимость от мышки