Would it be possible to configure iTerm 2 to go backwards and forwards one word through the curent text in the command line using a keyboard shortcut?
54This doesn't really answer the question but it's relevant: you can option+click anywhere in a command line to move the cursor there.– David WinieckiApr 19, 2018 at 22:52
@P-i- Why do you think that accepted answer is not the correct one? 1. It appeared almost 3 years before the one with most votes. 2. It presents a solution that doesn't works by default.– syntagmaAug 21, 2019 at 18:23
2@P-i- You should only downvote a question if the question itself has problems, not because you disagree with OP's actions– TerryAMar 21, 2020 at 0:17
Ctrl-[ b jumps back a word. You can also use
Esc instead or
f to go forward.
[ release and then
More information can be found at this other discussion on AskDifferent.
13This would be better if there was a way to go back lots of words quickly while holding down a button, as opposed to having to type a sequence of keys for each word. Feb 28, 2019 at 19:43
2What is "Ctrl-[" ? Aug 20, 2019 at 22:57
With "Ctrl-[ " I mean hitting the "Ctrl" key and "[" key simultaneously.– VolskAug 23, 2019 at 8:33
25Answer below by Ricardo Stuven is the right answer May 11, 2020 at 13:46
Yes, Just vist the next answer but not the adpoted one.– Carl LeeSep 1, 2020 at 9:03
Killing a fly with a cannon:
- Go to Preferences... > Profiles > Keys (not Preferences... > Keys)
- On current versions (3.14+) you then switch to the Key Mappings tab
- Press Presets... dropdown button.
- Select Natural Text Editing
Then, you can
- move a word backwards Option ⌥ + ←
- move a word forwards Option ⌥ + →
- move to the start of the line fn + ←
- move to the end of the line fn + →
- delete a word backwards Option ⌥ + ⌫
- delete the whole line Command ⌘ + ⌫
If the preset doesn't appear, reinstall iTerm2. If you installed it using Homebrew+Cask:
brew cask reinstall iterm2
or since Homebrew 2.6.0 (December 2020)
brew reinstall --cask iterm2
7This is great and will add most of your needs. It however does not add a 'go to start/end of line via CMD + left arrow/right arrow`. For that action, see: stackoverflow.com/questions/6205157/…– MikeyN0Oct 3, 2018 at 23:07
7Go to iTerm Preferences → Profiles, select your profile, then the Keys tab. Click Load Preset... and choose Natural Text Editing. May 7, 2021 at 8:39
3THANKS, this has to be the correct/verified answer!. ✌🏼 Aug 27, 2021 at 9:06
24With the new versions you'll need to go to
Key Mappingsthen select a preset. You could also use
Terminal.app Compatibilitywhich gives the same result. Sep 23, 2021 at 8:19
3why isn't this the accepted answer? This definitly is the best one! Thx– NaderioMay 30, 2022 at 7:40
I like the following setup.
- Preferences > Keys (or Preferences > Profiles > Keys)
- Click the plus.
move forward one word
option+right send escape sequence f
move back one word
option+left send escape sequence b
delete to beginning of word (credit)
option+delete send hex code 0x1B 0x08
delete to end of word
fn+option+delete send escape sequence d
(I don't remember for sure, but I think I copied this answer from jherran's answer below and added more to it. I should have added the extra information in comments or suggested edits on that answer. I don't know how to improve the situation, but now it's known.)
3On MacOS 10.12, I need to use hex code 0x17 to get delete to beginning of word– midopaJan 20, 2017 at 4:16
works like a charm with macOS 10.12 and zsh Feb 7, 2017 at 14:23
1best answer ever you have a beer from me :)– infinityJun 9, 2017 at 13:46
2Consider upvoting jherran's answer. I think I just improved on their answer a little and probably should have suggested an edit instead of creating my own answer. I kind of feel like I stole it. Jun 17, 2017 at 2:54
1I created the shortcuts as suggested but initially they didn't work as they were being overridden by keyboard shortcuts in my profile (see profile menu). Deleting the respective entries in my profile seems to have done the trick. Feb 20, 2019 at 14:25
To Get Forward (Alt-f), Backward (Alt-b) and Delete (Alt-d) Word
- Open iTerm.
- Go to iTerm > Preferences... > Profiles > Keys
- Under Profile Shortcut Keys, click the + sign.
- Type your key shortcut (option-b, option-f, option-d, option-left, etc.)
- For Action, choose Send Escape Sequence.
- Write b, d or f in the input field.
This works at least for bash. For zsh there are other ways to navigate.
2I tried to add an option+right shortcut and got a warning message about a conflict, because I didn't realize that you can configure keys both in Preferences > Keys > Global Shortcut Keys and also Preferences > Profiles > Keys > Profile Shortcut Keys. Configuring it in the default profile worked. Sep 8, 2015 at 3:48
1It works for zsh as well! Jun 30, 2017 at 16:33
2I think your answer (to the same solution) was the easiest to understand +1– nzaleskiOct 29, 2018 at 12:39
1Very useful explanation.– ContiJan 28, 2019 at 10:37
Perfect. You can also use Command+F etc so the "Alt" key is in the same position and no adjustment is necessary when switching between PC and Mac. Sep 8, 2019 at 17:59
Similar to other answers, but for Zsh it took me a while to find this:
If you are using Zsh, like Oh My Zsh, in iTerm then go to: Preferences > Profiles > Keys sub-menu
Click + sign
Add your shortcut combo, choose "Send Escape Sequence"
inputs for left and right below.
2You saved my life mate May 31, 2017 at 8:40
This is the only solution that worked for me– BryjiOct 2, 2017 at 10:44
Finally, a simple solution that works :D Thanks for sharing it with us! Aug 1, 2018 at 7:08
This should be the answer. Upvoted.– ehimeSep 27, 2019 at 17:16
Thanks, man, this is the best possible way IMO. Feb 19, 2020 at 16:39
3.3.12, you can select the
Natural text editing preset and it will add all the necessary escapes to make it feel like you're navigating text in any other app.
I have 3.4.15 and these options are gone (only defaults). Moreover, I can't find where to download these itermkeymaps...– rafrafDec 29, 2021 at 13:25
1Thank you for the screenshot. This made is easy for me to get this small feature back. Mar 19, 2022 at 5:50
Configure Left (and / or) Right Option key to send Esc+
If you messed with your presets, you may need to load the default preset (beware this could wipe your custom keybinds!)
If you see weird characters after you do this you may need to configure your ~/.inputrc or /etc/inputrc
Add this to your ~/.inputrc:
"\e[1;5C": forward-word "\e[1;5D": backward-word "\e[5C": forward-word "\e[5D": backward-word "\e\e[C": forward-word "\e\e[D": backward-word
full example inputrc:
# /etc/inputrc - global inputrc for libreadline # See readline(3readline) and `info rluserman' for more information. # Be 8 bit clean. set input-meta on set output-meta on # To allow the use of 8bit-characters like the german umlauts, uncomment # the line below. However this makes the meta key not work as a meta key, # which is annoying to those which don't need to type in 8-bit characters. # set convert-meta off # try to enable the application keypad when it is called. Some systems # need this to enable the arrow keys. # set enable-keypad on # see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys # do not bell on tab-completion # set bell-style none # set bell-style visible # some defaults / modifications for the emacs mode $if mode=emacs # allow the use of the Home/End keys "\e[1~": beginning-of-line "\e[4~": end-of-line # allow the use of the Delete/Insert keys "\e[3~": delete-char "\e[2~": quoted-insert # mappings for "page up" and "page down" to step to the beginning/end # of the history # "\e[5~": beginning-of-history # "\e[6~": end-of-history # alternate mappings for "page up" and "page down" to search the history # "\e[5~": history-search-backward # "\e[6~": history-search-forward # mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving "\e[1;5C": forward-word "\e[1;5D": backward-word "\e[5C": forward-word "\e[5D": backward-word "\e\e[C": forward-word "\e\e[D": backward-word $if term=rxvt "\e[7~": beginning-of-line "\e[8~": end-of-line "\eOc": forward-word "\eOd": backward-word $endif # for non RH/Debian xterm, can't hurt for RH/Debian xterm # "\eOH": beginning-of-line # "\eOF": end-of-line # for freebsd console # "\e[H": beginning-of-line # "\e[F": end-of-line $endif
You can set your terminal in vi mode with
set -o vi to be able to use the usual vi motion commands (add the line in
.bash_profile to store the setting permanently.)
So, as if in vi, you can hit
b to move one word backward (
w for forward), go to the beginning of the line with
0, or search a character backward with
F + the char.
i to go back to Normal mode and insert.
Those familiar with vi can do much more. A cheat sheet can be found here.
2vim solves everything! :D Jun 20, 2018 at 20:19
Ito just go once to the beginning of the line is slightly less convenient than
Ctrl-a- this use case happens often when you just want to modify the command name. So I use vi mode with some keybinding changes in iTerm2 to map
Ctrl-Aand similar to escape sequence
Esc+0. That way these cases are even faster as it ends in edit mode.– rfabbriAug 6, 2019 at 17:59
For new version of iterm 2 (3.4.4), I had to use the suggestion from https://coderwall.com/p/a8uxma/zsh-iterm2-osx-shortcuts. This work specifically for zsh
In zsh you can use ctrl + a/e to move to beginning/end of line and esc + W/B to move one word backward/forward, but that's not very handy.
Here is a solution to map ⌥ + ← / → and ⌘ + ← / → to work in iTerm2 as expected
Put this in your .zshrc
bindkey "[D" backward-word bindkey "[C" forward-word bindkey "^[a" beginning-of-line bindkey "^[e" end-of-line
1This is incomplete - as the URL also says you need to chnage things in iTerm - why do you think you do not need to do this?– mmmmmmApr 3, 2021 at 10:10
1Worked perfectly for me with iTerm 3.4.16 and zsh. Thanks!– BiBiSep 15, 2022 at 1:53
As of Oct 3, 2022 - This works for me on Mac OS 12.6 and Iterm2 3.4.16– paparOct 2, 2022 at 18:28
Answer with more intuitive word breaks. If I have:
ls foo/bar foo/bar/baz
I want a word to be
foo. It took a while a while to get that working.
From this I added to
# Use Ctrl-g instead of Ctrl-f because Ctrl-f is mapped in macs to Find bind '"\C-g":vi-fWord' bind '"\C-b":vi-bWord'
From what I could tell, it's not possible to mention Option key in
.bash_profile. So I had iTerm2 map from C-g -> Option-right, C-b -> Option-left:
With iTerm2 3.1.4, I was able to setup the following without adding individual key mappings.
- Go to Preferences > Profiles > Keys
- Left/Right ⌥ Key: Select Esc+
With a new Terminal session you are now able to use:
Option ⌥ + f to Get Forward
Option ⌥ + b to Get Forward
Option ⌥ + Delete ⌫ to Delete Word
3How does this differ from the other highly voted answer? apple.stackexchange.com/a/293988/237– mmmmmmFeb 22, 2018 at 19:04