Eu quero fazer o bash autocomplete em TAB
se comportar um pouco como oh-my-zsh.
Já adicionei ignorar maiúsculas e percorrer todas as possibilidades em cada guia.
Agora, atualmente, se eu tiver uma pasta no diretório chamada LinuxCommands
e eu escrever Comm+TAB
, ela não corresponderá à pasta LinuxCommands
.
Existe alguma maneira de alterar o comportamento do bash para corresponder à palavra-chave inserida com nomes de pastas e arquivos com base em " filename contains keywords
" em vez do comportamento atual " filename starts with keywords
"?
Eu não acho que isso importe, já que é tudo. Mas caso isso aconteça, estou usando o MacOS Sierra.
Atualização 1
Atualmente, tenho este código no meu ~/.bashrc
para essa modificação
_cd_completion() {
mapfile -t COMPREPLY < <(ls -d */ | grep "${COMP_WORDS[COMP_CWORD]}")
}
complete -F _cd_completion cd
# If ~./inputrc doesn't exist yet, first include the original /etc/inputrc so we don't override it
if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
# Add option to ~/.inputrc to enable case-insensitive tab completion
bind 'set completion-ignore-case On'
bind 'set show-all-if-ambiguous on'
bind 'TAB:menu-complete'
Realiza as tarefas individualmente. Mas o desempenho integral é estranho. Ele autocomplete e depois percorre o conteúdo da mesma pasta após o preenchimento automático, que fica um nível atrás no diretório.
Ex: se eu tiver Folder1, Something2 e NewFolder3 e se eu pressionar cd F+TAB
, ele mostrará > cd Folder1/
e quando eu pressionar TAB
novamente, ele mostrará > cd Folder1/Something2
e a próxima vez > cd Folder1/NewFolder3
e continua percorrendo as pastas de níveis anteriores como esta.