console vim na sessão de tela: remapear Ctrl-Shift-Left, Ctrl-Shift-Right para não excluir linhas

2

Eu tenho minha configuração gvim para que eu possa selecionar palavras com Ctrl-Shift-Direita, Ctrl-Shift-Left etc. (sim, eu sei que é um mau hábito, mas funciona para mim ..).

Infelizmente, essas combinações de teclas excluem o texto quando usado no console vim dentro de uma sessão de tela. Acredito que isso ocorre porque as duas combinações de teclas produzem os códigos Esc [1;6D e Esc [1;6C no terminal, que são interpretados como "delete next 6 lines" ou "alterar as próximas linhas", respectivamente.

Existe alguma maneira de impedir que a tela ou o console vim interpretem essas combinações de teclas?

UPDATE : conteúdo do meu .screenrc:

sessionname daku
startup_message off
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a "
    
por daniel kullmann 19.01.2012 / 09:33

3 respostas

2

Claramente, o Vim não tem uma ligação para a seqüência de teclas ␛[1;6D , mas tem uma para outra sequência de teclas que começa com ␛[1 , provavelmente ␛[1~ (geralmente enviado pelo Início chave). Adicione os remapeamentos ao seu .vimrc para declarar que ␛[1;6D é realmente Ctrl + Deslocamento + Esquerda e assim por diante. Eu acho que o seguinte deve fazer o truque:

noremap <ESC>[1;6D <C-S-Left>
noremap! <ESC>[1;6D <C-S-Left>
noremap <ESC>[1;6C <C-S-Right>
noremap! <ESC>[1;6C <C-S-Right>

Veja o que eu tenho no meu .vimrc :

function Allmap(mapping)
  execute 'map' a:mapping
  execute 'map!' a:mapping
endfunction
function Allnoremap(mapping)
  execute 'noremap' a:mapping
  execute 'noremap!' a:mapping
endfunction
call Allmap('<ESC>[6D <C-S-Left>')
call Allmap('<ESC>[6C <C-S-Right>')
call Allnoremap('<C-S-Left> <C-Left>')
call Allnoremap('<C-S-Right> <C-Right>')
    
por 21.01.2012 / 14:55
0

Isso é o que está no meu .vimrc agora:

if ! has("gui_running")
  noremap  <ESC>[1;6D <C-S-Left>
  inoremap <ESC>[1;6D <C-S-Left>
  noremap  <ESC>[1;6C <C-S-Right>
  inoremap <ESC>[1;6C <C-S-Right>
endif
    
por 24.01.2012 / 08:43
-1

Mova a ligação de ~ / .vimrc para ~ / .gvimrc.

    
por 19.01.2012 / 13:44