Como você não mencionou o shell específico, uma maneira é instalar zsh
.
sudo apt-get install zsh
# now change the default shell
chsh -s /usr/bin/zsh
sudo chsh -s /usr/bin/zsh
Agora, como você obteve o zsh como o shell padrão em vez do bash, para obter uma conclusão difusa, adicione isso a ~/.zshrc
arquivo:
zstyle ':completion:*' matcher-list '' \
'm:{a-z\-}={A-Z\_}' \
'r:[^[:alpha:]]||[[:alpha:]]=** r:|=* m:{a-z\-}={A-Z\_}' \
'r:|?=** m:{a-z\-}={A-Z\_}'
Por exemplo, é assim que meu ~/.zshrc
se parece:
# bash style (read as the adequate) for navigating words
autoload -U select-word-style
select-word-style bash
# some plugins
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=7'
zstyle ':completion:*' matcher-list '' \
'm:{a-z\-}={A-Z\_}' \
'r:[^[:alpha:]]||[[:alpha:]]=** r:|=* m:{a-z\-}={A-Z\_}' \
'r:|?=** m:{a-z\-}={A-Z\_}'
bindkey \^U backward-kill-line
#useful aliases
alias grep1="grep --exclude-dir=\".*\""
alias gdb="gdb -q"
NB : a utilidade do zsh é que ele é muito extensível e, de várias maneiras, compatível com o bash. No oposto, por ex. fish (outra alternativa ao bash, que é bem parecido com um zsh configurado) na minha experiência causa muitos problemas de incompatibilidade.
UPD : por comentários do OP: se você quiser aumentar a necessidade de as letras ficarem próximas umas das outras (ou seja, em vez de conclusão difusa, é apenas uma conclusão subsequente) , então ao invés do regexp eu mencionei você pode colocar em ~/.zshrc
este código :
zstyle ':completion:*' completer _complete
zstyle ':completion:*' matcher-list '' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' '+l:|=* r:|=*'
autoload -Uz compinit
compinit