diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn
index 19daed5f080bd98a0534c103f8dcbc7b8daca451..2bf8a77ebd8c394d58a402e78b916af39ed4d197 100644
--- a/doc/vcsh.1.ronn
+++ b/doc/vcsh.1.ronn
@@ -19,7 +19,7 @@ vcsh(1) - Version Control System for $HOME - multiple Git repositories in $HOME
 
 `vcsh` list-tracked [<repo>]
 
-`vcsh` list-untracked [<-r>] [<repo>]
+`vcsh` list-untracked [<-a>] [<-r>] [<repo>]
 
 `vcsh` pull
 
@@ -121,12 +121,14 @@ an interactive user.
 * list-untracked:
   List all files NOT tracked by vcsh.
 
+  `-a`: Show all files.
+  By default, the `git ls-files --exclude-standard` is called.
+
+  `-r`: Recursive mode.
   By default, the file list is shallow and stops at directory levels where
-  possible. If you prefer to get a list of all files, append `-r` for
-  recursive mode.
+  possible.
 
-  If you want to list files not tracked by a specific repository, simply
-  append the repository's name last.
+  `$repo`: List files not tracked by this specific repository.
 
 * pull:
   Pull from all vcsh remotes.
diff --git a/vcsh b/vcsh
index 8bfafab11689c2bd9e561f4d682e0eb5555c09f5..4da3547da71727fd0085e2f2004c437c44003a34 100755
--- a/vcsh
+++ b/vcsh
@@ -112,7 +112,8 @@ help() {
    list-tracked \\
         [<repo>]        List all files tracked all or one repositories
    list-untracked \\
-        [<-r>] [<repo>] List all files not tracked by all or one repositories
+        [<-a>] [<-r>]
+        [<repo>]        List all files not tracked by all or one repositories
    pull                 Pull from all vcsh remotes
    push                 Push to vcsh remotes
    rename <repo> \\
@@ -275,10 +276,13 @@ list_untracked() {
 	temp_file_untracked_copy=$(mktemp "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX") || fatal 'Could not create temp file'
 
 	# Hack in support for `vcsh list-untracked -r`...
+	exclude_standard_opt='--exclude-standard'
 	directory_opt="--directory"
 	shift 1
-	while getopts "r" flag; do
-		if [ x"$1" = x'-r' ]; then
+	while getopts "ar" flag; do
+		if [ x"$1" = x'-a' ]; then
+			unset exclude_standard_opt
+		elif [ x"$1" = x'-r' ]; then
 			unset directory_opt
 		fi
 		shift 1
@@ -301,7 +305,7 @@ list_untracked() {
 
 list_untracked_helper() {
 	export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
-	git ls-files --others "$directory_opt" | (
+	git ls-files --others $exclude_standard_opt "$directory_opt" | (
 		while read line; do
 			echo "$line"
 			directory_component=${line%%/*}