diff --git a/README.md b/README.md
index 064fb70..cf3797f 100644
--- a/README.md
+++ b/README.md
@@ -53,7 +53,6 @@ sxiv supports the following command-line options:
 Use the following keys to control the basic behaviour of sxiv:
 
     q            Quit sxiv
-    Escape       Quit sxiv and return an exit value of 2 (useful for scripting)
     f            Toggle fullscreen mode (requires an EWMH/NetWM compliant
                  window manager)
 
@@ -73,6 +72,7 @@ Inside image view mode, the following key mappings are available:
     a            Toggle anti-aliasing
     A            Toggle visibility of alpha-channel, i.e. transparency
     r            Reload image
+    D            Remove image from file list and go to next image
     Return       Switch to thumbnail mode
 
 Additionally, the image view offers the following mouse commands:
@@ -91,6 +91,7 @@ In thumbnail mode, the following key and mouse mappings are available:
 
     h,j,k,l      Move selection left/down/up/right (also with arrow keys)
     g/G          Move selection to first/last image
+    D            Remove selected image from file list and select next image
     Return       Open selected image
 
     Button1      Select image/open image if it is already selected
diff --git a/main.c b/main.c
index 1efdfed..8c0b575 100644
--- a/main.c
+++ b/main.c
@@ -370,7 +370,7 @@ void redraw() {
 }
 
 void on_keypress(XKeyEvent *kev) {
-	int x, y;
+	int i, x, y;
 	unsigned int w, h;
 	char key;
 	KeySym ksym;
@@ -385,10 +385,10 @@ void on_keypress(XKeyEvent *kev) {
 #ifdef EXT_COMMANDS
 	/* external commands from commands.h */
 	if (CLEANMASK(kev->state) & ControlMask) {
-		for (x = 0; x < LEN(commands); ++x) {
-			if (commands[x].ksym == ksym) {
+		for (i = 0; i < LEN(commands); ++i) {
+			if (commands[i].ksym == ksym) {
 				win_set_cursor(&win, CURSOR_WATCH);
-				if (run_command(commands[x].cmdline, commands[x].reload)) {
+				if (run_command(commands[i].cmdline, commands[i].reload)) {
 					if (mode == MODE_NORMAL) {
 						img_close(&img, 1);
 						load_image(fileidx);
@@ -571,6 +571,38 @@ void on_keypress(XKeyEvent *kev) {
 			win_toggle_fullscreen(&win);
 			/* render on next configurenotify */
 			break;
+
+		case XK_D:
+			if (mode == MODE_THUMBS) {
+				if (tns.sel >= tns.cnt)
+					break;
+				i = tns.sel;
+			} else {
+				i = fileidx;
+			}
+			if (filecnt == 1) {
+				cleanup();
+				exit(0);
+			}
+			if (i + 1 < filecnt)
+				memmove(filenames + i, filenames + i + 1, (filecnt - i - 1) *
+				        sizeof(const char*));
+			else if (fileidx)
+				fileidx--;
+			if (i + 1 < tns.cnt) {
+				memmove(tns.thumbs + i, tns.thumbs + i + 1, (tns.cnt - i - 1) *
+				        sizeof(thumb_t));
+				memset(tns.thumbs + tns.cnt - 1, 0, sizeof(thumb_t));
+			} else if (tns.sel) {
+				tns.sel--;
+			}
+			filecnt--;
+			if (mode == MODE_NORMAL)
+				load_image(fileidx);
+			if (i < tns.cnt)
+				tns.cnt--;
+			changed = tns.dirty = 1;
+			break;
 	}
 
 	if (changed)
diff --git a/sxiv.1 b/sxiv.1
index 068b388..7eb1e20 100644
--- a/sxiv.1
+++ b/sxiv.1
@@ -82,9 +82,6 @@ at startup.
 .B q
 Quit sxiv.
 .TP
-.B Escape
-Quit sxiv and return an exit value of 2.
-.TP
 .B Return
 Switch to thumbnail mode; in thumbnail mode: open selected image.
 .SS Navigate image list
@@ -156,6 +153,10 @@ Toggle visibility of alpha-channel, i.e. image transparency.
 .TP
 .B r
 Reload image.
+.TP
+.B D
+Remove image from file list and go to next image; in thumbnail mode: remove
+selected image from file list and select next image.
 .SH MOUSE COMMANDS
 .SS Navigate image list
 .TP