Значит вот что я хочу: допустим есть
/home/user/test
В нем лежит
/home/user/test/test_script.py
/home/user/test/modules/some/function.py
я хочу, находясь в буффере /home/user/test/modules/some/function.py нажимать ,r и чтобы выполнялся не текущий буффер, а /home/user/test/modules/some/function.py
Значит, что я делаю ? Я создаю /home/user/test/.project и пишу в него exec=test_script.py. Далее я поднимаюсь на уровень выше и чекаю на предмет наличия .project. Нашли ? Да! Далее мне нужно прочитать файл и сплитом добраться до test_script.py. Вот реализация
function! FindRootExec()
let s:old_path=expand('%:p:h')
exec "cd " . expand ("%:p:h")
while ! filereadable (getcwd () . "/.project") && getcwd () != "/"
cd ..
endwhile
cd .
let real_path = getcwd()
let projf= getcwd() . "/.project"
let tmp1 = readfile(projf)
let tmp2 = split(tmp1[0], "=")
let tmp3 = real_path . "/". tmp2[1]
endfunction
В tmp3 лежит /home/user/test/test_script.py. Сейчас у меня в ~/.vim/after/ftplugin/python.vim такой бинд
nnoremap ,r <ESC>:wall!<CR><ESC>:!clear;%:p<CR>
PS: плагин project не предлагать:)