On Cygwin, vim is the default vi version, and in many cygwin distros, such as 32-bit, a watered down version that uses a static .vimrc and does not appear to accept .vimrc as a directory. But that wasn’t what I wanted anyway.
As I stated earlier, vim was more trouble than it was worth to me, although it is a decent editor, and you can get work done in it, and I have. I still use Elvis, however, and there was no Elvis in the Cygwin-64 distro I was using on my PC, and decided to compile one for myself. It took hours of head scratching, but I finally compiled myself one under Cygwin from source, from the 2.2.0 “official” source located here. In retrospect, I could have chosen the “unofficial” 2.2.1 source, written only a few years ago.
It was not a clean compile, having seen a flurry of pointer-to-integer casting warnings at one point. But the compile did go to the end. The main stumbling block was the lack of a #define SA_INTERRUPT for the Cygwin distro. Cygwin does not mention it under signal.h, nor does it mention it under sys/signal.h. I just can’t put a #define statement for an interrupt willy-nilly. So, I went online again to see what value others had set it to.
I look to the Linux source comments (yeah, I know, not Cygwin), and while it is given a hex value, the comment says that this is a long-obsolete constant that is only placed in the source for historical reasons. SA_RESTART was suggested instead. So, I used the suggested hex value to SA_RESTART and set SA_INTERRUPT to the same value in sys/signal.h as follows:
#define SA_RESTART 0x10000000 #define SA_INTERRUPT SA_RESTART
I placed these two lines near the top of the file. This caused it to successfully compile under Cygwin.