:b[uffer]
é usado apenas para acessar buffers abertos. O "escopo" de sua conclusão não está restrito a "determinados diretórios", mas aos buffers em sua lista de buffers / lista de argumentos. Você não pode usar esse comando para abrir um arquivo que ainda não foi aberto.
:e[dit]
é usado para editar um arquivo e sua conclusão é "escopo" para os arquivos e diretórios diretamente sob o diretório de trabalho do Vim. Você pode limitar a lista de conclusão com a opção wildignore
( :help 'wildignore'
) ou usando o incrível curinga **
( :help starstar
).
Quando você usa :e
para editar um arquivo que já está na lista de buffers / lista de argumentos, o Vim não cria um novo buffer, mas muda para o buffer existente, agindo efetivamente como :b
.
Então… Parece que você está um pouco confuso sobre o comportamento de :b
e que você está simplesmente procurando por :e file<Tab>
.