Definir seqüências de escape personalizadas no terminal

1

Eu gostaria de alterar as seqüências de escape usadas por algumas teclas no meu terminal. Meu objetivo é definir os mapeamentos personalizados no Vim (versão de terminal).

A seguir, uso o shift-space como exemplo, mas preferiria que a solução proposta fosse genérica.

Meu terminal atual (gnome-terminal) usa um espaço simples como uma seqüência de escape para o shift-space, como pode ser visto digitando ctrl-v shift-space. Uma verificação rápida com o verdadeiro xterm mostra o mesmo comportamento. Eu gostaria que a combinação de teclas de espaço de turno gerasse outra sequência de escape (por exemplo, a de shift-F30, que eu nunca usaria de outra forma).

Então, como eu faria isso? E é mesmo uma boa ideia? Deixe-me saber se existem alternativas melhores ...

Nota: Estou ciente de que isso é apenas parte do problema: depois que o terminal envia uma sequência de escape adequada para minhas chaves, ainda preciso ensinar ao Vim o que isso significa. Mas eu acho que sei como lidar com isso.

    
por Ipkiss 27.10.2013 / 10:33

1 resposta

0

Comecei esta resposta tentando dar-lhe uma solução apenas para a parte do Vim. Depois de ler esta página stackoverflow , parece que o Vim A implementação de curses para terminal não tem como diferenciar space e shift-space , a menos que curses ganhem libtermkey support e seu terminal suporte <CSI> seqüências.

Normalmente, e dependendo da situação, é possível inserir algo assim no arquivo ~/.vimrc para obter um mapeamento:

nmap <S-space> :SomeValidVimCommandHere<CR>

ou

inoremap <S-space> <S-F30>

Eu não testei isso para ver se as maldições obtiveram o suporte necessário, para que você possa tentar fazer o mapeamento e ver se ele funcionará. Se isso é são ou não, não tenho idéia, mas gostaria de salientar que alguns mapeamentos geram um comportamento indefinido. Um exemplo é a chave de escape. Alguns anos atrás eu tentei indefinir a chave de escape para que ela não estivesse mais em uso, isso porque eu queria me forçar a parar de usar a chave escape e usar a combinação jk para obter o mesmo resultado. Isso criou para mim um comportamento "aleatório" que eu não conseguia entender. Pelo que entendi, isso ocorre porque a chave de escape é incorporada profundamente no modo de fazer as coisas do Vims. Isso pode se aplicar ao mapeamento que você está sugerindo, mas não tenho provas de que seja esse o caso.

Espero que isso lance alguma luz sobre o seu problema.

    
por 27.10.2013 / 11:32