ropevim: vim, на шаг ближе к IDE
У всех пользователей vim, пишущих python-код в этом редакторе, рано или поздно возникает потребность в функциональности, знакомой по “большим” IDE. Многие в поиске решений останавливаются на встроенных возможностях вроде дополнения ключевых слов, встретившихся в открытом файле, встроенный go-to-defintion и другие, применение которых ограничивается их универсальностью. В этом посте рассмотрим инструмент, заточенный под работу с python-кодом, предназначенный для рефакторинга кода, и, одновременно, предоставляющий возможности более “умного” автодополнения, перехода в определению идентификатора и др.
Далее идёт собственная интерпретация довольно лаконичной документации, выполненная в виде небольшого howto.
Установка
Прежде всего понадобится vim с поддержкой питона. Для генту - делаем
# USE=python emerge app-editors/vim app-vim/vimpython
Далее — установка самой библиотеки rope и соответствующих скриптов. Для этого — получаем исходники из mercurial-репозитория (здесь и далее подразумевается, что исходники складываются в /usr/src):
/usr/src $ hg clone http://bitbucket.org/agr/rope
/usr/src $ hg clone http://bitbucket.org/agr/ropemode
/usr/src $ hg clone http://bitbucket.org/agr/ropevim
или, качаем снапшоты — http://rope.sf.net/hg/rope/archive/tip.tar.gz + http://rope.sf.net/hg/ropemode/archive/tip.tar.gz + http://rope.sf.net/hg/ropevim/archive/tip.tar.gz .
Первым делом — устанавливаем rope:
/usr/src/rope $ sudo python setup.py install
далее устанавливаем ropevim:
/usr/src/ropevim $ ln -s ../ropemode/ropemode
/usr/src/ropevim $ sudo python setup.py install
На этом установка библиотеки закончена, можно приступать к настройке.
Настройка
Чтобы воспользоваться всеми возможностями библиотеки ropevim, необходимо подключить её. Как говорит README.txt, есть два способа сделать это:
-
включить в ~/.vimrc (
echo "source /usr/src/ropevim/ropevim.vim" >> ~/.vimrc) -
скопировать в ~/.vim/plugins —
ln -s /usr/src/ropevim/ropevim.vim ~/.vim/plugins
Остаётся дописать в ~/.vimrc строку let ropevim_vim_completion=1. Теперь этим инструментом можно уже пользоваться. Для теста попробуйте открыть python-файл и, оставив курсор в месте, подходящем для дополнения, в режиме вставки выполните <C-R>=RopeCodeAssistInsertMode(). В результате Вы должны получить приглашение ввести путь к корню текущего проекта, например “.”. После этого rope выполнит индексирование файлов текущего проекта, и сразу предложит подходящие варианты дополнения. Работает? Отлично. Сразу вешаем на горячую клавишу, например:
function! TabWrapperRope()
if strpart(getline('.'), 0, col('.')-1) =~ '^\s*$'
return "\<Tab>"
else
return "\<C-R>=RopeCodeAssistInsertMode()\<CR>"
endif
endfunction
imap <Tab> <C-R>=TabWrapperRope()<CR>
Получили довольно симпатичное и вполне вменяемое автодополнение.
Разумеется, на этом возможности библиотеки не заканчиваются, а только начинаются. Здесь я не буду полностью описывать всё, что она умеет делать, а лишь перечислю некоторые часто используемые функции с их привязками по умолчанию. Все команды разделены на логические группы: для работы с проектами, собственно рефакторинг, code-assist. Их горячие комбинации начинаются, соответственно, с C-x p, C-c r, C-c r a. Последовательности из трёх-четырёх клавиш, очевидно, не самый удобный способ выполнять данные действия, потому для некоторых функций предусмотрены короткие сочетания “из коробки”. Если верить README.txt они выглядят так:
================ ============================
Key Command
================ ============================
M-/ RopeCodeAssist
M-? RopeLuckyAssist
C-c g RopeGotoDefinition
C-c d RopeShowDoc
C-c f RopeFindOccurrences
================ ============================
Среди функций rope стоит отметить: переименование переменных, модулей, анализ и работа с “импортами”, отображение документации к функциям/методам/классам и др.
Таким образом, сделав vim на шаг ближе по функциональности к “старшим братьям”, ещё раз убеждаемся, что расширение возможностей этого текстового редактора ограничено лишь фантазией разработчиков.
Ссылки:




Comments
мм, надо будет поюзать, уже года 2 пытаюсь писать в виме, но вечно чего-то не хватает, хотя автодополнения и стандартные есть, но надо будет поглядеть rope )
Ссылки на репозитории устарели
http://bitbucket.org/agr/rope http://bitbucket.org/agr/ropemode http://bitbucket.org/agr/ropevim
А на оф. сайте всё так же ссылки на rope.sf.net/hg
Comment form for «ropevim»