434

Is it possible to move between words in iTerm using Alt + Right/Left Arrows ? Now if I press Alt+Left I will get '[D' and '[C' if I press Alt+Right.

ceth
  • 5,355
  • 2
    Just adding a note for those that simply want to know if its possible to do this with some hotkeys, there is a way. If you want to map it, that's fine but in terminal, CTRL+A will go to the beginning of a line and and CTRL+E to the end. Option+Left to go the beginning of a word and then Option+right to end of a word. – aug Jul 23 '19 at 20:10

9 Answers9

675
  • Go to iTerm Preferences → Profiles
  • select your profile
  • then the Keys tab with its sub-tab Key Mappings
  • Click Load Preset...
  • and choose Natural Text Editing

Steven
  • 3
Gordon Gao
  • 6,876
  • 1
  • 14
  • 3
193

Go to iTerm Preferences → Profiles, select your profile, then the Keys tab. Find ⌥← and ⌥→ and set them to send escape sequence b and send escape sequence f respectively.

Mapping alt-right to move cursor forward by one word

If you use ⌘→ and ←⌘ you will need to remap the next and previous tab shortcuts which are set to those as default. Terminal uses ⇧⌘→ and ⇧⌘← for these.

You can do this under Profiles, or just globally under Keys (shown below) if you wish to set it globally. Note that settings in Profiles override global settings in Keys.

Globally mapping alt-right to move cursor forward by one word

grg
  • 201,078
31

If you use bash, you can also add

"\e\e[D": backward-word
"\e\e[C": forward-word

to ~/.inputrc.

Lri
  • 105,117
  • 1
    This worked best for me. Trying to set it up in iTerm2 only generated [D or [C each time I tried to use the new button action. Thank you. – dmgig Jul 13 '16 at 17:35
  • As far as I can tell there's nothing you can do in iTerm2 v3.0.10. It has to be this bash setup. – fiorix Oct 03 '16 at 16:32
  • 1
    Not sure about iTerm2 v3.0.10, but iTerm2 v3.0.14 definitely works with the Natural Text Editing solution so you don't need to resort to bash input configuration. – dwanderson Feb 16 '17 at 18:45
16

For zsh I inserted in ~/.zshrc

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

for bash I inserted in ~/.inputrc

"\e\e[D": backward-word
"\e\e[C": forward-word
12
  1. Go to: Preferences > Profiles > Keys

  2. Look for the actions of ⌥← and ⌥→. They would have been mapped to: Send Hex codes

  3. Change them to Send Escape sequence with Esc+B for backward and Esc+F for forward.

user3439894
  • 58,676
quettabit
  • 341
  • 3
  • 7
12

If you're coming here recently because the preset is no long available under Preferences > Keys > Presets..., the presets had change place. Now, if you want to find one of the default presets (Natural Text Editing included), you may want to go over: Preferences > Profiles > [choose your starred profile] > Keys > Key Mappings > Presets...

On a default setting, that is the area you want to get into:

key mappings under profile

enter image description here

I was looking like crazy on how to download it, I even found buried inside the .app Resources folder a .plist with this mappings in, so I knew I would find this.

Hope that helps anyone in the future looking forward into this.

4

Late in the game but for the visual:

enter image description here

Namely, see the Esc+ is selected.

JustGage
  • 141
2

CMD+Delete -- Send Hex Code -- 0x15

To delete the whole line (similar to Option+U)

neaumusic
  • 326
2

Very edge case scenario, but for me it was an issue in my own dotfiles.

These two lines caused it:

In bash_options

set-o vi

In inputrc

set editing-mode vi

After commenting those two lines out, iTerm2 Natural Text Editing works as expected.

grg
  • 201,078