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.

6 Answers 6

50

You could use

:set mouse=nicr

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

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! Dec 15, 2011 at 21:30
  • 3
    That looks like "set the mouse to be nicer" to me.
    – Kazark
    Aug 30, 2012 at 17:07
  • 8
    @JonahBraun, iTerm will mouse select with :set mouse=nicr if you hold down option while making the selection. See stackoverflow.com/questions/4608161/… Mar 22, 2013 at 23:58
  • Where do you write :set mouse=nicr? Apr 29, 2019 at 6: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 4, 2021 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.

2
  • 3
    this is the real workable answer.
    – Zen
    Feb 15, 2015 at 7:46
  • It certainly is.
    – sshine
    Feb 4, 2021 at 18:58
20

For Iterm2

Preference -> Advanced -> Mouse Tab, switch:

Scroll wheel sends arrow keys when in alternate screen mode

to:

Yes
3
  • 1
    Enter vim > mouse wheel scrolls within vim only. Perfect, thanks!
    – cmrust
    Mar 12, 2021 at 15:36
  • In my case you must set this iTerm config AND hold down Option when scrolling with the trackpad/the mouse wheel.
    – miguno
    Apr 1, 2022 at 17:41
  • ba dum tss ! worked perfectly. Nov 2, 2022 at 15:14
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.

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.

2
  • 2
    This enables things other than scrolling.
    – Kazark
    Aug 30, 2012 at 17:10
  • 4
    Moreover, that is already mentioned in the question.
    – Kazark
    Aug 30, 2012 at 17:15

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .