out*_*tin 20 vim keyboard-shortcuts tmux
我想弄清楚如何获得vim并tmux一起玩。
我的问题是:当我使用时,xterm-256color我可以vim很好地工作,但背景无法正确呈现。
我使用screen-256color. 这看起来不错,但打破了Ctrl + arrow keys(他们进入插入模式并删除 4 行)。我想使用这些映射来切换vim.
我如何让这个工作?
Chr*_*sen 23
为了获得最佳功能,需要正确设置多个级别的配置。
xterm-256color)。由 TERM 环境变量标识的 terminfo 数据库条目告诉tmux如何识别修改后的箭头键的序列(用户定义的功能 { kUP, kDN, kRIT, kLFT}{, 3.. 7})。配置tmux以生成序列。将会话xterm-keys选项设置为,on以便tmux在收到其 TERM 标识的序列时将生成自己的 xterm 样式序列。在您的~/.tmux.conf:
set-option -g xterm-keys on
Run Code Online (Sandbox Code Playgroud)screen在tmux(例如screen-256color)中使用了基于 TERM 的术语。这告诉在tmux 中运行的程序如何控制tmux的终端(重新)仿真以及他们应该从tmux期望什么响应。不幸的是,screen基于 terminfo 的数据库条目通常没有为修改后的箭头键定义任何序列(即它们可能没有kUP,等等),因此在tmux 中运行的程序可能不知道期望这样的序列。您需要手动配置要识别这些键的任何程序。在Vim 中,你可以把它放在你的~/.vimrc:
if &term =~ '^screen'
" 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"
endif
Run Code Online (Sandbox Code Playgroud)
如果您发现使用-variant 会导致正常箭头键停止工作,则您可能希望使用不带x(即<Up>代替<xUp>,等等)的x变体。
像这样定义键的好处是您不必分别映射每个修饰符组合(Shift、Control、Contol+Shift、Meta、Meta+Shift、Meta+Control、Meta+Control+Shift);在*得到特别的解释来处理所有的相关序列(见:help xterm-modifier-keys)。
然后你可以映射键而不是它们的硬编码序列:
nnoremap <C-Right> gt
nnoremap <C-Left> gT
Run Code Online (Sandbox Code Playgroud)运行cat中tmux,并按问题的关键,找出它们所产生的转义码。对我来说,这给了^[[D和^[[C。然后直接映射那些转义码。
nnoremap ^[[D gT
nnoremap ^[[C gt
Run Code Online (Sandbox Code Playgroud)
其中^[是转义字符,您可以通过<CTRL-v><ESC>在 vim 中按下来插入。