But have you ever used Emacs?
To enable/disable the "Emacs VHDL mode" emulation you have to press a key. By looking at what he types, I have noted that my colleague, during a work, enables and disables the emulation mode several times.
Ok, it's not the same, but it looks very similar to what you have to do with VI.
Emacs automatically goes into vhdl mode if you load in VHDL source code, as indicated by the file extension. There is no need to go into and out of the mode. And the mode is active only for VHDL source buffers, so if you switch to a makefile, emacs goes into its makefile mode. If you switch to a plain text file, it switches to a plain text editing mode.
The real power of emacs' vhdl-mode is not that it doesn't analyze the code as you type (like Sigasi). Rather, it's the templating.
Again, type the two letters
pr then hit the tab key, and it'll create a process skeleton for you. If you've specified them, it'll even put in the clock and reset signals. This saves a whole lot of typing, and I haven't seen another editor that does this. There are similar autocomplete/templates for pretty much every VHDL construct you can think of. Declaring signals? Type
si then hit tab, and it'll autocomplete the word "signal," then when you hit the space bar it asks for the signal name, enter it, space again, then it asks for the signal type (which can autocomplete itself), then it'll ask for an initializer value (if you have none, hit enter, then it'll ask for a comment. It's truly great.
Something else that makes the emacs-mode invaluable is the autocomplete. Start typing something, like a signal name, and hit tab, and it'll autocomplete. Repeatedly hit tab and it'll cycle through everything that might fit.
Wanna create a test bench skeleton? Put your cursor in an entity's port list, and from the menu select VHDL -> Port -> Copy (or use the keyboard shortcuts Ctrl-C Ctrl-P Ctrl-W). Then visit a new file (Ctrl-X Ctrl-F, then give it a name) and in that new file, choose from the menu VHDL -> Port -> Paste As Testbench (or Ctrl-c Ctrl-c Ctrl-t). Bam -- it creates a testbench skeleton, with signal declarations, an instance of the DUT and a clock-generator process.
And so on.
As for obtaining emacs, I don't build from source. For Windows I just grab it from the
Gnu website. For the Mac I get it from the
Emacs for Mac OS X website.