在tmux中运行时,vim中的按键混乱


9

我一直在玩tmux,我很喜欢它。但是,在其中运行vim时存在一个烦人的问题。

箭头键以某种方式被重新映射,但仅在某些时候才被映射,例如在启动Command-T时,如果我尝试向下滚动文件列表,则该命令将被取消,并且将进入插入模式,具体取决于箭头键按下时,插入了A,B,C或D。

例如,如果我使用箭头在缓冲区中移动,它们将正常工作。

有任何想法吗?

谢谢!


1
$TERM外面是什么tmux?那里面呢 听起来好像应用程序和普通键盘模式正在发生某些事情。
暂停,直到另行通知。

在tmux外部:xterm,在内部:屏幕...所以如果我运行,TERM=screen vim我会看到相同的行为,因此必须修复屏幕吗?
伊万(Ivan)

Answers:


13

我只是添加set -g default-terminal "xterm"到我的.tmux.conf

这使得tmux使用xterm而不是屏幕,因此生活很美好,我不必担心踩踏键绑定。


5
这样更好set -g default-terminal "xterm-256color"。否则,由于颜色有限,在视觉模式下我不会注意到。
Macario

1
我不得不将其与set -g xterm-keys on
丹·斯塔克

4
值得注意的是,tmux的手册页说从未设置过default-terminal。我不确定后果是什么。
Dan Stahlke

1
给定default-terminal不应设置的警告,也许在vim方面有一个更好的解决方法:link
Dan Stahlke,2012年

在我的情况下
不起作用

6

终于我在这里找到了答案:在OSX上运行屏幕时,command + r在所有屏幕上的vim中弄乱了箭头键

奇怪的是,我只向我的.vimrc文件添加了一个映射:

map <Esc>[B <Down>

但是,单个映射使所有箭头键都能正常工作...


不知何故...这是唯一适用于Centos 6.3的解决方案
Patryk

这对我来说绝对没有意义,但是添加单个映射似乎也可以为我修复所有键。甚至对于陌生人(至少对我来说),在插入模式下按键的直接映射也无法解决(map ^[A <Up>通过按Ctrl + V <Up>并删除O,map ^[OA <Up>从按Ctrl + V <Up>并保持O不会起作用) ')。我不明白...但是什么。我的钥匙现在可以使用了。谢谢。
ND怪胎


1

以防万一有人对这种解决方案不起作用感到生气。

确认您实际上并没有使用tmux + vim + AutoClose vim插件。自动关闭会映射某些内容,使您在前一行中插入ABCD字符!

我刚刚删除了插件,现在可以正常使用了


谢谢!这是给我的。我最终使用了这个自动关闭插件。它提供了类似的功能。
ollpu'1

0

在终端中运行时,Command-T通过映射会做一些愚蠢的事情。如果$ TERM是vt100 *或xterm *,它将跳过映射,但这不是一个好的解决方案。


0

对于那些想在命令行模式下移动光标的人,请看一下博客文章。我最终在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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.