diff --git a/README.md b/README.md
index 22fae94..9e776c2 100644
--- a/README.md
+++ b/README.md
@@ -211,8 +211,8 @@ The list below is from the **dev branch**. Press <kbd>?</kbd> in `nnn` to see th
  FILES
            ^O  Open with...      n  Create new/link
             D  File details  ^R F2  Rename/duplicate
-   Space ^J/a  Select entry/all  r  Batch rename
-         m ^K  Sel range, clear  M  Show sel buf
+   Space ^J/a  Sel toggle/all    r  Batch rename
+         m ^K  Sel range, clear  M  List selection
             P  Copy selection    K  Edit, flush sel
             V  Move selection    w  Copy/move sel as
             X  Del selection    ^X  Del entry
diff --git a/src/nnn.c b/src/nnn.c
index 255656c..ce63afd 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -581,6 +581,7 @@ static int dentfind(const char *fname, int n);
 static void move_cursor(int target, int ignore_scrolloff);
 static inline bool getutil(char *util);
 static size_t mkpath(const char *dir, const char *name, char *out);
+static void updateselbuf(const char *path, char *newpath);
 
 /* Functions */
 
@@ -929,17 +930,22 @@ static size_t seltofile(int fd, uint *pcount)
 }
 
 /* List selection from selection buffer */
-static bool listselbuf(void)
+static bool listselbuf(const char *path, char *newpath)
 {
 	int fd;
 	size_t pos;
+	uint oldpos = selbufpos;
+
+	updateselbuf(path, newpath);
 
 	if (!selbufpos)
 		return FALSE;
 
 	fd = create_tmp_file();
-	if (fd == -1)
+	if (fd == -1) {
+		selbufpos = oldpos;
 		return FALSE;
+	}
 
 	pos = seltofile(fd, NULL);
 
@@ -948,6 +954,7 @@ static bool listselbuf(void)
 		spawn(pager, g_tmpfpath, NULL, NULL, F_CLI);
 	unlink(g_tmpfpath);
 
+	selbufpos = oldpos;
 	return TRUE;
 }
 
@@ -3435,8 +3442,8 @@ static void show_help(const char *path)
 		"1FILES\n"
 		 "b^O  Open with...      n  Create new/link\n"
 		  "cD  File details  ^R F2  Rename/duplicate\n"
-	 "3Space ^J/a  Select entry/all  r  Batch rename\n"
-	       "9m ^K  Sel range, clear  M  Show sel buf\n"
+	 "3Space ^J/a  Sel toggle/all    r  Batch rename\n"
+	       "9m ^K  Sel range, clear  M  List selection\n"
 		  "cP  Copy selection    K  Edit, flush sel\n"
 		  "cV  Move selection    w  Copy/move sel as\n"
 		  "cX  Del selection    ^X  Del entry\n"
@@ -4841,7 +4848,7 @@ nochange:
 				}
 			continue;
 		case SEL_SELLIST:
-			if (listselbuf() || listselfile()) {
+			if (listselbuf(path, newpath) || listselfile()) {
 				if (cfg.filtermode)
 					presel = FILTER;
 				break;