47

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,509
Jonah Braun
  • 1,747

6 Answers6

51

You could use

:set mouse=nicr

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

26

For Iterm2

Preference -> Advanced -> Mouse Tab, switch:

Scroll wheel sends arrow keys when in alternate screen mode

to:

Yes
Tomato8
  • 261
  • 3
  • 2
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.

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,792
LiL
  • 21
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
  • 235,242
ibash
  • 137