É seguro mapear uma chave para uma sequência de escape personalizada no iTerm?

3

Existem algumas chaves que eu uso no MacVim que o terminal do Vim não reconhece. Por exemplo, Ctrl-Enter, Shift-Enter, Ctrl-Espaço, Shift-Espaço, Ctrl-Backspace.

Estou usando o iTerm2, que permite mapear atalhos de teclado para enviar seqüências de escape. Parece que eu poderia usar isso para fazer meus mapeamentos de teclas desejados funcionarem no terminal. Algo como,

iTerm2

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

Vim

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

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

Não tenho certeza se isso funcionará, mas também estou me perguntando o que devo ter em mente antes de começar a criar sequências de escape personalizadas por bem ou por mal. Parece que pode causar problemas ...

    
por ivan 22.01.2014 / 05:30

1 resposta

2

Entre essas duas páginas (abaixo) eu descobri:

Você fica "seguro" usando os códigos de tecla para teclas de função não utilizadas. No iTerm2, criei "atalhos de teclado" que mapeiam os combos-chave desejados para as sequências de escape para as teclas de função F13 a F16. Então, no meu vimrc, eu configurei os códigos de tecla do Vim apropriadamente, mapeei os combos de teclas desejados para as teclas de Função corretas, então mapeei os mesmos combos de teclas para o que eu quiser. Não tenho certeza se entendi completamente a direção em que as coisas estão fluindo, mas tudo fica ligado e funciona. Aqui está a parte relevante do meu 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
    
por 22.01.2014 / 19:50

Tags