Seu comportamento desejado só acontece em GVim / MacVim, que vem com emulação de terminal leve. Quando executado em seu emulador de terminal, o Vim é suspenso e ls
é executado no shell pai do Vim. fg
é de fato o caminho certo para voltar ao Vim.
Note que você pode obter uma lista de diretórios muito mais útil com o plug-in Netrw do Vim. Em vez de :!ls
, faça :Ex
.
Veja :help netrw
.