How do I make ESC clear a line in Bash Under Windows instead of Ctrl+u?

5

2

I use bash in Windows, both in Cygwin and in Git Bash (part of Git for Windows). In bash unlike in the Windows cmd.exe Esc does not clear the line, only Ctrl + U. How can I make clear the line also?

Thanks!

Adam

Posted 2011-06-16T16:29:14.080

Reputation: 267

You may find that the console will interfere with any attempt to resolve this. – Ignacio Vazquez-Abrams – 2011-06-16T16:38:11.923

Try this. If it works, I'll post it as an answer.

– evan.bovie – 2011-06-16T16:58:47.943

Answers

7

I don't have a Cygwin or Git for Windows install handy to test this, but here's the Unix answer:

Create a file in your (cygwin) home directory named ".inputrc", and add this line to it:

Escape: unix-line-discard

On my favorite Unix variant, Control-u is mapped to unix-line-discard, which deletes everything before the cursor. If you want it to delete the whole input line, including anything that may be to the right of the cursor, use "kill-whole-line" instead of "unix-line-discard".

Note that your bash line editing mode might eat the Escape. Bash on my system defaults to vi-style line editing mode (set -o vi), and as you may know, vi is all about the Escape key, so when I try this I have to hit Escape twice because the first one gets eaten by the vi-style editing mode. I'm not an emacs guy so I don't know what the emacs-style line editing mode will do with an Escape keypress.

Note also that the .inputrc file is read when the shell starts, so after editing your ~/.inputrc, close your shell and open a new one to see if the changes worked.

Spiff

Posted 2011-06-16T16:29:14.080

Reputation: 84 656

Awesome! Been trying to do this for a while on Mac OS X too. The point about the line editing mode helped tremendously because in the various attempts to get this to work I probably skipped right over a working solution because I was only hitting escape once. – Josh – 2012-08-12T22:11:11.800