Search code examples
vimmouse-cursor

How can I enable mouseshape in vim of homebrew?


I am using a mouse with terminal-based vim (not gvim) with set mouse=a.

I want to change the mouse cursor shape, but mouseshape is not enabled in homebrew vim. How can I install mouseshape-enabled vim using homebrew?

Here is part of my vim --version output:

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jul  8 2016 21:15:30)
MacOS X (unix) version
Included patches: 1-2000
Compiled by Homebrew
Huge version without GUI.  Features included (+) or not (-):
+acl             +file_in_path    -mouse_sysmouse  -tag_any_white
+arabic          +find_in_path    +mouse_urxvt     -tcl
+autocmd         +float           +mouse_xterm     +termguicolors
-balloon_eval    +folding         +multi_byte      +terminfo
-browse          -footer          +multi_lang      +termresponse
++builtin_terms  +fork()          -mzscheme        +textobjects
+byte_offset     -gettext         +netbeans_intg   +timers
+channel         -hangul_input    +num64           +title
+cindent         +iconv           +packages        -toolbar
-clientserver    +insert_expand   +path_extra      +user_commands
+clipboard       +job             +perl            +vertsplit
+cmdline_compl   +jumplist        +persistent_undo +virtualedit
+cmdline_hist    +keymap          +postscript      +visual
+cmdline_info    +langmap         +printer         +visualextra
+comments        +libcall         +profile         +viminfo
+conceal         +linebreak       -python          +vreplace
+cryptv          +lispindent      +python3         +wildignore
+cscope          +listcmds        +quickfix        +wildmenu
+cursorbind      +localmap        +reltime         +windows
+cursorshape     +lua             +rightleft       +writebackup
+dialog_con      +menu            +ruby            -X11
+diff            +mksession       +scrollbind      -xfontset
+digraphs        +modify_fname    +signs           -xim
-dnd             +mouse           +smartindent     -xsmp
-ebcdic          -mouseshape      +startuptime     -xterm_clipboard
+emacs_tags      +mouse_dec       +statusline      -xterm_save
+eval            -mouse_gpm       -sun_workshop    -xpm
+ex_extra        -mouse_jsbterm   +syntax          
+extra_search    +mouse_netterm   +tag_binary      
+farsi           +mouse_sgr       +tag_old_static  

Solution

  • This isn't possible. The mouseshape feature is only available in Windows or X11 builds, as implied in the documentation, where it discusses which shapes are available in which modes. Only Win32 and X11 appear in that list.

    The mouse cursor does change shape in terminal Vim when mouse mode is active, but you can't control it per-mode in the way you're asking about.

    From :help 'mouseshape:

    The shape is one of the following:
    avail   name            looks like
    w x     arrow           Normal mouse pointer
    w x     blank           no pointer at all (use with care!)
    w x     beam            I-beam
    w x     updown          up-down sizing arrows
    w x     leftright       left-right sizing arrows
    w x     busy            The system's usual busy pointer
    w x     no              The system's usual 'no input' pointer
      x     udsizing        indicates up-down resizing
      x     lrsizing        indicates left-right resizing
      x     crosshair       like a big thin +
      x     hand1           black hand
      x     hand2           white hand
      x     pencil          what you write with
      x     question        big ?
      x     rightup-arrow   arrow pointing right-up
    w x     up-arrow        arrow pointing up
      x     <number>        any X11 pointer number (see X11/cursorfont.h)
    
    The "avail" column contains a 'w' if the shape is available for Win32,
    x for X11.
    
    Any modes not specified or shapes not available use the normal mouse
    pointer.