Mapping for visual mode that starts from insert mode?

31 views
Skip to first unread message

WU Yue

unread,
Oct 1, 2012, 10:53:27 PM10/1/12
to vim...@googlegroups.com
Hi, I know title is unclear, but my English skill is so limited, forgive
me please, I will try my best to make my expression more clear.

I have set mouse=a, so I can drag mouse to start a selection in
normal/insert mode, I notice that when start selection in normal mode, the
status line will show: -- VISUAL --, when start selection in insert mode,
the status line will show: -- (insert) VISUAL --.

When I have selection in insert mode, I often want to replace/delete the
seleciton, but I don't have this need for the selection starting from
normal mode, so my question is, how to make <key>s and <backspace> can
replace/delete the selection *only* when starts from insert mode.

I don't know if it's clear now, thank you!

--
Regards,
WU Yue

State Key laboratory of Natural Products and Functions
Key Laboratory of Modern Chinese Medicines
Department of Traditional Chinese Medicine
China Pharmaceutical University
No.24, Tongjia Xiang Street, Nanjing 210009, China

Ben Fritz

unread,
Oct 2, 2012, 11:06:47 AM10/2/12
to vim...@googlegroups.com
On Monday, October 1, 2012 9:53:40 PM UTC-5, WU Yue wrote:
> Hi, I know title is unclear, but my English skill is so limited, forgive
>
> me please, I will try my best to make my expression more clear.
>
>
>
> I have set mouse=a, so I can drag mouse to start a selection in
>
> normal/insert mode, I notice that when start selection in normal mode, the
>
> status line will show: -- VISUAL --, when start selection in insert mode,
>
> the status line will show: -- (insert) VISUAL --.
>
>
>
> When I have selection in insert mode, I often want to replace/delete the
>
> seleciton, but I don't have this need for the selection starting from
>
> normal mode, so my question is, how to make <key>s and <backspace> can
>
> replace/delete the selection *only* when starts from insert mode.
>
>
>
> I don't know if it's clear now, thank you!
>

The visual mode started from insert mode with the mouse is actually "selection" mode, which is slightly different. Luckily you can map this "selection" mode separately from normal visual mode.

Visual mode: xmap, xnoremap
Selection mode: smap, snoremap
Both: vmap, vnoremap

:help select-mode-mapping
:help mapmode-x

Actually, using vmap and vnoremap is normally a mistake, since in selection mode pressing any key with a printable character will replace the selection with that character and drop into insert mode. I'm actually surprised that <Backspace> doesn't already delete the selection...I may map it to <Del> myself.

(I learned these things on this very list, by the way).

WU Yue

unread,
Oct 3, 2012, 10:35:21 PM10/3/12
to vim_use
Thank you for detailed explanation, Ben, and sorry for late reply.

I have tried with:

smap <Del> s
smap <Backspace> s

<del> works well, but <Backspace> doesn't work, what do I miss?

WU Yue

unread,
Oct 3, 2012, 10:47:18 PM10/3/12
to vim_use
On Tue, 02 Oct 2012 23:06:47 +0800, Ben Fritz <fritzo...@gmail.com>
After reading the help of "selectmode", I realize that -- (insert) VISUAL
-- is not the SELECT mode, I have a workaround:

autocmd InsertEnter * setlocal selectmode=mouse,key
autocmd InsertLeave * setlocal selectmode=""

sounds not good but it works :)

Ben Fritz

unread,
Oct 4, 2012, 11:09:42 AM10/4/12
to vim...@googlegroups.com
On Wednesday, October 3, 2012 9:47:23 PM UTC-5, WU Yue wrote:
>
> After reading the help of "selectmode", I realize that -- (insert) VISUAL
> -- is not the SELECT mode, I have a workaround:
>
> autocmd InsertEnter * setlocal selectmode=mouse,key
> autocmd InsertLeave * setlocal selectmode=""
>
> sounds not good but it works :)
>

Oh, I see. I have "behave mswin" buried somewhere in my config which (among other things) sets selectmode to mouse,key. So for me, selecting with the mouse in insert mode DOES use select mode. I had forgotten this was not the default.
Reply all
Reply to author
Forward
0 new messages