我在 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>