Mapeamentos Gnome-terminal + Vim e Ctrl-Shift

11

É possível mapear a sequência com Ctrl- Shiftno Gnome Terminal?

Estou tentando adicionar os mapeamentos

  • map <C-S-[> gT
  • map <C-S-]> gt

e não está funcionando. Como fazer isso?

De alguma forma, mapeei <C-S-]>, mas acabou que não <C-S-]>, mas <C-]>parece que não reconhece Shift nessa sequência. Está mal configurado ou é culpa do terminal gnome?

Além disso. O mapeamento <C-[>, depois de pressionado, parece que o vim está aguardando. Suponho que seja o tempo limite de mapeamento, mas como me livrar desse tempo limite quando pressiono com precisão <C-[>e não quero pressionar mais nada?

Comecei a aprender o vim, desculpe se há algo obviamente errado nesses mapeamentos.

Simon
fonte

Respostas:

8

Acho que o problema aqui é que você está tentando obter o vim, que espera rodar em um terminal, para reconhecer uma sequência CTRL-SHIFT. Embora seja possível ao X reconhecer essas combinações, os aplicativos executados em um terminal (ou, atualmente, um emulador de terminal) não podem. Isso ocorre porque, historicamente, os terminais só podem enviar e receber sequências de sete ou oito bits de dados ASCII através de uma conexão serial (embora isso possa incluir "sequências de escape" que posicionam o cursor, rolam ou excluem linhas, mudam de cor e outras informações úteis efeitos).

Existem 32 "Códigos de Controle" no conjunto de caracteres ASCII, incluindo o familiar CTRL-A a CTRL-Z. Mas não há códigos ASCII correspondentes para "CTRL-SHIFT" de A a Z. Agora, o próprio gnome-terminal pode reconhecer esses códigos (CTRL-SHIFT-V, por exemplo, colará texto da área de transferência), mas o vim não será capaz de ter acesso direto a ele.

Obviamente, pode ser possível (não sei) que um emulador de terminal seja configurado para converter as teclas CTRL-SHIFT em uma sequência de escape que pode ser reconhecida por um mapeamento vim.

=======

ATUALIZAR

Você pode estar interessado no gvim, que é uma versão gráfica do vim que roda como um programa X em vez de um programa terminal. Talvez o gvim seja capaz de entender os códigos CTRL-SHIFT?

Bartleby, o Scrivener
fonte
4

Parece ser um problema com o Terminal GNOME, não permitindo certas combinações com a Ctrlchave. A pesquisa on-line mostra muitos casos disso.

Caso você não saiba, Ctrl+ page up/ page downalterna entre as guias.

stschn
fonte
3

Como Bartleby apontou, essa é uma restrição terminal, porque o vi vê os códigos de chave como sendo os mesmos.

Para terminais como xtermvocê pode mudar isso. Para o gnome-terminal que ignora as configurações de recursos X, não sei como fazer o seguinte:

Esta pergunta do SO aborda o mesmo tópico e este exemplo mostra isso em uso para mapear várias chaves no .Xresourcesarquivo. Por exemplo:

XTerm*vt100.translations: #override \
  Ctrl ~Meta Shift <Key>a: string(0x1b) string("[65;5u") \n\
  Ctrl ~Meta Shift <Key>b: string(0x1b) string("[66;5u") \n\ 
  Ctrl ~Meta Shift <Key>f: string(0x1b) string("[70;5u")  

Agora temos sequências de teclas diferentes que entram em vi para Ctrlavs. CtrlShifta, Ctrlbvs. CtrlShiftb, Ctrlfvs. CtrlShiftf.

Agora podemos mapeá-los de maneira diferente em ~/.vimrc:

map <ESC>[66;5u   :echo "ctrl-shift-b received"<CR>
map <ESC>[70;5u   :echo "ctrl-shift-f received"<CR>
map <C-b>         :echo "ctrl-b received"<CR>
map <C-f>         :echo "ctrl-f received"<CR>
cfi
fonte
A pergunta original era sobre gnome-terminal, enquanto sua resposta se refere xterm.
egmont
@egmont: Bom argumento e uma supervisão do meu lado. De acordo com esta resposta, os .Xresourcessão ignorados por gnome-terminal. Isso é uma pena. Resposta atualizada.
Cfi
Ligeiramente reformulado / cruzado esta resposta como um par de perguntas e respostas para o SuperUser , porque eu provavelmente deveria excluí-la aqui porque ela não se aplica ao terminal do solicitante.
Cfi
1

Parece que você só precisa desativar todos os atalhos de teclado no terminal gnome.

Ser invisível
fonte
2
Por que desativar os atalhos de teclado ajuda?
Eliah Kagan
Parece que não ajuda em nada, pela minha experiência.
Elliot Foster
1

Nas gnome-terminalseqüências de escape geradas pelas chaves não são configuráveis. Para muitas teclas Ctrl+ keye Shift+ Ctrl+ keygere sequências diferentes; infelizmente para [e ]eles não, então você não pode distingui-los.

Egmont
fonte