5

I'm asking this question while using xfce4-terminal, but I'm interested in a general solution: is there a way to stop a terminal emulator announcing mouse support in consoles? I need mouse-select and copy-paste much more frequent that I need mouse support in vim or wherever.

  • Not an answer, but you should be able to use xfce4-terminal's own copy/paste from/to vim (shift-ctrl-c, shift-ctrl-v). – goldilocks Mar 2 '15 at 13:40
  • You know you can hold Shift to get the normal selection right? – Stéphane Chazelas Mar 2 '15 at 13:41
  • @StéphaneChazelas if you add this as an Answer and not a Comment, I'll accept it :) I didn't know about the Shift! @ goldilocks: yes, I knew about shift-ctrl-c, it's not directly related to what I wanted. – Ivan Voras Mar 2 '15 at 14:05
13

You can hold the Shift key to use the normal mouse selection while xterm mouse-tracking is enabled. That works in all terminal emulators that I know (xterm, vte (like xfce-terminal) or rxvt-based ones).

In vim specifically, mouse is normally not enabled by default in terminals. So there's probably a set mouse=a somewhere in you ~/.vimrc or your OS-supplied system vimrc. You can always add:

set mouse=

to your ~/.vimrc to disable it. Or:

if !has("gui_running")
  set mouse=
endif

to avoid disabling it for the GUI versions of vim.

Mouse support is (sort of) advertised in the terminfo database with the kmous capability. Now, not all applications rely on that to decide whether to enable mouse tracking or not.

You could redefine the entry for your terminal (in a local terminfo database) to remove that capability:

infocmp -1x | grep -v kmous= | TERMINFO=~/.terminfo tic -x -
export TERMINFO=~/.terminfo

For applications using ncurses, it's enough to set the XM user-defined capability (not documented in terminfo(5) but mentioned in curs_caps(5) and curs_mouse(3)) to the empty string. That doesn't prevent the application from handling mouse events if they're sent by the terminal, but that prevents the application from sending the sequence that enters the mouse tracking mode. So you can combine both with:

infocmp -1x |
  sed '/kmous=/d;/XM=/d;$s/$/XM=,/' |
  TERMINFO=~/.terminfo tic -x -
export TERMINFO=~/.terminfo
  • Are you sure about the terminfo solution? I just tried it on URxvt (with TERM=xterm-256color) but Aptitude is still responding to mouse clicks, which is super annoying. I wished URxvt had an option to disable mouse reporting entirely. I never use it and gets in the way more often than not. – Tobia Sep 16 '18 at 12:53
  • 1
    @Tobia, see edit. – Stéphane Chazelas Sep 16 '18 at 13:26
  • 1
    The manual page gives the information (and has, since August 2001). – Thomas Dickey Sep 16 '18 at 16:00
  • Thanks @ThomasDickey, looks like I also messed up my test cases. See edit. – Stéphane Chazelas Sep 16 '18 at 18:56
  • If you use the -1 option of infocmp (single column), the sed expression could be simplified. – Thomas Dickey Sep 16 '18 at 20:46
1

Add the following two lines at the end of /etc/vim/vimrc :

set mouse=
set ttymouse=

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.