155

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.

1
  • 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

8 Answers 8

169

bash

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

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

16
  • 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
  • 2
    @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
  • 6
    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
  • 13
    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
110

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"

7
  • 2
    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?
    – Janosh
    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
21

I fixed it this way:

In top menu; go to

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

enter image description here

2
  • 4
    all i have under that preset is "Factory Defaults" Sep 10, 2018 at 2:29
  • Same, only "Factory defaults"
    – Shayne
    Dec 2, 2022 at 1:57
7

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:

http://www.callum-macdonald.com/2013/04/17/ctrl-left-and-ctrl-right-on-iterm2/

1
  • 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
7

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.

2
  • 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
2

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

http://elweb.co/making-iterm-2-work-with-normal-mac-osx-keyboard-shortcuts/

3
  • 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
1

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.

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

In the newer versions of iTerm (as of writing 3.4.19):

Navigate to PreferencesProfilesKeysKey Mappings.

From Presets dropdown, select Natural Text Editing.

2
  • 1
    Thanks a lot. Saved me tons of headache.
    – Ilya
    Jul 11, 2023 at 21:37
  • what does this answer bring in addition to the two others that mention Natural Text Editing, while those ones also have screenshots ? Jul 27, 2023 at 8:32

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .