This is for all the Rubyists out there who can really rock the Vim. How do you invoke a shell command and pass arguments to said command? function Put(computer) !rsync -v -rulptzCF string(getcwd()) . "/" string(a:computer) . ":" . string(getcwd()) . "/" endfunction The idea here is that I want a Put function that takes a computer name as an argument. This function will use rsync to copy all modified files from the current working directory to the same directory on the remote computer. The reason for this is that I'm developing on Windows :( but my code needs to run on Linux and Solaris. Pushing code to the machines where autotest will run it is the desired outcome. I don't want to have to drop out of vim and into a shell prompt each time I do this. The function I gave above is total crap, but hopefully it conveys the idea I want to accomplish. Any help or thoughts? A simple example, maybe? TwP