42

I'd like to use the mouse in Vim only for scrolling (not to enable other Vim modes or otherwise interact with Vim). Using :set mouse=a seems to be an all or nothing operation, can this be altered? Alternatively can iTerm be made to only pass through scroll events and never click/drag events?

Long Explanation: I use Vim in iTerm a lot and don't use the mouse. However, inertia scrolling with a trackpad is really nice and a great way to peruse large files. I can :set mouse=a and use the trackpad to scroll and it's great. Now when I click however vim enters visual mode and iTerm will not copy selected text. I would like to retain iTerms ability to select and copy text.

I have thought about setting up Vim so that copying in vim will copy in Mac OS X (using pbcopy, I need to do this anyway). This will do the trick when editing local files, but most of the time I'm ssh'd somewhere and editing remote files.

Kazark
  • 3,419
  • 3
  • 26
  • 35
Jonah Braun
  • 1,637
  • 3
  • 16
  • 13

6 Answers6

50

You could use

:set mouse=nicr

It works only with mouse scroll as I've tested.

Armando Neto
  • 624
  • 6
  • 5
  • 4
    Not quite what I need as while it will scroll in vim, iTerm won't let me select text. I've `:set mouse=i` so that scroll works in insert mode and iTerm select in normal mode. Close enough, so I'm marking answered. Thanks for the idea! – Jonah Braun Dec 15 '11 at 21:30
  • 3
    That looks like "set the mouse to be nicer" to me. – Kazark Aug 30 '12 at 17:07
  • 7
    @JonahBraun, iTerm will mouse select with `:set mouse=nicr` if you hold down option while making the selection. See http://stackoverflow.com/questions/4608161/copy-text-out-of-vim-with-set-mouse-a-enabled – John Whitley Mar 22 '13 at 23:58
  • Where do you write `:set mouse=nicr`? – Naguib Ihab Apr 29 '19 at 06:14
  • You can either write that every single time you start Vim, or you could write that in the file `~/.vimrc`, but consider also `:set mouse=a`, as @MikeMorearty suggests below. This makes selection of text possible, too. (It goes into visual mode, which some may not like.) – sshine Feb 04 '21 at 18:58
25

If you set mouse=a, you can still use Option-click to make iTerm do selection. Not ideal, but it's the best option I've found.

Mike Morearty
  • 873
  • 8
  • 8
19

For Iterm2

Preference -> Advanced -> Mouse Tab, switch:

Scroll wheel sends arrow keys when in alternate screen mode

to:

Yes
Stephen Rauch
  • 3,091
  • 10
  • 23
  • 26
Tomato8
  • 191
  • 1
  • 2
2

I'm not sure about iTerm but this is achievable with Terminal.app.

  • Scrolling in Terminal.app:

http://ayaz.wordpress.com/2010/10/19/using-mouse-inside-vim-on-terminal-app/ (install SIMBL and MouseTerm)

  • Scrolling only:

    1. Go to terminal;
    2. Preference;
    3. 'Settings' Icon;
    4. 'Keyboard' Tab
    5. 'Mouse...' button;
    6. There under 'Send mouse events for:" uncheck "Left click", "Middle click", "Right click".

Done.

Diogo
  • 30,192
  • 65
  • 150
  • 222
LiL
  • 21
  • 2
0

You can also set vim env options from command line

For example:

vim -c 'set mouse=a'

So an alternate alias for vim that does it automatically might be:

alias vimmy="vim -c 'set mouse=a'"
-1

Even better than the accepted answer:

set mouse=a

This allows scrolling and then highlighting gives you a visual block.

slhck
  • 223,558
  • 70
  • 607
  • 592
ibash
  • 117