我可以让我的 iTerm 组合键在 tmux 中工作吗?

我可以让我的 iTerm 组合键在 tmux 中工作吗?

我在 iTerm 中定义了一些快捷键,并将它们用于 Vim 中的键映射。

例如,我映射Ctrl-Enter以发送^[O2P转义码,然后用它Ctrl-Enter在 Vim 中定义键映射:

在此输入图像描述

set       <F13>=O2P
map       <F13> <C-CR>
inoremap <C-CR> <C-O>o

它可以在常规 iTerm 会话和屏幕会话中工作,但它不是在 tmux 会话中。我该如何解决这个问题以与 tmux 一起使用?除了这个挂断之外,我正在远离屏幕并真正享受 tmux。

答案1

我通过调整要在我的.vimrc.我仍然希望我能更好地理解这一切是如何工作的,以及为什么 tmux 发送的序列与 tmux 外部发送的序列不同,但这让一切正常工作:

if &term =~ "screen"
  set  <F13>=[1;2P
  set  <F14>=[1;2Q
  set  <F15>=[1;2R
  set  <F16>=[1;2S
  set  <F17>=[1;5P
  set  <F18>=[1;5Q
  set  <F19>=[1;5R
  set  <F20>=[1;5A
  set  <F21>=[1;5B
elseif &term =~ "xterm"
  set  <F13>=O2P
  set  <F14>=O2Q
  set  <F15>=O2R
  set  <F16>=O2S
  set  <F17>=O5P
  set  <F18>=O5Q
  set  <F19>=O5R
  set  <F20>=[1;5A
  set  <F21>=[1;5B
endif

" use some unused function key codes to
" make special key combos work in terminal
map  <F13> <C-CR>
map! <F13> <C-CR>
map  <F14> <S-CR>
map! <F14> <S-CR>

map  <F15> <C-Space>
map! <F15> <C-Space>
map  <F16> <S-Space>
map! <F16> <S-Space>

map  <F17> <C-BS>
map! <F17> <C-BS>

map  <F18> <M-Tab>
map! <F18> <M-Tab>
map  <F19> <M-S-Tab>
map! <F19> <M-S-Tab>

map  <F20> <C-Up>
map! <F20> <C-Up>
map  <F21> <C-Down>
map! <F21> <C-Down>

相关内容