13

I have been playing with tmux and I'm loving it. However, there's an annoying issue when running vim inside it.

Somehow the arrow keys get remapped, but only on certain times, like when firing up Command-T, if I try to scroll down the file list, the command is cancelled and I'm thrown into insert mode, and depending on the arrow key I pressed, an A, B, C, or D is inserted.

If I use the arrows to move through a buffer for example, they work properly.

Any ideas?

Thanks!

2
  • 1
    What is $TERM outside tmux? What about inside? It sounds like something is going on with application and normal keypad modes. Jan 25, 2011 at 20:26
  • Outside tmux: xterm, inside: screen... so if I run TERM=screen vim I see the same behavior, so I must fix screen?
    – Ivan
    Jan 26, 2011 at 0:49

6 Answers 6

15

I simply added set -g default-terminal "xterm" to my .tmux.conf

This made tmux use xterm instead of screen, so life is beautiful and I don't need to worry about stomping on keybindings.

6
  • 6
    Better like this set -g default-terminal "xterm-256color". Otherwise I couldn't notice when in visual mode due to limited colors.
    – Macario
    Feb 18, 2012 at 11:39
  • 1
    I had to combine this with set -g xterm-keys on. Nov 25, 2012 at 5:03
  • 4
    It's worth noting that the man page for tmux says to never set default-terminal. I'm not sure what the ramifications are. Nov 25, 2012 at 5:33
  • 1
    Given the warning that default-terminal should not be set, there is perhaps a better fix from the vim side: link. Nov 25, 2012 at 14:34
  • Not working in my case...
    – Blaszard
    Jul 5, 2018 at 12:19
7

Finally I found my answer here: when running screen on OSX, command+r messes up arrow keys in vim across all screens

The weird thing is I only added ONE mapping to my .vimrc file:

map <Esc>[B <Down>

But that single mapping makes ALL the arrow keys work properly...

2
  • Somehow... this was the only solution that worked for me on Centos 6.3
    – Patryk
    Aug 20, 2013 at 11:20
  • This makes absolutely no sense to me, but adding a single mapping appears to fix all keys for me as well. Even stranger (at least to me) the direct mapping for the keypress in insert mode doesn't fix it (map ^[A <Up> works from pressing Ctrl+V <Up> and deleting the O, map ^[OA <Up> from pressing Ctrl+V <Up> and leaving the O doesn't). I don't get it...but whatever. My keys now work. Thank you.
    – ND Geek
    Aug 26, 2013 at 20:01
1

The xterm and xterm-256color causes the BCE problem. See http://permalink.gmane.org/gmane.comp.terminal-emulators.tmux.user/1932.

1

Just in case someone happens to get mad with this solutions not working.

Check out that you don't are actually using tmux + vim + AutoClose vim plugin. Autoclose maps something that causes you having ABCD chars inserted in the previous line!

I just erased the plugin and it's working alright now

1
  • Thank you! This was it for me. I ended up using this autoclose-plugin instead. It provides similar functionality.
    – ollpu
    Jan 6, 2017 at 23:39
0

Command-T does something dumb by mapping when running in a terminal. It skips the mapping if $TERM is vt100* or xterm*, but that's not a good solution.

0

For those people that want to move the cursor in command line mode, take a look at this blog post. I ended up adding eight lines in my vimrc;

" Needed for tmux and vim to play nice
" Needed for tmux and vim to play nice
map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>

" Console movement
cmap <Esc>[A <Up>
cmap <Esc>[B <Down>
cmap <Esc>[C <Right>
cmap <Esc>[D <Left>

You must log in to answer this question.

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