Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

In OSX I can just hold down the option key and press the left cursor key until I get to the word I need to edit (or in Vi I can just hit b, but I haven't been able to figure out how to do this in Terminal yet...

share|improve this question
    
You can see the full list of readline bindings on this page, including instructions how to customize your own bindings. –  jasonwryan Jul 9 '12 at 6:46

3 Answers 3

up vote 9 down vote accepted

The bash function you want is backward-word. You can run bind -q backward-word to get a list of keys bound to that function. One common binding is Esc+b

Also, many terminals support Ctrl+Left (the same hotkey you can use in X to jump backwards by word)

share|improve this answer
    
Ok, it returns backward-word can be invoked via "\eb". but how do I bind control+Left instead of Esc+b? Also, one drawback to Esc+b I can already see is that I have to let up on the Esc key every time I can to go back a word, isn't there a better way? –  nipponese Jul 9 '12 at 7:13
1  
Is there a better way? Naturally: set editing-mode vi :) –  jasonwryan Jul 9 '12 at 8:00
2  
@nipponese "esc b" can also be used on the keyboard as ALT-b. This may need to be specifically the left or right alt depending on your configuration, so try both. –  Random832 Jul 9 '12 at 13:00

To set the key binding: You first have to find out what key codes the Ctrl-Left key sequence creates. Just use the command cat to switch off any interference with existing key bindings, and then type the key sequence. In my system (Linux), this looks like that:

$ cat
^[[1;5D

Press Ctrl-D to exit cat. Now you have found out that Ctrl-Left issues 6 key codes:

  • Escape (^[)
  • [
  • 1
  • ;
  • 5
  • D

Now you can issue the bind command:

bind '"\e[1;5D": backward-word'
share|improve this answer
3  
You can add `` "\e[1;5D": backward-word '' into $HOME/.inputrc for permanent effect if you want . –  llhuii Jul 9 '12 at 11:57
    
@llhuii +1, I forgot to mention that! –  daniel kullmann Jul 9 '12 at 13:45
    
+1 for the most flexible way to bind arbitrary key combinations anywhere! –  Irfy Jun 18 '13 at 12:23

The default key shortcut in Bash for backword-word is Alt + b . The same result can be achived with Esc + b . You should give those a try before editing your keybindings.

Use bind command to edit or bind -q [name] to get the current keybind of a specific action.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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