There are a number of GUI hosts for Powershell (Powershell ISE, PoshConsole, etc) but I'm not aware of any purely console hosts other than powershell.exe. Are there any that offer any advantages over powershell.exe?
I'd like to be able to customise more of the host behaviour - specifically to add and customise key bindings other than TAB, and to customise error reporting. There could well be more...
If there aren't any "extended" versions of powershell.exe that offer this, how difficult would it be to write one? I have the SDK sample code, and it looks fairly accessible, but it's hard to be sure what features powershell.exe provides as opposed to the powershell "engine" (as there's no documentation I've found that focuses specifically on the host capabilities).
How about Console it can host multiple shells. Might be worth a look.
The best pure-console for PowerShell is obviously PowerShell Plus, which actually uses a fullblown "native" Windows console, but it wraps it up in candy coating and adds tons of IDE-style features. As far as I know this is the only third-party host that's capable of running "graphical" console apps like edit.com
As a sidenote, I'm honestly not sure it's worth the handicap of a true console just to keep compatibility with whatever graphical interactive console applications like Edit.com might still be around. Considering the limitations, and the amount of work that has to be done to pull off something like what PowerShell Plus has... Personally I can't wait for the day when I no longer have to worry about and can move on to console apps that are really MEF-style plugins in a console-style interface like PoshConsole :-)
I realise that this question is years old, but since I stumbled across it in search of answers, I thought I would add my findings.
I settled on Cmder, for the following reasons:
It wraps cmd and Powershell, so you get the same set of features you would find in either.
The default colour scheme is Monokai, which is not only pleasing to the eye, but actually readable. Maybe I was missing something, but the default output for most of my tasks (Git, Mocha tests etc.) had poor contrast most of the time and I found myself squinting at the screen.
Tab support - I've wanted this for a while, but until now I hadn't found a solution that provided tabs as well as everything else. Powershell IDE has some character encoding / text colour issues that I couldn't ignore.
It's portable - stick it on a USB stick and take it with you wherever you go.
It's configurable - the developer (Samuel Vasko) has done a great job here. It's not lacking for customisation.
Specifically answering the OP's requirements, you can remap key bindings and create macros. I don't see the ability to customise error reporting however.
Hopefully anyone else out there still searching for a decent command line emulator on Windows will see this answer and rejoice.
If you stick with a "Console" subsystem approach you will be saddled with all the limitations that come along with a Windows console subsystem application. Many complaints about PowerShell.exe limitations are really limitations of this feature of Windows (kbd shortcuts, line editing, etc).
What's wrong with PoshConsole? Even though it allows graphics to be displayed it is still a "console-style" UI on top of the PowerShell engine?
I keep typing "t eh" instead of " the" which is, of course, annoying in the amount of time it takes me to correct myself.
The obvious answer is "Learn to type, noob!" or at least to type more slowly and/or more correctly. This error is frighteningly consistent so it appears I've trained my muscle memory for that pattern already.
But I'm wondering if it's possible to write a small, windows portable script or application that, when it detects the incorrect sequence, backspaces and corrects it automatically at a layer where it would apply to any keyboard input.
Does C# have access to that layer of the OS that intercepts keypresses systemwide?
Will I run into UAC issues with Vista?
Am I re-inventing the wheel (ie, are there open source tools I can modify or use out of the box)?
In DOS this sort of thing was quite easy and one could make TSRs (Terminate and Stay Resident) programs that would, for instance, give you a calculator onscreen with a special keypress. Not to mention the many, many practical joke programs based on this concept (dial "M" for monster!)...
I would, of course, never suggest such a utility could be used that way for co-workers...
-Adam
On windows you could use AutoHotKey. That allows you to create little scripts or macros to automate and correct things like mistypes.
One use was posted on lifehacker which took the common mistyped words and corrected them. It is at http://lifehacker.com/192506/download-of-the-day-universal-autocorrect
UPDATE Per Comment: This is Free software and windows only as far as I know.
The above script is just an example of what it can do. There are a slew of scripts available at AutoHotkeys Site
I suggest AutoHotKey. If you've never used it before, have a quick read of the tutorial: http://www.autohotkey.com/docs/Tutorial.htm
The feature you are looking for is called "hotstrings." http://www.autohotkey.com/docs/Hotstrings.htm
In your case, your script would look something like:
::teh::the
That's it! Add other things you want corrected on additional lines. AutoHotkey scripts can be compiled so you don't have to install AutoHotKey on all of your machines.
It's a very cool program. It's primary use (for making custom hotkeys) rocks! These scripts are system wide so you'll also probably want to make a hotkey to be able to turn them off too!
EDIT: In a comment, it was mentioned that he actually types "t eh" (with a space in it) and I wondered if something additional would be needed for it to work. I just tested it and it works fine. Just install autohotkey, and create a file with the .AHK extension. In that file put in the following line
::t eh::the
and save the file. Then double-click on the AHK file to load AutoHotKey with your script (you'll see a green square in your system tray to let you know it is running). It should work fine!
Yes, you can use pinvoke commands from C# to intercept the low-level os commands. I recommend you take a look at http://www.pinvoke.net. The coding isn't easy but it does work.
I suggest learning to type more slowly. I also suffer from "teh" and "ahve" in part due to autocorrect giving me the leniency. If you forced yourself to retrain then you would not be at a disadvantage when using someone else's machine.
Not to mention the unfortunate event when you need to write "t eh" and are being prevented by an overzealous 'corrector'.
I am a college student that has fallen in love with Emacs. I have used IDEs in the past, and although features like Intellisense made the switch to Emacs very hard, I now think that Emacs is much more powerful, and features like Intellisense can be pretty closely matched by various modes depending on language (and I am not referring to M-/). I am happily writing Elisp code for everything that I need that isn't provided by modes or by Emacs itself and I love the way that it adapts and molds to my needs.
However, I do think that its main disadvantage is the fact that it has a pretty steep learning curve and that most new programmers will not even begin to learn it out of many common misconceptions.
So, I want to know the opinions of young people (or any person who didn't start using Emacs before there were IDEs) that are Emacs users. Just to get some reassurance that Emacs is not dead within our Eclipse-loving generation =). (Opinions of users of any other highly extensible editor like Jedit are also welcome)
My "highly extensible editor" of choice is vim. Started using vi 10 years ago, at age 17, and I haven't really looked back. I like to stay away from my mouse as much as possible.
I rarely work in compiled languages these days, so the only thing I feel like I'm missing from an IDE is syntax-completion. Constantly switching to a browser to look up the order of arguments to various PHP functions gets a bit tedious.
PS: I don't want to start a vi/Emacs war here. I suspect that Emacs and vi[m] users have more in common with each other than either group has with IDErs.
I'm 62 and I've been using emacs for 21 years. I am capable of using vim in a pinch, but I really prefer emacs.
I used to use TECO a long time ago (in the 1970's) and I liked that one too.
First off, why do you care what other people think? It is clear that
Emacs has a vibrant community, as there are lots of extensions and
lots of people working on the core. There is plenty of support to be
had for it.
If you are "worried" that other editors are better, then you should
try those editors and make the decision yourself. Only you can know
what you like.
That said, I am young (23) and use Emacs. I have used it for almost
15 years. I have tried other editors, including Vim, Eclipse,
Netbeans, and Textmate. None of those editors work as well as Emacs
as far as I'm concerned, so I feel I made the right choice. I can't,
however, tell you which choice to make. You will have to figure it
out for yourself.
It is important to note that I am pretty "invested" in Emacs. I
maintain a lot of extensions, and have spent a lot of time
understanding the Emacs core... so if I switch editors, I am throwing
away a lot of time and experience. This could theoretically cloud my
judgment, but I don't think it does. Textmate works like Emacs, but
has fewer features. (I try not to use my mouse, so the eyecandy and
OS X integration don't buy me much.) Netbeans and Eclipse are nice
for managing Java projects, but on the rare occasion that I have to do
Java, I still find Emacs easier to use. I even find that writing Ant
files myself gets me closer to "where I want to be" than relying on
Eclipse's auto-builds. That leaves Vim, which is certainly
featureful, but is still a "lesser" Emacs. Emacs has all the features
of Vim -- if you want modal editing, you can just invoke Viper. The
only reason to use Vim is that you have already learned Vim, and you
can't stand the keybinding and editing model differences between Vim
and Viper. (No, Viper is not a Vim clone. It's Emacs with modal
editing.)
Anyway, JMHO. I think Emacs will serve you well throughout your
programming career. (Or any career that involves text. Emacs is
great for writing books... and email.)
When i was young i heard this:
A good hacker must be expert in 4 editors and 4 languages.
And have taken it to heart since then....
I routinely use vi(m), (x)emacs, eclipse , sed/awk/perl ( yeah .. they are text editors ).
IMHO, mastering a range of tools is essential. One should subject his brain to move
out of comfort zone every once in a while.
I now found it amazing that i have hundreds of key combinations at my fingertip , and rarely type key sequence of one into other.
I'm 21 and started using Emacs at 15, only moving away for Textmate/E in recent years. I personally can't stand IDEs, feeling they get in the way far more than they help. Give me a good straight-up text editor any day.
I'm 19, started using emacs last year, and I'm liking it. Even though I don't know how to use its "advanced" features yet, I'm comfortable with the fact that they exist and I could learn them when needed.
In my college, there shouldn't be much more than 5 students using Emacs or Vi, though.
Fear not, young programmer, and take courage from this Editor or IDE analysis. Powerful editors like Emacs will be around as long as there are language mavens. And IDE's will continue to serve the tool mavens. And each camp will continue to be amazed at how [un]productive the other is. ;-)
Well, I started using Emacs in college, and I'm only 30, so I think I count as part of the "Eclipse-loving generation".
I don't use it every day, but Emacs is certainly near the top of my tools list. (And much higher than Eclipse, I can tell you that.)
The first proper editor I used was Brief and then a number of IDE based ones before someone convinced me to try emacs (on Windows no less). I made the decision then that I was going to learn that one editor well and when I needed it to do something different I'd learn how to do it.
The real benefit of choosing one editor and sticking to it is consistency. Whatever language or task you're doing, if you're in your favourite editor, everything is easily remembered. Added to that the extensibility makes things possible that are often not on the slick IDEs.
Of course the downside is that your emacs session is a well crafted environment. If I don't have my .emacs loaded up it can seem like a foreign environment. Things work almost but not quite like I'm used to. Fortunately with DVCS systems my perfect environment is a git clone away.
I'm a university student age 19, but I started learning Emacs a good 2-3 years ago. I tried vi(m) for a bit, but I couldn't stand the modal editing model.
Prior to my introduction to Emacs, I was using Gedit and nano to do all my coding.
If you go to most grad schools, you will find your share of UNIX hackers who stick with emacs, so it's definitely there.
I'm 28 and switched from vim to emacs a month or so ago. I learnt a bit of emacs while learning lisp. I switched from vim because having compiler / debugger / shell integration made a lot of sense to me and I like the idea of the extensibility / customization.
I've got a few die-hard eclipse / intellij people I work with that are young and are rubbing their chins while thinking about making the switch. The buffer philosophy was almost enough to sell one person who was sick of tabs in IDEs.
It's not so much about age I don't think - those that are considering emacs are the ones that are forward thinking enough to realize that is has powerful enough features / ideas that the learning curve is / might be worth it.
I'm 22 year old emacs user and I cry whenever I have to leave it to do something on other IDEs.
I'm 21 and I use vim. It's a real step up from the other programming editors I had been using, and I would recommend anyone else in computer science courses to try it out.
I'm 23 and emacs was taught in our Operating Systems course as the "C editor you should use." I used it for the course, but have moved on to other IDEs that better suit my workflow and day to day development environment.
Edit Because my original post was not altogether helpful.
I used emacs through a command terminal inside of PuTTY and that is my extent of using it. I didn't mind it as an editor and got good enough with the shortcuts to be quite productive. I haven't really explored the emacs editor anymore than that because I was already using eclipse and really liked it.
Now, I use eclipse day to day because it is an extensible language that I have to develop with Java, ActionScript, JavaScript, PHP, CSS, HTML, and even Scheme. I also have a custom eclipse extension that I'm perfecting that helps me be more productive in my full time niche (WordPress development). Eclipse provides FTP and SSH services and I've been familiar with the interface for longer than any other IDE, and that is why I use it.
I was born in 1970*, but came (back) to programming about 6 years ago, starting with Visual Basic 6 (ay-yi-yi!). A co-worker would hard-code all his Perl in a text-editor (INCLUDING forms), which boggled my mind, but did not entrance. Slowly, I started using humble MS notepad for... notes while on the phone, open tasks throughout the day, etc. And slowly, I started wanting more. A number of other factors (desire to work closer to regexes, old desire to learn LISP [I came of age in the 80s, if you know what I mean]) lead me through a couple of editors, and finally to Emacs.
Now, I get frustrated in IDEs that I can't key-navigate and tweak to my heart's content.
*okay, so I may no longer be a "young people" -- but when I started using Emacs I was in my early-mid 30s, and identified as such.
I'm 26 and I'm using VIM for several years now for C++ development. All my team mates use either VIM or Emacs (50% vs 50%, we have great flames from time to time), our lead is also using VIM. It's a best choice for us on Solaris.
However for large MS APIs like DirectX I use VS... its sometimes pain to switch but it's much easier to tackle this kind of monster :)
I barely step out of my VIM these days and on those applications where I find myself forced into an IDE, I quickly remember why. I have become so accustomed to the VIM hotkeys for selection, replacement, folding, etc. that my productivity gets floored.
Like others, I rarely work in compiled languages anymore, so I've setup shortcuts that run my Perl/PHP paste the interpreters to find syntax errors. In some cases, I've even set up VIM to run available unit tests through the same interface. It's also very easy to alt-tab back to a browser (preferably on another monitor) and hit "Control-R" for a refresh, all without touching the mouse.
I'm 21 and I use vim for now 3 or 4 years...
I once tried emacs when one of my teacher told me it was better than Vim...but I prefered my workflow with vim...
I tried to use emacs last week because I had problem indenting html files...But my teamate lost me when he started talking about key combination or something like that. My guess is that vim or emacs are two great editor...It's better than most of the IDE I know.
Thumbs up to everyone.
I'm 20 and I started using Emacs last summer when I have to code c++ on linux, and Emacs was the only editor I can stand on openSUSE (Kate is horrible, horrible! - especially my work machine is kinda slow). Then I was won over; there is really nothing better in the world for a mouse-hater. Now I use emacs (yeah on Windows...) for all kind of thing including doing file operations with dired and playing tetris ;)
That being said I still code c# in Visual Studio (occasion switch to emacs for major refactoring and boilerplate work, which is much^100 easier in emacs). IF emacs has intellisense (that works) then I'll dump the text editor in VS studio (I will still use the GUI designer though, nothing replaces that); as of now, having to look up classes is too much a pain for me to code c#.NET in emacs.
I'm a 19 year old college student who uses Emacs - I started using it about a year ago and haven't looked back.
I've only been using emacs for about 10 years now. At one point I took a decided turn to learn it (and vi) to be more comfortable editing directly on servers.
When it comes to writing code quickly and with little red flags when the syntax is wrong in realtime, using an IDE is like wearing gloves when handling thorny plants: you don't have to be as careful. (It's also like using a word processor with automatic spelling fixes and grammar checks compared to using, well, emacs for writing.)
So, I mostly use Eclipse/Xcode/other-required-IDE except when it comes to quick changes, direct edits on a server, or other remote/fast editing scenarios.
What I haven't done is looked around to see if there are any good modes for emacs that allow it to provide such quick editing help as other IDEs (though, the default modes do help quite a bit, anyway -- this isn't raw text editing, really).
I also had a pleasant surprise recently when I realized much of the Mac OS UI can use emacs commands in a similar way to how unix command line editing can be done with emacs commands. How cool is that?
I am under 30 and I use emacs.
Currently, I has to interface with computer through software speech recognition.
Nothing beats emacs because various commands are easy to program for recognition and create aliases.
now, it took me some time to get comfortable with programming in elisp, but I think benefit was worth it. I have tried using eclipse, but there is something about emacs, particularly extensibility, that it's hard to replace.
Mostly I use gedit. Simple and sweet. I'm 20 and always hated IDEs (I got my start with Netbeans in high school).
Emacs is all right; it doesn't quite do everything I like jEdit to do, but I'm not interested in spending time writing macros and plug-ins for my editor - I like getting stuff done instead. If I needed my editor to do something that different, I'd get another editor or install someone else's plugin.
I've used jEdit, Visual Studio, notepad++, TextWrangler. I abhor VIM.
Ironic....
I use emacs full-time now. Several months after the above answer I was doing a lot of remote logins into Linux and nano got too constricting. And, yes, I've spent time writing macros and plug-ins for emacs. jEdit is still pretty good, but emacs is quite better. Still don't use vim(yet?).
I'm 17 and I started using Emacs when I was 14, and VIM when I was 15. I use Emacs for SLIME and ERC mostly now, preferring GVim for editing files and such.
Each time I approached a respected guru type about Emacs, they would warn me away. Most of them didn't like it, either. I took that as a clue.
OTOH, I was interested in TECO a long time ago (now you know my age), and I hear Emacs grew out of that. So, I still wonder...
You can have my copies of Eclipse, NetBeans and Visual Studio when you pry them from my cold, dead hands!
I tried to learn how to use Emacs when I started my degree, but I eventually gave up. Part of that is because I have a poor memory, and its keyboard shortcuts are unconventional compared to what I am use to.
I do almost all my coding in TextMate (which has been dubbed the Emacs of Macs). If I'm in a command-line environment then ViM does the trick.
I code J2me in Windows, where my company doesn't impose me on certain IDE. And guess what, I return to my Old friend, Emacs...
I am 31 now, and I first learning emacs ca 23. But, the situation makes me change IDE alots : Netbeans, VS.NET, Eclipse, etc.
You know, Emacs still beat other, in some perspective :)