diff --git a/src/ex_cmdidxs.h b/src/ex_cmdidxs.h
index 6b96c6c..0103a17 100644
--- a/src/ex_cmdidxs.h
+++ b/src/ex_cmdidxs.h
@@ -29,8 +29,8 @@
   /* v */ 503,
   /* w */ 521,
   /* x */ 535,
-  /* y */ 544,
-  /* z */ 545
+  /* y */ 545,
+  /* z */ 546
 };
 
 /*
@@ -64,9 +64,9 @@
   /* u */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
   /* v */ {  0,  0,  0,  0,  1,  0,  0,  0,  4,  0,  0,  0,  9, 12,  0,  0,  0,  0, 15,  0, 16,  0,  0,  0,  0,  0 },
   /* w */ {  2,  0,  0,  0,  0,  0,  0,  3,  4,  0,  0,  0,  0,  8,  0,  9, 10,  0,  0,  0, 12, 13,  0,  0,  0,  0 },
-  /* x */ {  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  5,  0,  0,  0,  0,  0,  0,  7,  0,  0,  0,  0,  0 },
+  /* x */ {  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  5,  0,  0,  0,  7,  0,  0,  8,  0,  0,  0,  0,  0 },
   /* y */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
   /* z */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }
 };
 
-static const int command_count = 558;
+static const int command_count = 559;
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 37577f7..5ec69be 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -1739,6 +1739,9 @@
 EX(CMD_xnoremenu,	"xnoremenu",	ex_menu,
 			RANGE|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
 			ADDR_OTHER),
+EX(CMD_xrestore,	"xrestore",	ex_xrestore,
+			EXTRA|TRLBAR|CMDWIN,
+			ADDR_NONE),
 EX(CMD_xunmap,		"xunmap",	ex_unmap,
 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN,
 			ADDR_NONE),
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index a2b302d..16f5059 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -394,6 +394,9 @@
 #ifndef FEAT_TERMINAL
 # define ex_terminal		ex_ni
 #endif
+#if !defined(FEAT_X11) || !defined(FEAT_XCLIPBOARD)
+# define ex_xrestore		ex_ni
+#endif
 
 /*
  * Declare cmdnames[].
diff --git a/src/globals.h b/src/globals.h
index 1a055d6..09ac6b5 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1279,9 +1279,14 @@
 #endif
 
 #ifdef FEAT_XCLIPBOARD
-EXTERN char	*xterm_display INIT(= NULL);	/* xterm display name; points
-						   into argv[] */
-EXTERN Display	*xterm_dpy INIT(= NULL);	/* xterm display pointer */
+// xterm display name
+EXTERN char	*xterm_display INIT(= NULL);
+
+// whether xterm_display was allocated, when FALSE it points into argv[]
+EXTERN int	xterm_display_allocated INIT(= FALSE);
+
+// xterm display pointer
+EXTERN Display	*xterm_dpy INIT(= NULL);
 #endif
 #if defined(FEAT_XCLIPBOARD) || defined(FEAT_GUI_X11)
 EXTERN XtAppContext app_context INIT(= (XtAppContext)NULL);
diff --git a/src/os_unix.c b/src/os_unix.c
index b5627b1..a6d1a12 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -1659,6 +1659,25 @@
 	get_x11_title(FALSE);
     }
 }
+
+    void
+ex_xrestore(exarg_T *eap)
+{
+    if (eap->arg != NULL && STRLEN(eap->arg) > 0)
+    {
+        if (xterm_display_allocated)
+            vim_free(xterm_display);
+        xterm_display = (char *)vim_strsave(eap->arg);
+        xterm_display_allocated = TRUE;
+    }
+    smsg(_("restoring display %s"), xterm_display == NULL
+			      ? (char *)mch_getenv("DISPLAY") : xterm_display);
+
+    clear_xterm_clip();
+    x11_window = 0;
+    xterm_dpy_retry_count = 5;  // Try reconnecting five times
+    may_restore_clipboard();
+}
 #endif
 
 /*
@@ -1761,6 +1780,10 @@
 	x11_window = (Window)atol(winid);
 
 #ifdef FEAT_XCLIPBOARD
+    if (xterm_dpy == x11_display)
+	// x11_display may have been set to xterm_dpy elsewhere
+	x11_display_from = XD_XTERM;
+
     if (xterm_dpy != NULL && x11_window != 0)
     {
 	/* We may have checked it already, but Gnome terminal can move us to
@@ -7661,7 +7684,7 @@
     return TRUE;
 }
 
-# if defined(FEAT_GUI) || defined(PROTO)
+# if defined(FEAT_GUI) || defined(FEAT_XCLIPBOARD) || defined(PROTO)
 /*
  * Destroy the display, window and app_context.  Required for GTK.
  */
diff --git a/src/proto/os_unix.pro b/src/proto/os_unix.pro
index 0117b1e..0e7c609 100644
--- a/src/proto/os_unix.pro
+++ b/src/proto/os_unix.pro
@@ -13,6 +13,7 @@
 int vim_handle_signal(int sig);
 int mch_check_win(int argc, char **argv);
 int mch_input_isatty(void);
+void ex_xrestore(exarg_T *eap);
 int mch_can_restore_title(void);
 int mch_can_restore_icon(void);
 void mch_settitle(char_u *title, char_u *icon);
diff --git a/src/testdir/test_paste.vim b/src/testdir/test_paste.vim
index f3664f6..29206b94 100644
--- a/src/testdir/test_paste.vim
+++ b/src/testdir/test_paste.vim
@@ -110,3 +110,29 @@
 
   bwipe!
 endfunc
+
+func CheckCopyPaste()
+  call setline(1, ['copy this', ''])
+  normal 1G0"*y$
+  normal j"*p
+  call assert_equal('copy this', getline(2))
+endfunc
+
+func Test_xrestore()
+  if !has('xterm_clipboard')
+    return
+  endif
+call ch_logfile('logfile', 'w')
+  let display = $DISPLAY
+  new
+  call CheckCopyPaste()
+
+  xrestore
+  call CheckCopyPaste()
+
+  exe "xrestore " .. display
+  call CheckCopyPaste()
+
+call ch_logfile('', '')
+  bwipe!
+endfunc
diff --git a/src/version.c b/src/version.c
index 3b9ef32..ea04ff9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1307,
+/**/
     1306,
 /**/
     1305,
