I use Windows, Mac, and Linux, each for different reasons. When I run Windows, I like to have a shell that works sorta like bash, but doesn’t run in a subsystem. That is, I like to have the utility programs and command editing features that I’m used to from bash on Mac or Linux, but I want to run native Windows code and not a little version of Linux hosted by Windows. 
It took a while to find something I’m happy with. It’s easier to find Linux subsystems like Cygwin. But cmder does exactly what I want. It’s a bash-like shell running on Windows. I also use Windows ports of common Unix utilities. Since these are native Windows programs, I can run them and other Windows applications in the same environment. No error messages along the lines of “I know it looks like you’re running Windows, but you’re not really. So you can’t open that Word document.”
I’ve gotten Unix-like utilities for Windows from several sources. GOW (Gnu on Windows) is one source. I’ve also collected utilities from other miscellaneous sources.
Tab completion and file association
There’s one thing that was a little annoying about cmder: tab completion doesn’t work if you want to enter a file name. For example, if you want to open a Word document
foo.docx from the basic Windows command prompt cmd.exe, you can type
fo followed by the tab key and the file will open if
foo.docx is the first file in your working directory that begins with “fo.”
In cmder, tab completion works for programs first, and then for file names. If you type in
fo followed by the tab key,
cmder will look for an application whose name starts with “fo.” If you wanted to move
foo.docx somewhere, you could type
mv fo and tab. In this context,
cmder knows that “fo” is the beginning of a file name.
On Mac, you use the
open command to open a file with its associated application. For example, on the Mac command line you’d type
open foo.docx rather than just
foo.docx to open the file with Word.
If there were something like
open on Windows, then tab completion wold work in
cmder. And there is! It’s the start command. In fact, if you’re accustomed to using
open on Mac, you could alias
open on Windows . So in
cmder, you can type
start fo and hit tab, and get tab completion for the file name.
The command assoc shows you which application is associated with a file extension. (Include the “.” when using this command. So you’d time
assoc .docx rather than
You can direct Windows shell output to the clip command to put the output onto the Windows clipboard.
The control command opens the Windows control panel.
This post shows how to have branching logic in an Emacs config file so you can use the same config file across operating systems.
More MS Windows posts
- Entering Unicode characters on Windows
- Deleting the recycle bin icon
- Emacs on Windows
- Remapping caps lock
- Windows keyboard shortcuts
 Usually on Windows I want to run Windows. But if I do want to run Linux without having to go to another machine, I use WSL (Windows Subsystem for Linux) and I can use it from cmder. Since cmder supports multiple tabs, I can have one tab running ordinary cmd.exe and another tab running bash on WSL.
 In the directory containing cmder.exe, edit the file
config/user-aliases.cmd. Add a line