2009-08-11

VIM: как назначить запуск скриптов на горячую клавишу

Задача: по нажатию F5 передавать скрипт разным программам, в зависимости от расширения файла (как это реализовано в SciTE).
Вот пара вариантов ее решения. Просто добавим в ~/.vimrc один из этих блоков.

1) Написание функции:

function Run()
let $ext=expand("%:e")
if $ext=="py"
!/usr/bin/env python "%"
elseif $ext=="php"
!/usr/bin/env php "%"
elseif $ext=="html" | $ext=="mako" | $ext=="htm"
!firefox "%"
endif
endfunction
map <F5> :call Run()

Здесь мы получаем расширение файла % через модификатор :e, присваиваем его переменной $ext, после чего по этому признаку решаем, что будем делать с файлом. Потом привязываем вызов функции к горячей клавише F5.

2) Использование автокоманд:

autocmd BufEnter *.py map <F5> !/usr/bin/env python %
autocmd BufLeave *.py unmap <F5>
autocmd BufEnter *.php map <F5> !/usr/bin/env php %
autocmd BufLeave *.php unmap <F5>

Теперь при редактировании скрипта за F5 закреплена команда запуска, а при потере фокуса эта привязка сбрасывается.

Оба способа имеют право на существование, но я остановился на первом.

P.S. Мой .vimrc

Комментариев нет: