Как стать автором
Обновить

ropevim = vim + rope + python

Время на прочтение2 мин
Количество просмотров5K
Для 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
Комментарии6

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн