É possível atribuir vários comandos a uma única tecla de atalho? (bash, xterm)

2

De volta ao dia, se meu cursor estivesse no meio de um comando shell muito longo, eu teria acabado de pressionar Ctrl + C para obter um novo prompt de comando .

Então eu aprendi sobre Ctrl + K / C e a vida era boa. Infelizmente, essas sequências são um pouco estranhas para mim, então agora gostaria de mapear um atalho para redefinir a linha inteira com uma sequência.

É possível mapear algo como Ctrl + X para que execute esses dois comandos? Eu verifiquei as variáveis em man bash e encontrei kill-whole-line , mas não sei como implementá-lo no meu .bashrc - ou se é mesmo o que eu preciso (parece que é).

ED: Eu aprendi Ctrl + X pode não ser a melhor escolha porque é um gateway para outros atalhos do bash , então eu fui com outra coisa.

    
por Jeff 16.08.2013 / 16:35

2 respostas

1

Você pode adicionar a seguinte linha em ~/.inputrc :

"\C-x": kill-whole-line

Ou adicione o seguinte ao seu ~/.bashrc :

bind '"\C-x": kill-whole-line'

Para ver todas as ligações possíveis e que estão em vigor, execute

bind -p

Você pode precisar desvincular as combinações que começam com \C-x .

    
por 16.08.2013 / 16:49
1

Não é possível atribuir vários comandos a uma única tecla de atalho diretamente. Normalmente, um faria o seguinte no ~/.inputrc

"\C-x": some-readline-command (eg. kill-whole-line)

No entanto, você pode fazer o seguinte para mapear a tecla de atalho para qualquer sequência de entrada (onde você pode referenciar os comandos já vinculados por suas teclas de atalho e, portanto, executá-los)

"\C-x": "\C-knew text"

Nota: Na verdade, isso não funcionaria porque \C-x é, por padrão, vinculado como chave de chamada para outras vinculações (por exemplo, \C-x\C-u para undo in emacs mode). Você tem que desvincular todos para fazer \C-x puro fazer alguma coisa.

    
por 16.08.2013 / 16:56