这些键映射在 tmux 中停止工作。在我的.vimrc
, 我有:
nmap <Space> i
map <C-Down> <C-w>j
map <C-Up> <C-w>k
map <C-Left> <C-w>h
map <C-Right> <C-w>l
当我跑步时:map
, I see:
<C-Right> <C-W>l
<C-Left> <C-W>h
<C-Up> <C-W>k
<C-Down> <C-W>j
然而,当我同时按下 Control 和箭头键时,它的行为就好像没有设置键绑定一样。
维姆知道xterm类似终端(由以 TERM 开头的 TERM 标识)xterm
,或对的特定响应t_RV
序列(如果已定义)支持某些修改键的扩展序列,但它并不假设这一点screen
术语(您应该在tmux).
但是,您可以告诉 Vim 这些序列,并在 TMUX 存在且 TERM 开头时启用它们screen
(第一行启用(更好的)鼠标支持tmux,您可能也喜欢):
if &term =~ '^screen' && exists('$TMUX')
set mouse+=a
" tmux knows the extended mouse mode
set ttymouse=xterm2
" tmux will send xterm-style keys when xterm-keys is on
execute "set <xUp>=\e[1;*A"
execute "set <xDown>=\e[1;*B"
execute "set <xRight>=\e[1;*C"
execute "set <xLeft>=\e[1;*D"
execute "set <xHome>=\e[1;*H"
execute "set <xEnd>=\e[1;*F"
execute "set <Insert>=\e[2;*~"
execute "set <Delete>=\e[3;*~"
execute "set <PageUp>=\e[5;*~"
execute "set <PageDown>=\e[6;*~"
execute "set <xF1>=\e[1;*P"
execute "set <xF2>=\e[1;*Q"
execute "set <xF3>=\e[1;*R"
execute "set <xF4>=\e[1;*S"
execute "set <F5>=\e[15;*~"
execute "set <F6>=\e[17;*~"
execute "set <F7>=\e[18;*~"
execute "set <F8>=\e[19;*~"
execute "set <F9>=\e[20;*~"
execute "set <F10>=\e[21;*~"
execute "set <F11>=\e[23;*~"
execute "set <F12>=\e[24;*~"
endif
正如评论所示,您还需要窗口xterm-keys
选项已启用。您可以像这样对所有窗口执行此操作(在您的~/.tmux.conf
):
set-option -gw xterm-keys on
(请记住,更改为~/.tmux.conf
不会自动加载。为了有效,您需要手动运行此命令(在tmux
shell 命令,或前缀:
提示),或重新加载您的配置文件source ~/.tmux.conf
(in a tmux
shell 命令,或前缀:
提示),或重新启动服务器(退出所有会话并重新启动tmux)).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)