13

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;

enter image description here

It does work, but only for the ALTleft

How can I make it work for the right arrow too?

9

In iTerm's properties go to Profiles -> Keys and setup there

  • For ⌥→ Send Escape Sequence [1;5C
  • For ⌥← Send Escape Sequence [1;5D

enter image description here

  • That 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). – slhck Sep 6 '13 at 7:01
  • That'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). – eiennohito Sep 6 '13 at 7:04
  • Doesn't work here either, I can use alt + arrow in inside zsh, in Vim it only works with shift + arrow :( – seds Sep 7 '13 at 17:34
  • I 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 – eiennohito Sep 8 '13 at 9:03
  • Works for me: iTerm/Vi + zsh – Petro Semeniuk Jan 31 '14 at 2:20
5

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

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/

0

None of those answers worked for me. I ended up loading a linux VM and checked what I'd get with <Alt-ARROW>.

The 4 escape sequences which worked for me are those:

  • <Alt+Up>: [1;3A
  • <Alt+Down>: [1;3B
  • <Alt+Right>: [1;3C
  • <Alt+Left>: [1;3D

Be careful to edit the Profile keys and not the main ones which will be overridden by the Profile ones (where Alt + Arrows are set by default to an Hex Sequence which didn't work with vim).

-1

Just an other possible solution, vim offers word motions on its own, see:

:help word-motions
  • 2
    You should include the essential information instead of just putting a reference here. – pabouk Jan 24 '14 at 12:39

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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