I was reading up in the Linux manual and I noticed that it said I could use control+left and control+right to move forward and back words in the terminal while editing.

"Pressing Ctrl plus the Left or Right arrow key moves backward or forward a word at a time, as does pressing Esc and then B or F."

On OS X control+left and control+right normally control spaces. I have disabled those. I also tried to use the preferences pane to set the keyboard shortcuts:

enter image description here

enter image description here

However this does not work and causes this error:

enter image description here

Also, if I am in iTerm and use alt+escape then B or F the character moves back and forth. This was happening before any of my config changes. But I'd really like to be able to use control + the arrow keys.

  • Incidentally, a more parsimonious way to achieve this might simply be to map command+left and command+right instead of ctrl+left and ctrl+right. I didn't need to disable anything system-wide to accomplish this.
    – Translunar
    Jul 16, 2014 at 19:35

7 Answers 7



Just add the following to ~/.inputrc:

"\e[1;5D": backward-word
"\e[1;5C": forward-word

See this archived Wiki post for some more explanation. If you want to use the alt key instead for word-to-word movement (like default OS X behavior), use:

"\e[1;9D": backward-word
"\e[1;9C": forward-word


zsh by default does not use the readline library and therefore won't read ~/.inputrc. To get the same functionality, you could add the following to your ~/.zshrc to use ctrl:

bindkey -e
bindkey '\e\e[C' forward-word
bindkey '\e\e[D' backward-word 

To use the alt key:

bindkey -e
bindkey '^[[1;9C' forward-word
bindkey '^[[1;9D' backward-word

See this documentation for more about the built-in zsh line editor (zle).

Why is this? You've set up your profile to use the Xterm defaults:

enter image description here

This is why you'll need to "catch" this sequence and tell readline what to do.

If the above still doesn't work and you are using OS X 10.9 (Mavericks) or there abouts, you probably need to disable the global Mission Control shortcuts which prevent Control+arrow keys from reaching iTerm, even if Mission Control itself is disabled. You can do so from System Preferences → Keyboard → Shortcuts → Mission Control:

mission control keyboard prefs

  • 4
    I try to follow the instruction to get the alt + left and alt + right keys working. I added the two lines to my .inputrc file, but the only thing what happens when I press the keys is that either a "D" or a "C" gets printed to the shell. I'm using iTerm2 with zsh shell. Any ideas?
    – Flo
    Nov 27, 2012 at 11:23
  • 1
    @Flo Try adding the lines bindkey -e, bindkey '^[[1;9C' forward-word and bindkey '^[[1;9D' backward-word to your ~/.zshrc instead. IIRC zsh won't read .inputrc – or at least it works for me this way.
    – slhck
    Nov 27, 2012 at 11:49
  • 2
    Not working for me with ctrl-left/right + bash, but works fine if I set it up for alt-left/right.
    – Dalin
    Jan 18, 2014 at 3:22
  • 5
    Added an edit about Mission Control shortcuts preventing any of this from working in the most aggravatingly opaque manner. Hopefully it saves someone from going through the same thing I just did urgh...
    – rubyruy
    Jan 22, 2014 at 18:22
  • 12
    For OSX + zsh + iTerm2 + ctrl-left/right use the following: bindkey -e; bindkey '\e\e[C' forward-word; bindkey '\e\e[D' backward-word Apr 11, 2014 at 9:30

Working solution for zsh. Simple, straightforward, out-of-the-box.

  1. Goto: ⌘, Preferences → Profiles → Keys → Keyboard Behavior

  2. Load Preset: Natural Text Editing

Load Preset "Natural Text Editing"

  • 1
    Thanks @Happy Torturer, I believe it's best answer mostly because I don't have on plain Terminal.app that problem so I don't want to modify bash/zsh, just want to work everything like in Terminal.app.
    – galuszkak
    Sep 23, 2017 at 17:07
  • 1
    This, this, this. Thank you so much for this solution! I've gone through this maddening process with each Mac I get. I now know the simplest way to make this happen. Thank you!
    – vernonk
    Nov 22, 2017 at 4:55
  • This should be the accepted answer. I wonder, is there any way to load this preset from the command line rather than going through the settings GUI?
    – Casimir
    Dec 16, 2019 at 9:20
  • This should've improved the @rassom answer rather than providing a same answer with screenshot.
    – Player1
    Jun 1, 2021 at 15:40
  • 1
    Worked for me, but I needed to also disable misson control shortcuts that were having higher priority, once disabled that "Naturel Text Editing" worked Nov 27, 2021 at 21:14

I fixed it this way:

In top menu; go to

-> Open profiles... 
-> Edit profiles... (button) 
-> Keys (tab) 
-> Load Preset... (dropdown) 
->  Choose "Natural text editing". Done! :-)

enter image description here

  • 3
    all i have under that preset is "Factory Defaults" Sep 10, 2018 at 2:29

I used a different approach. Using BetterTouchTool I programmed a custom keyboard shortcut for iTerm2. When I press alt-left in iTerm2, it sends the keyboard shortcut ctrl-left with the action "Send keyboard shortcut to specific application". The application is iTerm2. I did the same for alt-right mapped to ctrl-right.

The effect is that pressing alt-left or alt-right in iTerm sends a ctrl-left or ctrl-right directly to iTerm2, bypassing the usual system-wide shortcut to move a desktop left or right. Like this I get the typical mac behaviour in iTerm2, on local terminal sessions, but also on remote SSH sessions and I can use the standard ctrl-left / ctrl-right to move to different desktops. I wrote it up here:


  • 3
    BetterTouchTool is not open source and could very well be doing things you wish it wasn't. The guy says he's a student but he could just as well be a three letter agency.
    – revacuate
    Jan 4, 2016 at 17:43

Actually, I found the easiest solution was to go to my profile settings (found in Profiles/Keys), removing the offending profile shortcuts(as profile overrides global in iTerm), in my case alt+left and alt+right and then the global shortcuts worked perfectly for me!

Also, if you're using OS X, it's probably best to stick with system wide shortcuts, i.e. using alt+left and alt+right instead for this purpose, having different behaviour in terminal is bound to cause a pain eventually.

Other than that chmac's solution to use Better Touch Tool was an elegant way to change control+arrow's behaviour in iterm only.

  • actually this is the best solution. It is confusing as most of us go to Keys tab. Instead we have to go to Profiles tab -> A profile(eg default) -> keys.
    – Paschalis
    Nov 3, 2015 at 17:26
  • This is definitely the safest and easiest solution.
    – revacuate
    Jan 4, 2016 at 19:14

This post teaches this and others shortcuts as ⌥←Delete to delete a word:


  • This doesn't actually answer the question, which is about using <ctrl><left>
    – DavidPostill
    Jun 2, 2016 at 15:38
  • All you have to do is use the shortcut that fits your need. "<ctrl><left>" or whatever you want.
    – Seralto
    Jun 2, 2016 at 16:05
  • 1
    So please quote the essential parts of the answer from the reference link(s), as the answer can become invalid if the linked page(s) change.
    – DavidPostill
    Jun 2, 2016 at 16:12

You need to go into the Profiles tab and delete the mapping for alt+left and alt+right as by default it outputs some hex values.

  • This did it for me!
    – Philip
    May 26, 2016 at 17:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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