Versão mais concisa
Com "\t": menu-complete
em ~/.inputrc
criar esses dois arquivos,
$ touch one.two.txt
$ touch one.four.txt
comece a escrever o seguinte,
$ ls one
acerte Tabe você vai conseguir
$ ls one.four.txt
Agora mova o cursor para um pouco antes four
de , delete four
, write only t
e então pressione Tabnovamente. Você terá
$ ls one.two.txt.txt
Existe uma maneira de evitar a duplicação .txt
neste fluxo de trabalho?
Pergunta original
Eu uso menu-complete
a função bash para percorrer a conclusão quando pressiono Tabe estou feliz com isso. Mas o seguinte aconteceu muitas vezes comigo.
Suponha que eu esteja procurando o arquivo longparthardtoremember.with.QQQQQQQ.extension
em um diretório que contém os arquivos
longparthardtoremember.with.AAAAAAA.nice.long.extension
longparthardtoremember.with.BBBBBBB.very.nice.long.extension
...
Se eu Tabcompletar , $ long
o primeiro nome de arquivo será inserido. Nesse ponto, gostaria de passar para o meio do nome do arquivo, excluir a AAAAAAA
parte, digitar B
e Tabconcluir novamente. Se eu fizer isso, toda a parte posterior BBBBBBB
também será inserida, levando a uma duplicação dela, o que obviamente não quero.
Com vi
o modo de edição, sou bastante rápido em lidar com isso (eu mudo rapidamente para a parte repetida e a excluo), mas ainda é irritante.
Por puro acaso, encontrei a skip-completed-text
opção bash na página man do bash. Não é isso que eu preciso? Eu configurei on
, mas não consigo ver nenhuma diferença no comportamento da conclusão no meio do trabalho Tab. Eu entendi mal a página de manual?
skip-completed-text
funciona desta forma (com o seu exemplotouch one.four.txt
):Se você pressionar tab com
skip-completed-text on
ele será concluído paraSe você pressionar tab com
skip-completed-text off
ele será concluído paraPortanto, essa configuração não ajuda quando você edita o meio da conclusão.
Ao invés de
Faz
mova o cursor para um pouco antes
four
, escreva apenast
e pressione Tabseguido por Ctrlk(o padrão para excluir do cursor até o final)