# HG changeset patch # User Bram Moolenaar # Date 1572199204 -3600 # Node ID d7619a9874cd5b488eacedf0f49ce4c974b9f5d7 # Parent 44a72ca3b6931bdab3c301b05a5654586cd7d0f9 patch 8.1.2226: cannot use system copy/paste in non-xterm terminals Commit: https://github.com/vim/vim/commit/5b418992cf254137fde2a14d7066fbea5afddb28 Author: Bram Moolenaar Date: Sun Oct 27 18:50:25 2019 +0100 patch 8.1.2226: cannot use system copy/paste in non-xterm terminals Problem: Cannot use system copy/paste in non-xterm terminals. Solution: Instead of setting 'mouse' to "a" set it to "nvi" in defaults.vim. diff --git a/runtime/defaults.vim b/runtime/defaults.vim --- a/runtime/defaults.vim +++ b/runtime/defaults.vim @@ -75,8 +75,14 @@ inoremap u " In many terminal emulators the mouse works just fine. By enabling it you " can position the cursor, Visually select and scroll with the mouse. +" Only xterm can grab the mouse events when using the shift key, for other +" terminals use ":", select text and press Esc. if has('mouse') - set mouse=a + if &term =~ 'xterm' + set mouse=a + else + set mouse=nvi + endif endif " Switch syntax highlighting on when the terminal has colors or when using the diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -5191,12 +5191,11 @@ A jump table for the options with a shor *'mouse'* *E538* 'mouse' string (default "", "a" for GUI, MS-DOS and Win32, - set to "a" in |defaults.vim|) - global - Enable the use of the mouse. Only works for certain terminals - (xterm, MS-DOS, Win32 |win32-mouse|, QNX pterm, *BSD console with - sysmouse and Linux console with gpm). For using the mouse in the - GUI, see |gui-mouse|. + set to "a" or "nvi" in |defaults.vim|) + global + Enable the use of the mouse. Works for most terminals (xterm, MS-DOS, + Win32 |win32-mouse|, QNX pterm, *BSD console with sysmouse and Linux + console with gpm). For using the mouse in the GUI, see |gui-mouse|. The mouse can be enabled for different modes: n Normal mode and Terminal modes v Visual mode @@ -5207,7 +5206,15 @@ A jump table for the options with a shor r for |hit-enter| and |more-prompt| prompt Normally you would enable the mouse in all five modes with: > :set mouse=a -< When the mouse is not enabled, the GUI will still use the mouse for +< If your terminal can't overrule the mouse events going to the + application, use: > + :set mouse=nvi +< The you can press ":", select text for the system, and press Esc to go + back to Vim using the mouse events. + In |defaults.vim| "nvi" is used if the 'term' option is not matching + "xterm". + + When the mouse is not enabled, the GUI will still use the mouse for modeless selection. This doesn't move the text cursor. See |mouse-using|. Also see |'clipboard'|. diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt --- a/runtime/doc/term.txt +++ b/runtime/doc/term.txt @@ -746,12 +746,21 @@ jump to tags). Whether the selection that is started with the mouse is in Visual mode or Select mode depends on whether "mouse" is included in the 'selectmode' option. - + *terminal-mouse* In an xterm, with the currently active mode included in the 'mouse' option, normal mouse clicks are used by Vim, mouse clicks with the shift or ctrl key pressed go to the xterm. With the currently active mode not included in 'mouse' all mouse clicks go to the xterm. +For terminals where it is not possible to have the mouse events be used by the +terminal itself by using a modifier, a workaround is to not use mouse events +for Vim in command-line mode: > + :set mouse=nvi +Then to select text with the terminal, use ":" to go to command-line mode, +select and copy the text to the system, then press Esc. + +Another way is to temporarily use ":sh" to run a shell, copy the text, then +exit the shell. 'mouse' can remain set to "a" then. *xterm-clipboard* In the Athena and Motif GUI versions, when running in a terminal and there is access to the X-server (DISPLAY is set), the copy and paste will behave like diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2226, +/**/ 2225, /**/ 2224,