Se bem entendi, você está após o histórico completo dinâmico (veja, por exemplo, man bash
ou link ), por padrão, ligado a M-Tab
.
Às vezes, preciso reutilizar alguns argumentos longos, como caminhos.
Se eu usar a pesquisa de histórico ( CTRL + R ), talvez encontre algum comando que contenha o caminho, mas ainda precise excluir qualquer outra coisa do comando antigo e, em seguida, mova o cursor para escrever o novo comando. Pior é que não posso fazer isso mais de uma vez em uma linha.
Gostaria de saber se algum shell fornece uma pesquisa de histórico em nível de argumento?
A conclusão de tabulação que examina comandos de histórico (e argumentos) de alguma forma ajuda. Mas a conclusão deve corresponder ao prefixo que você digita, em vez de qualquer substrings.
Se bem entendi, você está após o histórico completo dinâmico (veja, por exemplo, man bash
ou link ), por padrão, ligado a M-Tab
.
Em zsh, com a complementação de novo estilo ativa (ou seja, com compinit
no seu .zshrc
), o _history_complete_word
fornece esse recurso. É acessível através de dois widgets: _history-complete-older
e _history-complete-newer
, vinculados a ESC ,
e ESC /
por padrão. Esses dois comandos percorrem todas as palavras no histórico do shell que têm a palavra atual como um prefixo.
Em bash(1)
(isso vem originalmente do shell C), você pode repetir os comandos anteriores usando !
(contanto que eles estejam no histórico). Então, por exemplo:
enter code here
frob --vigorous extremely/super/cali/fragi/listic/file/name
...
...
xemacs !frob:$ # Edit last argument to last frob command
!frob # Repeat last frobbing
fiddle !frob:1-$ # Fiddle, use arguments 1 to last of !frob
A sintaxe leva algum tempo para se acostumar, e (devido ao luxo de readline) eu uso raramente, mas é bastante útil. É (ou costumava ser) um pouco frágil, em que, por exemplo, ele funcionava de forma imprevisível em scripts (mas eu certamente faria três vezes se estivesse executando o comando correto, então ...).
Jogue com o ALT-. , do bash manpage:
- yank-last-arg (M-., M-_):
Insert the last argument to the previous command (the last word of
the previous history entry). With an argument, behave exactly like
yank-nth-arg. Successive calls to yank-last-arg move back through the
history list, inserting the last argument of each line in turn. The
history expansion facilities are used to extract the last argument,
as if the "!$" history expansion had been specified.