Como você atribui comandos às chaves no Terminal?

10

Existe uma solução para atribuir combinações especiais de teclas às palavras em uso no terminal. Por exemplo, o comando less é muito útil e eu uso um lote para canalizar a saída de outro processo através dele.

A idéia seria configurar combinações especiais de teclas que sejam ativas apenas no uso do terminal atribuído para escrever comandos diferentes? Então, pressionar Ctrl+ Lna janela do terminal pode escrever

| less

ou Ctrl+ Gpode significar

| grep

Nota: eu apenas quero dizer adicionar as letras à linha de comando para não executar o finalmente. De maneira semelhante, o preenchimento de tabulação é mais específico.

NES
fonte

Respostas:

10

Sim, você pode usar o comando bind

bind '"\ey"':"\"less \C-m\""

Que mapeia Alt-e para o comando less e o executa (com o \ Cm aka Ctrl-m)

Provavelmente para o | você precisa escapar disso.

bind '"\ey"':"\"\|less \C-m\""

Se você quiser apenas anexá-lo à linha de comando, remova o * \ Cm \ ""

Tenha cuidado, pois já existem algumas ligações definidas:

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L                Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Let’s you search through previously used commands
Ctrl + C    Kill whatever you are running
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T     Swap the last two words before the cursor
Alt + F     Move cursor forward one word on the current line
Alt + B     Move cursor backward one word on the current line
Tab     Auto-complete files and folder names

A tecla Control, como você pode ver acima, é feita com Cm, para que você possa iniciar o comando less com Ctrl-g, da seguinte maneira:

bind '"\ Cg"': "\" \ | menos * \ Cm \ ""

Para obter os códigos de chave para o Alt (apenas para o ALT), você pode usar o comando read do shell:

@~$ read
^[y

^ [y é igual a \ ey

Para mais informações, esta pergunta foi respondida também no stackoverflow:

/programming/4119991/bash-call-script-with-customized-keyboard-shortcuts

tmow
fonte
obrigado, como posso excluir uma ligação ou mostrar todas as ligações?
NES
algo está errado com seus 2 primeiros exemplos. sempre imprime também o curinga depois de menos depois que eu atribuí a sua sintaxe de ligação.
NES
bind -p e bind -P mostrarão todas as ligações. Eu cometi um erro com a estrela ... Estou atualizando a resposta
tmow
Muito obrigado. talvez você tenha uma idéia de como alcançar o mesmo objetivo em peixes? Eu entendi até agora para trabalhar, mas o problema é que o peixe parece executar automaticamente o comando em vez de apenas adicionar a seqüência de caracteres à linha de comando por padrão. aqui está a página de manual linux.die.net/man/1/bind Infelizmente, o exemplo não é muito útil para o meu caso.
NES
Isso já é um built-in função Acho fishshell.com/user_doc/index.html#editor processando o Alt-p atalho
tmow