I often use the +O shortcut in bash (from "Learning the bash Shell"):

[G]o back to [a command in history] and press +O instead of . This will execute the command and bring up the next command in the history file. Press +O again to enter this command and bring up the next one.

It seems this shortcut is not available on OS X; +O simply does nothing. A web search turns up the suggestion to use the ! bash builtin, but I don't see how I can accomplish the same thing as +O with it.

Is it possible to somehow get +O behavior in Terminal.app on OS X?

up vote 18 down vote accepted

+O is, for some reason (probably having to do with it being used for flow control on some kinds of serial connections) set to be discarded by the terminal driver (i.e. not Terminal.app, but the part of the OS between it and the shell). You can get rid of this with the command stty discard undef. To make this change permanent, add this command to your .bash_profile and .bashrc files.

man bash might help. The "READLINE" and "Readline Key Bindings" talk about binding the key presses available and how to set up readline's defaults.

Also Bash Emacs Editing Mode Cheat Sheet and Working Productively in Bash's Vi Command Line Editing Mode (with Cheat Sheet) are good for figuring out what keypress does what if you are using vi mode instead of the default emacs. In either case bind -P | grep found will show you what key combinations are configured in vi mode and bind -P will show everything available.

  • 2
    Wow, I had no idea there was vi-mode available in bash! This is beyond sweet. Thanks! – Mike Mazur Oct 18 '10 at 13:07
  • 2
    I felt the same way when I discovered it was available. – Greg Oct 19 '10 at 7:29
  • me too me too :) – Robert S Ciaccio Dec 4 '10 at 6:58

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.