I'm contemplating moving from Linux to Windows. What worries me is being less productive. E.g.:
In Linux, I can run applications fairly quickly if they are in the PATH*
Windows has a PATH as well. You can either check out what's in it through GUI (Control Panel/System/Advanced/Environmental variables/PATH) or through command line, by just typing PATH.
This shortcut is often useful if you wish to add a temporary directory to a path;
I can open vi right in the shell (not losing focus)*
As far as I know vim on windows has two versions, command line one (console as they call it), and gui (gvim). Both work more than fine. I prefer gvim, but that's just personal preference. Put vim's runtime directory in PATH variable, and you can open it from wherever you like.
I have programmatic completions. For example, I have a script that finds all files with some string in their name in the somewhere under the current directory and I have completions for it (so "ff Foo" will complete with all file names containing Foo)*
Well, I don't know about this specifically, simply because I didn't need it, but apart from cygwin there are several ports of "standard" unix command line utilities, with which I believe you can do mentioned. My preference goes to unixkit-tiny which is a native (sort of) windows port. Portable and all. Can be downloaded from here.
So I'm looking for suggestions of Windows tools that will make me more productive. I'm aware I can use cygwin, but I'm looking at alternatives that are not "make windows behave like linux".
Well, in that case (not "make windows behave like linux"), you can just go with Notepad2 or ++, Powershell, and some file manager combination ;)
Seriously now, I believe the above mentioned will serve you well. If you have any other problems state them in your question.