4

В MacVim я использую несколько клавиш, которые терминал Vim не распознает. Например, Ctrl-Enter, Shift-Enter, Ctrl-Space, Shift-Space, Ctrl-Backspace.

Я использую iTerm2, который позволяет отображать сочетания клавиш для отправки escape-последовательностей. Кажется, что я мог бы использовать это, чтобы заставить мои желаемые сопоставления клавиш работать в терминале. Что-то вроде,

iTerm2

Ctrl-Space: Send ^[[123;456ABC

напор

set <F13>=^[[123;456ABC
map <F13> <S-Space>

noremap <S-Space> mzO<Esc>j`z

Я не уверен, что это сработает, но мне также интересно, о чем мне следует знать, прежде чем я начну создавать произвольные escape-последовательности. Кажется, это может вызвать проблемы ...

1 ответ1

3

Между этими 2 страницами (ниже) я понял это:

Вы остаетесь "в безопасности", используя коды клавиш для неиспользованных функциональных клавиш. В iTerm2 я создал "сочетания клавиш", которые сопоставляют нужные комбинации клавиш с escape-последовательностями для функциональных клавиш с F13 по F16. Затем в моем vimrc я соответствующим образом установил коды клавиш Vim, сопоставил нужные комбинации клавиш с правыми функциональными клавишами, а затем сопоставил те же комбинации клавиш с тем, что я хочу. Я не уверен, что полностью понимаю направление, в котором движутся вещи, но все это связано и работает. Вот соответствующая часть моего vimrc:

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

set  <F14>=O2Q
map  <F14> <S-CR>
map! <F14> <S-CR>

set  <F15>=O2R
map  <F15> <C-Space>
map! <F15> <C-Space>

set  <F16>=O2S
map  <F16> <S-Space>
map! <F16> <S-Space>

" open above / below current line
inoremap <S-CR> <C-O>O
inoremap <C-CR> <C-O>o

" insert above / below current line
noremap <S-Space> mzO<Esc>j`z
noremap <C-Space> mzo<Esc>k`z

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .