Eu uso a conclusão de tabulação mais do que digitar letras. Eu costumava digitar rm ~/De<TAB>
e isso seria concluído para rm ~/Desktop/
que eu pudesse continuar no próximo nível.
Recentemente, esse comportamento mudou. A conclusão agora produz rm ~/Desktop<SPACE>
, o que significa que eu devo retroceder e digitar a barra se quiser continuar. Isso me faz chorar.
As mudanças parecem estar localizados na função _longopt()
em /etc/bash_completion
, no entanto, que é, tanto quanto eu posso seguir. Essa mudança é intencional e, em caso afirmativo, para que serve? Posso ter o comportamento antigo de volta, preferencialmente por uma opção de configuração, em vez de apenas copiar o código antigo de outro sistema?
Edit: A função para referência.
_longopt()
{
local cur prev split=false
_get_comp_words_by_ref -n = cur prev
_split_longopt && split=true
case "$prev" in
--*[Dd][Ii][Rr]*)
_filedir -d
return 0
;;
--*[Ff][Ii][Ll][Ee]*|--*[Pp][Aa][Tt][Hh]*)
_filedir
return 0
;;
esac
$split && return 0
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W "$( $1 --help 2>&1 | \
sed -ne 's/.*\(--[-A-Za-z0-9]\{1,\}\).*/\1/p' | sort -u )" \
-- "$cur" ) )
elif [[ "$1" == @(mk|rm)dir ]]; then
_filedir -d
else
_filedir
fi
}
rmdir
, não paramkdir
outouch
._longopt()
função?readline
configurações (você possui um~/inputrc
arquivo?) E do fato de o item ser um diretório real ou um link simbólico para um diretório..inputrc
esse sistema. (Aqueles eram os dias, corrigindo backspace e teclas do cursor ...) E isso acontece para todos os elementos, diretório ou arquivo, link simbólico ou não.Respostas:
Esse é um problema conhecido. Veja esta pergunta do LP e esses bugs 1 2 .
Este comentário parece ser a correção. Se você não puder esperar uma correção chegar aos canais normais, edite a
/etc/bash_completion
linha 1587, alteredefault
parafilenames
(faça um backup primeiro).fonte
/etc/bash_completion
linha 1587, alteredefault
parafilenames
.Eu tive e resolvi o mesmo problema depois de instalar o Adobe Reader no Ubuntu 12.04.
Eu comentei o
_filedir
bloco/etc/bash_completion.d/acroread.sh
e funcionou normalmente novamente.fonte
_filedir
bloco (logo em cima) o corrigiu. Você precisa sair ou executar 'exec bash' em todos os seus shells para ver o efeito, consulte esta pergunta .Eu tive o mesmo problema e o corrigi removendo o diretório /etc/bash_completion.d/ e reinstale o bash_completion. Eu acho que um arquivo antigo estava nesse diretório ... Espero que ele também resolva o seu problema.
fonte
bash-completion
, um dos arquivos restantes/etc/bash_completion.d/
deve ser o culpado. Foiacroread.sh
no meu caso - redefine_filedir
.