ropevim = vim + rope + python

    Для python-разработчика и vim-юзера в одном человеке, ropevim приподнесет приятный сюрприз. Наконец-то в наш любимый редактор возможна безболезненная интеграция rope — python-библиотеки, предназначенной для рефакторинга. Для тех кто не слышал о rope, кратко перечислю некоторые из возможностей: довольно умное кододополнение, возможность переименования переменных и модулей, возможность перехода на описание объекта, где бы он ни оно не находилось, автоимпорт и прочее.

    Все это основано на ropemacs(оттуда и растут ноги у emacs-like биндингов), который себя отлично зарекомендовал.

    Проверить, установлен ли rope, можно командой:
    $ python -c "import rope"
    если вывода никакого нет, значит все ок.
    коли видим трейсбек, устанавливаем любимым менеджером пакетов:
    $ sudo apt-get install python-rope
    или берем свежак с сорсфорджа.

    Далее, устанавливаем ropevim(ropemacs, который он использует, уже включен):
    $ wget downloads.sourceforge.net/rope/ropevim-0.2.tar.gz?use_mirror=dfn
    $ tar xvf ropevim-0.2.tar.gz
    $ cd ropevim-0.2/
    $ sudo python setup.py install
    $ cp ropevim.vim ~/.vim/plugin/

    Готово!

    О функционале и хоткеях можно подробно написано в файле README.txt, приложенному к ropevim. ,)

    В заключение лишь отмечу как быстро обуздать автодополнение кода для проекта(наверняка самая полезная и частоиспользуемая фича для многих), которое здесь действительно кажется человеческим.
    $ echo "let ropevim_vim_completion=1" >> ~/.vimrc.
    Далее, открываем в vim один из файлов с кодом проекта, переходим в insert-mode и набираем
    <C-r>==RopeCodeAssistInsertMode(),
    после чего rope индексирует, а мы радуемся. Ну и последний штрих — красивое дополнение не по M-/ и M-?, предлагаемыми по дефолту, а по привычному всем табу. Копируем взятый отсюда кусок(спасибо автору!) в ~/.vimrc:
    function! TabWrapperRope()
    if strpart(getline('.'), 0, col('.')-1) =~ '^\s*$'
    return "\"
    else
    return "\<C-R>=RopeCodeAssistInsertMode()\"
    endif
    endfunction

    imap <C-R>=TabWrapperRope()
    • +11
    • 4,1k
    • 6
    Поделиться публикацией

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 6

      0
      А мне под виндой ropevim так и не удалось запустить. Первая проблема была в том, что нужен vim, скомпилмрованный с поддержкой Python 2.5, а по умолчанию виндовый exe-шник рассчитан на 2.4. Но в инете быстро нашел правильный exe-шник. А вот ropevim так и не заработал, уже даже не помню какую ошибку писал. Сам rope встал без проблем.
        0
        под виндой я не пробовал, ничем не могу помочь, к сожалению
        0
        супер, спасибо
          0
          Рад поделиться. Раньше я пробовал другие решения, но так или иначе меня это не устраивало — попросту было неудобно.
          0
          похоже мой голос вам в карму будет решающим… ;)
          зы: переносите в vim, там ему самое место
            0
            Спасибо. Сделано.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое