Växla mellan Controller och Spec i Vim när du använder PhpSpec
PhpSpec kommer bli det jag använder under 2015 (och förmodligen en lång tid framåt) för att testa min kod på lite lägre nivåer än vad Codeception gör. Det som är fint med PhpSpec är att kod genereras åt dig medan du skriver och kör dina tester. Perfekt för att få en så smal kod som möjligt och spara lite tid.
Eftersom jag sitter och kodar på en ganska liten skärm och gärna inte kör med split screens i varken Vim eller Tmux så växlar jag mycket mellan mina php-filer och spec-filer. Därför tyckte jag det vore skönt med en function i Vim som gör detta på ett smidigt sätt.
Med det i bakhuvudet tryckte jag in följande i min .vimrc:
" switch between controller and spec file "
map <leader>sw :SwitchBetweenControllerAndSpec
command! SwitchBetweenControllerAndSpec call SwitchBetweenControllerAndSpec()
function! SwitchBetweenControllerAndSpec()
let path = expand('%:p')
let srcpath = './src'
let specpath = './spec'
" are we in a spec file? "
let matches = matchlist(path, printf('^%s\(.\+\)Spec\.php$', fnamemodify(specpath, ':p')))
if len(matches) > 0
let file = fnamemodify(printf('%s/%s.php', srcpath, matches[1]), ':p')
if bufexists(file)
execute(printf('buffer %s', file))
return
endif
execute(printf('edit %s', file))
endif
" are we in a php file? "
let matches = matchlist(path, printf('^%s\(.\+\)\.php$', fnamemodify(srcpath, ':p')))
if len(matches) > 0
let file = fnamemodify(printf('%s/%sSpec.php', specpath, matches[1]), ':p')
if bufexists(file)
execute(printf('buffer %s', file))
return
endif
execute(printf('edit %s', file))
endif
echo 'Current file is not a spec nor php file.'
endfunction
Detta är skrivet för att passa min Symfony2 setup men du kan enkelt bestämma vart din mapp för src och spec är genom att ändra värdet på srcpath och specpath. Om jag minns rätt så använder Laravel ./app och inte ./src och då skulle du kunna ändra srcpath till ./app för att allt ska rulla på igen.
Något jag ska göra framöver är att göra exakt samma sak fast för Behat och alla de olika filerna du vill växla mellan. Självklart kan du applicera detta på vilka filer som helst genom att bara ändra ändelserna i koden.
Tips på förbättringar? Skriv en kommentar!