diff --git a/_vcsh b/_vcsh
index 9f5b00658d0751c60ade48d957ef3dbe67522114..424914407252e2946ca6949fb96e45c202da7447 100644
--- a/_vcsh
+++ b/_vcsh
@@ -5,6 +5,7 @@ _arguments \
 		clone\:"clone from repo"
 		help\:"display help"
 		delete\:"delete repo"
+		enter\:"Enter repo; spawn new \$SHELL"
 		exit\:"Exit repo; unset"
 		init\:"init & clone from repo"
 		list\:"list all repos"
diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn
index 015e76ed573ffc8acedd1e1ff22f02282fd95f8f..71fbc6ac5a16104f593cd89d11c7d653c0c9dd22 100644
--- a/doc/vcsh.1.ronn
+++ b/doc/vcsh.1.ronn
@@ -7,6 +7,8 @@ vcsh(1) - manage and sync config files via git
 
 `vcsh` delete <repo>
 
+`vcsh` enter <repo>
+
 `vcsh` exit
 
 `vcsh` help
@@ -50,8 +52,11 @@ A sample configuration for `vcsh` and `mr` can be found at
 * delete:
   Delete an existing repository.
 
+* enter:
+  Enter repository; spawn new <$SHELL>.
+
 * exit:
-  Exit repository; unset ENV
+  Exit repository; unset ENV.
 
 * help:
   Display help.
@@ -70,7 +75,7 @@ A sample configuration for `vcsh` and `mr` can be found at
   Seed .gitignore.d/<repo> from git ls-files.
 
 * use:
-  Use repository; set ENV
+  Use repository; set ENV.
 
 * <repo> <gitcommand>:
   Shortcut to run `vcsh` on a repo. Will prepend `git` to <command> by itself.
diff --git a/vcsh b/vcsh
index 4ba30e53e7e3635406782fdbdd6677c1636e4ac0..b5e703eddc9f0a03ecae035c9ef3a93411471aaf 100755
--- a/vcsh
+++ b/vcsh
@@ -21,6 +21,7 @@ help() {
          [<repo>]       Clone from an existing repository
    help                 Display this help text
    delete               Delete an existing repository
+   enter                Enter repository; spawn new $SHELL
    exit                 Exit repository; unset ENV
    init <repo>          Initialize a new repository
    list                 List all repositories
@@ -89,6 +90,7 @@ if [ "$1" = 'clone' ]; then
 	export VCSH_REPO_NAME
 	export GIT_DIR="$VCSH_BASE/$VCSH_REPO_NAME.git"
 elif [ "$1" = 'delete' ] ||
+     [ "$1" = 'enter' ] ||
      [ "$1" = 'init' ] ||
      [ "$1" = 'run' ] ||
      [ "$1" = 'seed-gitignore' ] ||
@@ -177,6 +179,13 @@ To continue, type \"Yes, do as I say\""
 	cd "$old_dir"
 	verbose "delete end"
 
+elif [ "$VCSH_COMMAND" = 'enter' ]; then
+	verbose "enter begin"
+	use || return $?
+	$SHELL
+	leave
+	verbose "enter end"
+
 elif [ "$VCSH_COMMAND" = 'exit' ]; then
 	verbose "exit begin"
 #	if [ -n "$ZSH_VERSION" ] && [ "$VCSH_NO_IGNORE_EOF" = '1' ]; then