iTerm2 Vim alt+right/left arrow
Solution 1
In iTerm's properties go to Profiles -> Keys and setup there
- For ⌥→ Send Escape Sequence
[1;5C
- For ⌥← Send Escape Sequence
[1;5D
Solution 2
Start by viewing the key code your terminal is sending to vim:
$ sed -n l
^[[1;9D
In the above example, i ran the sed command and pressed Alt + Left.
The ^[[1;9D
is the escaped sequence being sent to vim, so we can user that for our mapping.
Add to vimrc:
map <Esc>[1;9D :tabn<CR>
alternative solution for macOS
if sed -nl
is not working as expected, try CTRL + V instead
You can determine the current mapping using the "control-V trick": First press control-V, then the keystroke you like to examine. This will print the characters that are sent to the terminal. http://www.macfreek.nl/memory/Backspace_and_Delete_key_reversed
For example typing control-V + delete
prints ^?
. I have only verified this on macOS 11.
Solution 3
I read another post describing that for option-left and option right, you need to bind them to the actions ^[b and ^[f, respectively. That is, you bind them to "Send escape sequence" and bind key b and f.
http://elweb.co/making-iterm-2-work-with-normal-mac-osx-keyboard-shortcuts/
Related videos on Youtube
Comments
-
seds over 1 year
As a Linux user, I am very used to jump from word to word in vim/nano using ALT+left or right.
This doesn't seem to work properly using iTerm, I am using zsh, I tried adding;
bindkey -e bindkey '^[[1;9C' forward-word bindkey '^[[1;9D' backward-word
It does work, but inside zsh only, then I commented those lines and added in iTerm a keyboard shortcut;
It does work, but only for the ALTleft
How can I make it work for the right arrow too?
-
slhck over 10 yearsThat doesn't work for me. The escape sequences are sent, but vim only moves one space back and forth. Running the default vim 7.3 that comes with OS X 10.8. Ideally, I'd like to change it on vim's side, not tweaking the defaults of the Terminal emulator (since that'll result in better portability).
-
eiennohito over 10 yearsThat's weird, it works both in vim (from homebrew, not a default one) and zsh with the default configuration from oh-my-zsh (in ~/.oh-my-zsh/lib/key-bindings.sh).
-
seds over 10 yearsDoesn't work here either, I can use alt + arrow in inside zsh, in Vim it only works with shift + arrow :(
-
eiennohito over 10 yearsI checked it one more time on available remote systems (ubuntu 13.04, stable debian, and scientific linux) and it works everywhere. What is the output when you press Control+V, ⌥→? For me it is ^[[1;5C
-
pabouk - Ukraine stay strong over 10 yearsYou should include the essential information instead of just putting a reference here.
-
Petro Semeniuk over 10 yearsWorks for me: iTerm/Vi + zsh
-
Cam Jackson over 8 years+1! I found similar instructions here: coderwall.com/p/h6yfda/…
-
Niing over 3 yearswhat's the key code for
delete
? -
lfender6445 over 3 yearstry
ctrl + v
and then press the delete key instead of the sed cmd which prints nothing. i get this (running osx):^?