Problema ao usar as teclas Ctrl + Seta no Vim ao usar o Byobu com tmux

12

No Vim, eu havia configurado as teclas Ctrl + Seta para pular as palavras. Isso funciona muito bem ao executar o Vim dentro do terminal gnome.

No entanto, ao usar byobu (tmux), ele mostra um comportamento estranho: exclui tudo depois do cursor.

Para referência, estas são minhas configurações do vim:

:inoremap <C-Left> <C-\><C-O>b
:inoremap <C-Right> <C-\><C-O>w
shivams
fonte

Respostas:

7

O problema é duplo. Primeiro, tmuxpor padrão, converte as teclas de seta de controle de um tipo de sequência de escape para outro. Então, chaves especiais como as que controlleftsão enviadas vimsem o modificador, por exemplo left,. Se você cat -vver as diferentes seqüências de escape, poderá ver algo como isto

^[OD

contra isso (fora do tmux):

^[[1;5D

A linha

set-window-option -g xterm-keys on

corrige esse aspecto. A outra parte é que, tmuxpor padrão, usa a descrição do terminal para screen. Essa descrição do terminal não descreve as teclas de seta de controle. Essas entradas do banco de dados do terminal seriam as mais apropriadas para o VTE (gnome-terminal):

Existem outros, como

que seria selecionado automaticamente quando rodando em screense o correspondente TERMfora eram vte, vte-256coloretc. tmuxnão faz isso-seleção automática; você precisa modificar seu arquivo de configuração.

A propósito, não há entrada "screen.xterm" porque isso interferiria em alguns usos de screen. Não há conflito com TERM=xterm-new.

Se você possui um banco de dados de terminal padrão (mínimo), como ncurses-baseno Debian, talvez não o possua. Mais comum seria xterm-256color, que é próximo o suficiente para ser usado com o vim e o tmux.

Por exemplo, se eu adicionar isso ao meu .tmux.confarquivo, ele se comportará conforme o esperado no vim:

set -g default-terminal "xterm-256color"

Leitura adicional:

Thomas Dickey
fonte
Hmmm ... Isso funciona :) Mas apenas parcialmente. Somente Control+ Leftestá funcionando; Control+ Rightnão é. Vou testar e atualizar mais tarde.
shivams
1
Você pode ter alguma outra ligação interferindo no controle + direito (dados fornecidos, posso oferecer conselhos).
Thomas Dickey
Obrigado pela oferta :) Eu investiguei um pouco e descobri que de fato algumas outras combinações de teclas estão causando interferência. Por exemplo, no meu Mac, isso funciona bem, enquanto no Linux (usando o Guake) não é. No entanto, estou fora da estação e não consigo acessar meu Linux. Vou atualizar quando resolver o problema.
shivams
@Thomam Dickey: Enquanto isso, estou aceitando sua resposta, pois de fato resolve o problema.
shivams
@ThomasDickey Eu gostaria de dizer "Go raibh míle maith agat", que em irlandês está literalmente traduzido como "Que você tenha mil coisas boas". Muito obrigado por esta resposta. VocÊ e uma estrela.
Rob
2

A partir daqui, você pode desatar a combinação de teclas no byobu:

Crie um arquivo ~/.byobu/.tmux.confcom (ou adicione se o arquivo existir):

set-window-option -g xterm-keys on

Em seguida, adicione o seguinte a ~/.byobu/keybindings.tmux:

unbind-key -n C-Left
unbind-key -n C-Right
user1794469
fonte
Isso não funciona. No entanto, ele me deu uma liderança sólida. Vou tentar seguir o exemplo e encontrar uma solução. Obrigado :)
shivams