É possível usar dois caracteres (por exemplo, ^ tm) no modo de inserção em zsh para uma ligação de comando?

2

no meu arquivo .zshrc atual que tenho

bindkey -M viins -s '^tm' '^[Iman ^[Ela ^[d$'

e isso não funciona, no entanto, quando eu removo m do atalho e agora é apenas ^t o atalho está funcionando. Eu gostaria de ter ^tm .

Alguma idéia?

    
por Jakub 08.09.2015 / 18:18

1 resposta

3

Funciona, mas você precisa ser rápido. Você pode vincular a sequência de caracteres, mas a idéia é vincular isso às chaves que enviam sequências de caracteres.

Por exemplo, quando você pressiona a tecla Início , muitos terminais enviam ^[[1~ . O primeiro caractere é o ESC, que também é ligado no modo de inserção vi. Por isso, é importante que vincular algo ao ESC[1~ não pare de ESC de funcionar.

zsh usa a configuração $KEYTIMEOUT (0,4 segundo por padrão) para decidir por quanto tempo esperar até que a próxima tecla decida se é uma tecla com vários caracteres pressionada ou várias pressionamentos de tecla de um único caractere em seqüência. / p>

Agora, se não houver outro mapeamento de chave que comece com ^T e, em particular, se não houver mapeamento apenas em ^T , então zsh poderá aguardar indefinidamente esse m . ^T é mapeado para self-insert no keymap viins padrão que não é muito útil. Então você pode simplesmente removê-lo:

bindkey -Mviins -r '^T'

Qual deve fazer o que você quer.

A propósito, você pode querer vincular isso ao widget run-help .

    
por 08.09.2015 / 18:39