control-left e control-right não funcionam no vim, dentro de uma sessão de tela

1

No vim, control-left e control-right são as palavras separadas por espaços em branco (por exemplo, sinônimos para B e W), iguais às textareas web e bash .

Mas ao executar screen , essas chaves param de funcionar. Quando pressionado, o vim muda para a linha de comando e digita 5C ou 5D .

Aqui está a codificação que tenho para estas chaves:

$ cat >/dev/null    # pressing control-left, then control-right:
^[[1;5C^[[1;5D

BTW: Eu tentei remapear essas chaves em .screenrc , assim:

bindkey ^[[1;5D stuff B
bindkey ^[[1;5C stuff W

Isso funciona para o vim, mas agora essas chaves não funcionam na linha de comando bash (em vez disso, apenas exibindo B ou W ).

Eu estou supondo que isso é algum termcap mysteriousness, que eu nunca entendi ... obrigado por qualquer esclarecimento!

    
por 13ren 11.01.2013 / 07:57

1 resposta

2

Existem algumas maneiras de corrigir isso. Uma é anotar o valor de $ TERM antes de iniciar a tela (provavelmente xterm), depois de iniciar o vim na tela, defina a opção 'term' para esse valor. Por exemplo,

:set term=xterm

Outra maneira é definir os mapeamentos para essas sequências de caracteres:

:map <esc>[1;5D <C-Left>
:map <esc>[1;5C <C-Right>

Você pode executar uma dessas soluções no seu ~ / .vimrc condicionalmente usando a tela, assim:

if &term == "screen"
    map <esc>[1;5D <C-Left>
    map <esc>[1;5C <C-Right>
endif
    
por 11.01.2013 / 09:56