Se você observar a saída do seguinte comando:
bind -l
ou melhor:
bind -l | grep arg
você pode ver que não existe nenhuma função readline para todos os argumentos como, por exemplo, yank-last-arg
para o último argumento - que pode inserir o último argumento para o comando anterior (a última palavra da entrada do histórico anterior). Então, se tal função não existe, provavelmente não existe um atalho para realizar o que você deseja.
Vamos tentar criar uma abordagem ao seu pedido ...
Primeiro, procure por exemplo na saída do seguinte comando:
bind -p | grep yank-nth-arg
A saída é:
"\e\C-y": yank-nth-arg
e pode ser traduzido como segue: yank-nth-arg
(que insere o primeiro argumento ao comando anterior - com um argumento n, insere o enésimo argumento do comando anterior) está vinculado a Alt + Ctrl + y .
Da mesma forma, pode ser interpretada qualquer linha da saída do comando bind -p
.
Agora, preste atenção nos seguintes cenários:
-
Se você definir a seguinte ligação:
bind '"\ea": "\e2\e."'
Alt + Um será mapeado para Alt + 2 Alt + . , que é mapeado para inserir o segundo argumento do comando anterior. Então, depois de pressionar Alt + A , o argumento segundo do comando anterior é inserido no comando atual.
-
Se você definir:
bind '"\ea": "\e1\e. \e2\e."'
Depois de pressionar Alt + A , os argumentos primeiro dois do comando anterior são inseridos no comando atual. Se o número dos argumentos do comando anterior for no máximo 2, é claro que todos do comando anterior é inserido no comando atual.
-
Se você definir:
bind '"\ea": "\e1\e. \e2\e. \e3\e."'
Depois de pressionar Alt + A , os argumentos primeiros três do comando anterior são inseridos no comando atual. Se o número dos argumentos do comando anterior for no máximo 3 (como no seu caso), é claro que todo do comando anterior é inserido no comando atual.
-
E assim por diante.
Para os primeiros 10 argumentos, você pode usar:
bind '"\ea": "\e1\e. \e2\e. \e3\e. \e4\e. \e5\e. \e6\e. \e7\e. \e8\e. \e9\e. \e1\e0\e."'
E eu acho que isso é longo o suficiente, tanto quanto eu não uso muitas vezes comandos com tantos argumentos.
Para torná-lo persistente, adicione a seguinte linha de linha ao seu arquivo ~/.inputrc
:
"\ea": "\e1\e. \e2\e. \e3\e. \e4\e. \e5\e. \e6\e. \e7\e. \e8\e. \e9\e. \e1\e0\e."
Neste exemplo eu escolhi Alt + A para inserir todos os argumentos (se o número de argumentos não for maior que 10) do comando anterior, mas você pode escolher qualquer outra combinação, substituindo no comando anterior a string \ea
.
Recursos:
- Comandos para manipular a história
-
help -m bind
- BASH - Como usar argumentos do comando anterior?