Además de la respuesta @ChrisDown, aquí hay otro enfoque: omitir directorios
Con este enfoque, puedes:
vi ./*
e iniciará vi en todos los archivos en el directorio actual, incluso si contiene subdirs, omitiendo esos subdirs
vi() {
for arg do
[ -d "$arg" ] || set -- "$@" "$arg"
shift
done
[ "$#" -gt 0 ] && command vi "$@"
}
Este solo hace vi, en cualquier argumento que no sean directorios ... Por lo tanto, no le enseñará a usar "vi" para "cd";)
Y no llamará a vi si acaba de hacerlo: vi somedirectory (es decir, vi mal escrito en lugar de cd). Pero no se creará un CD allí automáticamente, por lo que aún recuerda que debe escribir cd ^^
Utilicé una forma "compatible" para cambiar las listas de argumentos, para que sea portátil en muchas plataformas.