Eu gostaria de digitar no terminal como faço no emacs:
emacs 2019-*subject*
Quando eu acerto, Tabrecebo a primeira partida:
2019-08-03-subject.markdown
O que eu gostaria é que me mostrasse opções como:
2019-08-03-subject.markdown 2019-bla-bla-subject-predicate.markdown etc...
Procurei em todos os lugares online e não posso acreditar que isso não seja um recurso.
Hámuitos semelhanteperguntas feitas.As respostas não funcionam como eu quero (mostradas acima). Outras soluções que tentei:aqui.
PS Eu uso o Ubuntu 16. Essa é uma funcionalidade típica que encontro no emacs quando abro arquivos. Seria muito conveniente.
Responder1
O que acontece depois Tabdepende dos scripts de conclusão.Esta respostame faz acreditar que o comportamento desejado existia para pelo menos um usuário em 2013, mas em 2019 o comportamento no meu Debian 9 é como você descreveu; possivelmente os scripts/comportamento mudaram desde então.
Além disso, o Bash escolhe um script de acordo com o comando digitado (primeira palavra da linha atual). Não é imediatamente óbvio que qualquer alteração possa afetar todas as conclusões para fornecer o que você deseja (acho que a _filedir
função é um bom começo).
Felizmente você pode obter possíveis expansões sob demanda. De man 1 bash
(sob o READLINE
cabeçalho):
glob-complete-word
(M-g
)
A palavra antes do ponto é tratada como um padrão para expansão do nome do caminho, com um asterisco anexado implicitamente. Este padrão é usado para gerar uma lista de nomes de arquivos correspondentes para possíveis conclusões.
glob-expand-word
(C-x *
)
A palavra antes do ponto é tratada como um padrão para expansão do nome do caminho, e a lista de nomes de arquivos correspondentes é inserida, substituindo a palavra. Se um argumento numérico for fornecido, um asterisco será anexado antes da expansão do nome do caminho.
glob-list-expansions
(C-x g
)
A lista de expansões que teriam sido geradas porglob-expand-word
é exibida e a linha é redesenhada. Se um argumento numérico for fornecido, um asterisco será anexado antes da expansão do nome do caminho.
M-g
e descreva C-x *
as C-x g
combinações de teclas padrão. Em um formato mais amigável são:
- Meta+ g( Alt+ g) para
glob-complete-word
, - Ctrl+ x, (release Ctrl) *for
glob-expand-word
(nota: *na verdade está Shift+ 8no meu teclado), - Ctrl+ x, (liberação Ctrl) gpara
glob-list-expansions
.
O código a seguir define essas ligações (caso elas estejam faltando por algum motivo):
apenas para o shell atual:
# commands to run in Bash bind '"\eg": glob-complete-word' bind '"\C-x*": glob-expand-word' bind '"\C-xg": glob-list-expansions'
ou na sua configuração permanente (
/etc/inputrc
ou~/.inputrc
):# lines to add "\eg": glob-complete-word "\C-x*": glob-expand-word "\C-xg": glob-list-expansions
(observe que isso afetará apenas novos shells, a menos que vocêrecarregar).
Você estará interessado em glob-complete-word
ou glob-list-expansions
. Principais diferenças:
glob-complete-word
sempre anexa um asterisco, enquantoglob-list-expansions
faz isso condicionalmente (veja o manual citado).- Se houver muitas correspondências, talvez seja necessário acionar
glob-complete-word
duas vezes (ou seja, pressionar a combinação de teclas duas vezes) antes de imprimir algo; isso dependeshow-all-if-ambiguous
, compare oresposta já mencionada. - Se houver apenas uma correspondência,
glob-complete-word
será realizada uma conclusão de linha real, enquantoglob-list-expansions
ainda será exibida apenas a correspondência.
No seu caso específico, digite isto:
emacs 2019-*subject*
então Ctrl+ x, g.