-*index.txt* For Vim version 7.0aa. Last change: 2005 Dec 12
+*index.txt* For Vim version 7.0aa. Last change: 2005 Dec 14
VIM REFERENCE MANUAL by Bram Moolenaar
buffer list
|:scriptnames| :scrip[tnames] list names of all sourced Vim scripts
|:scriptencoding| :scripte[ncoding] encoding used in sourced Vim script
-|:scscope| :scs[cope] split window and execute cscope command
+|:scscope| :scs[cope] split window and execute cscope command
|:set| :se[t] show or set options
|:setfiletype| :setf[iletype] set 'filetype', unless it was set already
|:setglobal| :setg[lobal] show global values of options
|:stop| :st[op] suspend the editor or escape to a shell
|:stag| :sta[g] split window and jump to a tag
|:startinsert| :star[tinsert] start Insert mode
+|:startgreplace| :startg[replace] start Virtual Replace mode
|:startreplace| :startr[eplace] start Replace mode
|:stopinsert|| :stopi[nsert] stop Insert mode
|:stjump| :stj[ump] do ":tjump" and split window
}
/*
- * ":startinsert" and ":startreplace"
+ * ":startinsert", ":startreplace" and ":startgreplace"
*/
static void
ex_startinsert(eap)
if (State & INSERT)
return;
- if (eap->forceit)
- {
- if (eap->cmdidx == CMD_startinsert)
- restart_edit = 'a';
- else
- restart_edit = 'R';
- }
+ if (eap->cmdidx == CMD_startinsert)
+ restart_edit = 'a';
+ else if (eap->cmdidx == CMD_startreplace)
+ restart_edit = 'R';
else
+ restart_edit = 'V';
+
+ if (!eap->forceit)
{
if (eap->cmdidx == CMD_startinsert)
restart_edit = 'i';
- else
- restart_edit = 'R';
curwin->w_curswant = 0; /* avoid MAXCOL */
}
}
got_click = FALSE;
}
+#ifndef FEAT_VISUAL
/*
- * ALT is currently ignored
+ * ALT is only used for starging/extending Visual mode.
*/
if ((mod_mask & MOD_MASK_ALT))
return FALSE;
+#endif
/*
* CTRL right mouse button does CTRL-T
&& (!is_click
|| (mod_mask & MOD_MASK_MULTI_CLICK)
|| which_button == MOUSE_MIDDLE)
- && !((mod_mask & MOD_MASK_SHIFT)
+ && !((mod_mask & (MOD_MASK_SHIFT|MOD_MASK_ALT))
&& mouse_model_popup()
&& which_button == MOUSE_LEFT)
+ && !((mod_mask & MOD_MASK_ALT)
+ && !mouse_model_popup()
+ && which_button == MOUSE_RIGHT)
)
return FALSE;
* When 'mousemodel' is "popup" or "popup_setpos", translate mouse events:
* right button up -> pop-up menu
* shift-left button -> right button
+ * alt-left button -> alt-right button
*/
if (mouse_model_popup())
{
return FALSE;
#endif
}
- if (which_button == MOUSE_LEFT && (mod_mask & MOD_MASK_SHIFT))
+ if (which_button == MOUSE_LEFT
+ && (mod_mask & (MOD_MASK_SHIFT|MOD_MASK_ALT)))
{
which_button = MOUSE_RIGHT;
mod_mask &= ~MOD_MASK_SHIFT;
if (start_visual.lnum) /* right click in visual mode */
{
+ /* When ALT is pressed make Visual mode blockwise. */
+ if (mod_mask & MOD_MASK_ALT)
+ VIsual_mode = Ctrl_V;
+
/*
* In Visual-block mode, divide the area in four, pick up the corner
* that is in the quarter that the cursor is in.
setmouse();
}
if ((mod_mask & MOD_MASK_MULTI_CLICK) == MOD_MASK_2CLICK)
- VIsual_mode = 'v';
+ {
+ /* Double click with ALT pressed makes it blockwise. */
+ if (mod_mask & MOD_MASK_ALT)
+ VIsual_mode = Ctrl_V;
+ else
+ VIsual_mode = 'v';
+ }
else if ((mod_mask & MOD_MASK_MULTI_CLICK) == MOD_MASK_3CLICK)
VIsual_mode = 'V';
else if ((mod_mask & MOD_MASK_MULTI_CLICK) == MOD_MASK_4CLICK)
redraw_curbuf_later(INVERTED); /* update the inversion */
}
else if (VIsual_active && !old_active)
- VIsual_mode = 'v';
+ {
+ if (mod_mask & MOD_MASK_ALT)
+ VIsual_mode = Ctrl_V;
+ else
+ VIsual_mode = 'v';
+ }
/* If Visual mode changed show it later. */
if (p_smd && (VIsual_active != old_active || VIsual_mode != old_mode))