:help :!
says:
...Vim redraws the screen after the command is finished,
because it may have printed any text. This requires a
hit-enter prompt, so that you can read any messages.
To avoid this use:
`:silent !{cmd}`
The screen is not redrawn then, thus you have to use
CTRL-L or ":redraw!" if the command did display
something.
First method:
:silent ! start .
Note: :silent !
method works not only on Windows.
Also. :he :!
says:
For Win32 also see :!start
.
Let's see:
Q. How do I avoid getting a window for programs that I run asynchronously?
A. You have two possible solutions depending on what you want:
1) You may use the /min flag in order to run program in a minimized state
with no other changes. It will work equally for console and GUI
applications.
2) You can use the /b flag to run console applications without creating a
console window for them (GUI applications are not affected). But you
should use this flag only if the application you run doesn't require any
input. Otherwise it will get an EOF error because its input stream
(stdin) would be redirected to \\.\NUL (stdout and stderr too).
Second method:
:!start /b start .
You can avoid cmd /c
here.
And finally, you can alias this long line as a command of your own. It's not exactly what you asked but works as you want.
UPD.
No. start .
does not use ShellExecute
. It just starts explorer.exe
for the current path.