вторник, 17 ноября 2009 г.

Запуск Python-скрипта из Vim

Ничего IDE'шное Vim'у не чуждо. Для исполнения редактируемого питоновского скрипта достаточно написать в командной строке:


:!python file_name.py

Так как Vim позволяет создавать хоткеи для любой последовательности команд (:help mapping), то можно замапить запуск на нажатие какой-нибудь кнопки. Для этого в .vimrc нужно добавить две строки:

map <F5> :w\|!python %<cr>
imap <F5> <Esc><F5>

В первой строке по F5 файл сначала сохраняется, потом запускается. map - создает хоткей в нормальном режиме. Вторая строка - для режима редактирования (imap). Из режима редактирования Vim переходит в нормальный (как по нажатию Esc), потом в нормальном режиме эмулируется нажатие F5.

Перед запуском скрипта полезно знать, есть ли в нем ошибки. Для этого можно использовать PyLint, PyChecker или Pyflakes. Мне удобнее всего пользоваться последним - работает быстро и не перегружает консоль ворнингами.

После установки Pyflakes (sudo aptitude install Pyflakes) нужно создать в .vimrc команду для проверки файла:

command Pyflakes :call Pyflakes()
function! Pyflakes()
let tmpfile = tempname()
execute "w" tmpfile
execute "set makeprg=(pyflakes\\ " . tmpfile .
"\\\\\\|sed\\ s@" . tmpfile ."@%@)"
silent make
cw
endfunction

И добавить ее вызов перед запуском скрипта:

map <F5> :w\|call Pyflakes()\|!python %<cr>
imap <F5> <Esc><F5>

Вуаля! Теперь по нажатию F5 редактируемый скрипт сохраняется не зависимо от режима, выполняется проверка синтаксиса и, если все ок, выполняется. Хотя это удобно только для одного файла, для целого проекта этого будет маловато.

9 комментариев:

Yuri Volkov комментирует...

прикольно, надо будет взять на вооружение

Анонимный комментирует...

Вот чем хороши vim'ы и всякие emacs'ы, так это тем, что там можно делать со средой ну вот почти всё.

Вообще перейти с Eclipse на vim очень просто - я делал это уже миллион раз (с)

:-)

sash_ko комментирует...

Поностью заменить vim'ом ide с графическим интерфейсом - не самая лучшая идея, все таки у ide есть свои плюсы, особенно на больших проектах. Но для небольшой части проекта vim удобнее, имхо.

torjian комментирует...

Вот вам рецептик из emacsового compile-mode:
Повесить на f# выполнение определенной цели в makefile.
А там уж что душе угодно будет можно написать: от компиляции сишного кода, до выполнения программы и построения графика в гнуплоте, а в виме не придется переопределять конфиг ради другого типа работы.

sash_ko комментирует...

т.е. для прикручивания новых фич нужно будет добавлять их как отдельные цели в makefile, вместо правки конфига вима?

torjian комментирует...

Да, так. Осталось сообразить соответствующую часть конфига вима ;)

sash_ko комментирует...

Сегодня в очередной раз правил конфиг вима, все таки makefile не даст столько гибкости, не настолько просто с ним работать и все равно полностью не избавит от правки .vimrc :)

zavx0z комментирует...

А как установить хоткей на python3.4?

Unknown комментирует...

virtualenv -p python34 env
source env/bin activate