There may be a better way, but, the way I do it is to:
- open the script fu console (Filters -> Script Fu -> Console)
- edit a file (say for example: /Users/jamesanderson/code/scheme/gimp/learn1.scm
- type: (load "/Users/jamesanderson/code/scheme/gimp/learn1.scm") into the console
- hit enter
- edit file for changes
- keyboard arrow up (to get get the load function call again without typing)
- hit enter


Note this is an extension of my answer based on the comment. When going beyond the simple proof of concept scripts like the above, its important to know that that console retains state between calls. So for instance, if we run this scheme script:
(define jea-test-img-id nil)
(define (jea-find-test-img)
(car (gimp-image-list)))
and then go to the console and type:
jea-test-img-id
we get as a result:
> jea-test-img-id
()
which is good, the script initiated the variable as needed and we see the result. So var set in script, console retains state change from script. Now lets change the state in the console:
(set! jea-test-img-id (jea-find-test-img))
we call a convenience function that grabs the first image ID in the active image list and store it in the variable we previously declared (which was then nil). Now lets examine the question again:
jea-test-img-id
then the result:
> jea-test-img-id
1
so high level: when you are working on a script, create working variables that hold the things you want to work on, like image, pxiels, widths etc then piece by piece get the functions working. In the end you may collapse it into one clean function once you have the short snippet pieces.