Bram Moolenaar | d5cdbeb | 2005-10-10 20:59:28 +0000 | [diff] [blame] | 1 | *visual.txt* For Vim version 7.0aa. Last change: 2005 Oct 09 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2 | |
| 3 | |
| 4 | VIM REFERENCE MANUAL by Bram Moolenaar |
| 5 | |
| 6 | |
| 7 | Visual mode *Visual* *Visual-mode* *visual-mode* |
| 8 | |
| 9 | Visual mode is a flexible and easy way to select a piece of text for an |
| 10 | operator. It is the only way to select a block of text. |
| 11 | |
| 12 | This is introduced in section |04.4| of the user manual. |
| 13 | |
| 14 | 1. Using Visual mode |visual-use| |
| 15 | 2. Starting and stopping Visual mode |visual-start| |
| 16 | 3. Changing the Visual area |visual-change| |
| 17 | 4. Operating on the Visual area |visual-operators| |
| 18 | 5. Blockwise operators |blockwise-operators| |
| 19 | 6. Repeating |visual-repeat| |
| 20 | 7. Examples |visual-examples| |
| 21 | 8. Select mode |Select-mode| |
| 22 | |
| 23 | {Vi has no Visual mode, the name "visual" is used for Normal mode, to |
| 24 | distinguish it from Ex mode} |
| 25 | {not available when the |+visual| feature was disabled when compiling} |
| 26 | |
| 27 | ============================================================================== |
| 28 | 1. Using Visual mode *visual-use* |
| 29 | |
| 30 | Using Visual mode consists of three parts: |
| 31 | 1. Mark the start of the text with "v", "V" or CTRL-V. |
| 32 | The character under the cursor will be used as the start. |
| 33 | 2. Move to the end of the text. |
| 34 | The text from the start of the Visual mode up to and including the |
| 35 | character under the cursor is highlighted. |
| 36 | 3. Type an operator command. |
| 37 | The highlighted characters will be operated upon. |
| 38 | |
| 39 | The 'highlight' option can be used to set the display mode to use for |
| 40 | highlighting in Visual mode. |
| 41 | The 'virtualedit' option can be used to allow positioning the cursor to |
| 42 | positions where there is no actual character. |
| 43 | |
| 44 | The highlighted text normally includes the character under the cursor. |
| 45 | However, when the 'selection' option is set to "exclusive" and the cursor is |
| 46 | after the Visual area, the character under the cursor is not included. |
| 47 | |
| 48 | With "v" the text before the start position and after the end position will |
Bram Moolenaar | 8169525 | 2004-12-29 20:58:21 +0000 | [diff] [blame] | 49 | not be highlighted. However, all uppercase and non-alpha operators, except |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 50 | "~" and "U", will work on whole lines anyway. See the list of operators |
| 51 | below. |
| 52 | |
| 53 | *visual-block* |
| 54 | With CTRL-V (blockwise Visual mode) the highlighted text will be a rectangle |
| 55 | between start position and the cursor. However, some operators work on whole |
| 56 | lines anyway (see the list below). The change and substitute operators will |
| 57 | delete the highlighted text and then start insertion at the top left |
| 58 | position. |
| 59 | |
| 60 | ============================================================================== |
| 61 | 2. Starting and stopping Visual mode *visual-start* |
| 62 | |
| 63 | *v* *characterwise-visual* |
| 64 | v start Visual mode per character. |
| 65 | |
| 66 | *V* *linewise-visual* |
| 67 | V start Visual mode linewise. |
| 68 | |
| 69 | *CTRL-V* *blockwise-visual* |
| 70 | CTRL-V start Visual mode blockwise. Note: Under Windows |
| 71 | CTRL-V could be mapped to paste text, it doesn't work |
| 72 | to start Visual mode then, see |CTRL-V-alternative|. |
| 73 | |
| 74 | If you use <Esc>, click the left mouse button or use any command that |
| 75 | does a jump to another buffer while in Visual mode, the highlighting stops |
| 76 | and no text is affected. Also when you hit "v" in characterwise Visual mode, |
| 77 | "CTRL-V" in blockwise Visual mode or "V" in linewise Visual mode. If you hit |
| 78 | CTRL-Z the highlighting stops and the editor is suspended or a new shell is |
| 79 | started |CTRL-Z|. |
| 80 | |
| 81 | new mode after typing: *v_v* *v_CTRL-V* *v_V* |
| 82 | old mode "v" "CTRL-V" "V" ~ |
| 83 | |
| 84 | Normal Visual blockwise Visual linewise Visual |
| 85 | Visual Normal blockwise Visual linewise Visual |
| 86 | blockwise Visual Visual Normal linewise Visual |
| 87 | linewise Visual Visual blockwise Visual Normal |
| 88 | |
Bram Moolenaar | d5cdbeb | 2005-10-10 20:59:28 +0000 | [diff] [blame] | 89 | *gv* *v_gv* *reselect-Visual* |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 90 | gv Start Visual mode with the same area as the previous |
Bram Moolenaar | 402d2fe | 2005-04-15 21:00:38 +0000 | [diff] [blame] | 91 | area and the same mode. |
| 92 | In Visual mode the current and the previous Visual |
| 93 | area are exchanged. |
| 94 | After using "p" or "P" in Visual mode the text that |
| 95 | was put will be selected. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 96 | |
| 97 | *<LeftMouse>* |
| 98 | <LeftMouse> Set the current cursor position. If Visual mode is |
| 99 | active it is stopped. Only when 'mouse' option is |
| 100 | contains 'n' or 'a'. If the position is within 'so' |
| 101 | lines from the last line on the screen the text is |
| 102 | scrolled up. If the position is within 'so' lines from |
| 103 | the first line on the screen the text is scrolled |
| 104 | down. |
| 105 | |
| 106 | *<RightMouse>* |
| 107 | <RightMouse> Start Visual mode if it is not active. The text from |
| 108 | the cursor position to the position of the click is |
| 109 | highlighted. If Visual mode was already active move |
| 110 | the start or end of the highlighted text, which ever |
| 111 | is closest, to the position of the click. Only when |
| 112 | 'mouse' option contains 'n' or 'a'. |
| 113 | |
| 114 | Note: when 'mousemodel' is set to "popup", |
| 115 | <S-LeftMouse> has to be used instead of <RightMouse>. |
| 116 | |
| 117 | *<LeftRelease>* |
| 118 | <LeftRelease> This works like a <LeftMouse>, if it is not at |
| 119 | the same position as <LeftMouse>. In an older version |
| 120 | of xterm you won't see the selected area until the |
| 121 | button is released, unless there is access to the |
| 122 | display where the xterm is running (via the DISPLAY |
| 123 | environment variable or the -display argument). Only |
| 124 | when 'mouse' option contains 'n' or 'a'. |
| 125 | |
| 126 | If Visual mode is not active and the "v", "V" or CTRL-V is preceded with a |
| 127 | count, the size of the previously highlighted area is used for a start. You |
| 128 | can then move the end of the highlighted area and give an operator. The type |
| 129 | of the old area is used (character, line or blockwise). |
| 130 | - Linewise Visual mode: The number of lines is multiplied with the count. |
| 131 | - Blockwise Visual mode: The number of lines and columns is multiplied with |
| 132 | the count. |
| 133 | - Normal Visual mode within one line: The number of characters is multiplied |
| 134 | with the count. |
| 135 | - Normal Visual mode with several lines: The number of lines is multiplied |
| 136 | with the count, in the last line the same number of characters is used as |
| 137 | in the last line in the previously highlighted area. |
| 138 | The start of the text is the Cursor position. If the "$" command was used as |
| 139 | one of the last commands to extend the highlighted text, the area will be |
| 140 | extended to the rightmost column of the longest line. |
| 141 | |
| 142 | If you want to highlight exactly the same area as the last time, you can use |
| 143 | "gv" |gv| |v_gv|. |
| 144 | |
Bram Moolenaar | 8169525 | 2004-12-29 20:58:21 +0000 | [diff] [blame] | 145 | *v_<Esc>* |
| 146 | <Esc> In Visual mode: Stop Visual mode. |
| 147 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 148 | *v_CTRL-C* |
| 149 | CTRL-C In Visual mode: Stop Visual mode. When insert mode is |
| 150 | pending (the mode message shows |
| 151 | "-- (insert) VISUAL --"), it is also stopped. |
| 152 | |
| 153 | ============================================================================== |
| 154 | 3. Changing the Visual area *visual-change* |
| 155 | |
| 156 | *v_o* |
| 157 | o Go to Other end of highlighted text: The current |
| 158 | cursor position becomes the start of the highlighted |
| 159 | text and the cursor is moved to the other end of the |
| 160 | highlighted text. The highlighted area remains the |
| 161 | same. |
| 162 | |
| 163 | *v_O* |
| 164 | O Go to Other end of highlighted text. This is like |
| 165 | "o", but in Visual block mode the cursor moves to the |
| 166 | other corner in the same line. When the corner is at |
| 167 | a character that occupies more than one position on |
| 168 | the screen (e.g., a <Tab>), the highlighted text may |
| 169 | change. |
| 170 | |
| 171 | *v_$* |
| 172 | When the "$" command is used with blockwise Visual mode, the right end of the |
| 173 | highlighted text will be determined by the longest highlighted line. This |
| 174 | stops when a motion command is used that does not move straight up or down. |
| 175 | |
| 176 | For moving the end of the block many commands can be used, but you cannot |
| 177 | use Ex commands, commands that make changes or abandon the file. Commands |
| 178 | (starting with) ".pPiIaAO&", CTRL-^, "Z", CTRL-], CTRL-T, CTRL-R, CTRL-I |
| 179 | and CTRL-O cause a beep and Visual mode continues. |
| 180 | |
| 181 | When switching to another window on the same buffer, the cursor position in |
| 182 | that window is adjusted, so that the same Visual area is still selected. This |
| 183 | is especially useful to view the start of the Visual area in one window, and |
| 184 | the end in another. You can then use <RightMouse> (or <S-LeftMouse> when |
Bram Moolenaar | 8169525 | 2004-12-29 20:58:21 +0000 | [diff] [blame] | 185 | 'mousemodel' is "popup") to drag either end of the Visual area. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 186 | |
| 187 | ============================================================================== |
| 188 | 4. Operating on the Visual area *visual-operators* |
| 189 | |
| 190 | The operators that can be used are: |
| 191 | ~ switch case |v_~| |
| 192 | d delete |v_d| |
| 193 | c change (4) |v_c| |
| 194 | y yank |v_y| |
| 195 | > shift right (4) |v_>| |
| 196 | < shift left (4) |v_<| |
| 197 | ! filter through external command (1) |v_!| |
| 198 | = filter through 'equalprg' option command (1) |v_=| |
| 199 | gq format lines to 'textwidth' length (1) |v_gq| |
| 200 | |
| 201 | The objects that can be used are: |
| 202 | aw a word (with white space) |v_aw| |
| 203 | iw inner word |v_iw| |
| 204 | aW a WORD (with white space) |v_aW| |
| 205 | iW inner WORD |v_iW| |
| 206 | as a sentence (with white space) |v_as| |
| 207 | is inner sentence |v_is| |
| 208 | ap a paragraph (with white space) |v_ap| |
| 209 | ip inner paragraph |v_ip| |
| 210 | ab a () block (with parenthesis) |v_ab| |
| 211 | ib inner () block |v_ib| |
| 212 | aB a {} block (with braces) |v_aB| |
| 213 | iB inner {} block |v_iB| |
| 214 | a< a <> block (with <>) |v_a<| |
| 215 | i< inner <> block |v_i<| |
| 216 | a[ a [] block (with []) |v_a[| |
| 217 | i[ inner [] block |v_i[| |
| 218 | |
| 219 | Additionally the following commands can be used: |
| 220 | : start ex command for highlighted lines (1) |v_:| |
| 221 | r change (4) |v_r| |
| 222 | s change |v_s| |
| 223 | C change (2)(4) |v_C| |
| 224 | S change (2) |v_S| |
| 225 | R change (2) |v_R| |
| 226 | x delete |v_x| |
| 227 | D delete (3) |v_D| |
| 228 | X delete (2) |v_X| |
| 229 | Y yank (2) |v_Y| |
| 230 | p put |v_p| |
| 231 | J join (1) |v_J| |
| 232 | U make uppercase |v_U| |
| 233 | u make lowercase |v_u| |
| 234 | ^] find tag |v_CTRL-]| |
| 235 | I block insert |v_b_I| |
| 236 | A block append |v_b_A| |
| 237 | |
| 238 | (1): Always whole lines, see |:visual_example|. |
| 239 | (2): Whole lines when not using CTRL-V. |
| 240 | (3): Whole lines when not using CTRL-V, delete until the end of the line when |
| 241 | using CTRL-V. |
| 242 | (4): When using CTRL-V operates on the block only. |
| 243 | |
| 244 | Note that the ":vmap" command can be used to specifically map keys in Visual |
| 245 | mode. For example, if you would like the "/" command not to extend the Visual |
| 246 | area, but instead take the highlighted text and search for that: > |
| 247 | :vmap / y/<C-R>"<CR> |
| 248 | (In the <> notation |<>|, when typing it you should type it literally; you |
| 249 | need to remove the 'B' and '<' flags from 'cpoptions'.) |
| 250 | |
| 251 | If you want to give a register name using the """ command, do this just before |
| 252 | typing the operator character: "v{move-around}"xd". |
| 253 | |
| 254 | If you want to give a count to the command, do this just before typing the |
| 255 | operator character: "v{move-around}3>" (move lines 3 indents to the right). |
| 256 | |
| 257 | *{move-around}* |
| 258 | The {move-around} is any sequence of movement commands. Note the difference |
| 259 | with {motion}, which is only ONE movement command. |
| 260 | |
| 261 | ============================================================================== |
| 262 | 5. Blockwise operators *blockwise-operators* |
| 263 | |
| 264 | {not available when compiled without the |+visualextra| feature} |
| 265 | |
| 266 | Reminder: Use 'virtualedit' to be able to select blocks that start or end |
| 267 | after the end of a line or halfway a tab. |
| 268 | |
| 269 | Visual-block Insert *v_b_I* |
| 270 | With a blockwise selection, I{string}<ESC> will insert {string} at the start |
| 271 | of block on every line of the block, provided that the line extends into the |
| 272 | block. Thus lines that are short will remain unmodified. TABs are split to |
| 273 | retain visual columns. |
| 274 | See |v_b_I_example|. |
| 275 | |
| 276 | Visual-block Append *v_b_A* |
| 277 | With a blockwise selection, A{string}<ESC> will append {string} to the end of |
Bram Moolenaar | 402d2fe | 2005-04-15 21:00:38 +0000 | [diff] [blame] | 278 | block on every line of the block. There is some differing behavior where the |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 279 | block RHS is not straight, due to different line lengths: |
| 280 | |
| 281 | 1. Block was created with <C-v>$ |
| 282 | In this case the string is appended to the end of each line. |
| 283 | 2. Block was created with <C-v>{move-around} |
| 284 | In this case the string is appended to the end of the block on each line, |
| 285 | and whitespace is inserted to pad to the end-of-block column. |
| 286 | See |v_b_A_example|. |
| 287 | Note: "I" and "A" behave differently for lines that don't extend into the |
| 288 | selected block. This was done intentionally, so that you can do it the way |
| 289 | you want. |
| 290 | |
| 291 | Visual-block change *v_b_c* |
| 292 | All selected text in the block will be replaced by the same text string. When |
| 293 | using "c" the selected text is deleted and Insert mode started. You can then |
| 294 | enter text (without a line break). When you hit <Esc>, the same string is |
| 295 | inserted in all previously selected lines. |
| 296 | |
| 297 | Visual-block Change *v_b_C* |
| 298 | Like using "c", but the selection is extended until the end of the line for |
| 299 | all lines. |
| 300 | |
| 301 | *v_b_<* |
| 302 | Visual-block Shift *v_b_>* |
Bram Moolenaar | 402d2fe | 2005-04-15 21:00:38 +0000 | [diff] [blame] | 303 | The block is shifted by 'shiftwidth'. The RHS of the block is irrelevant. The |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 304 | LHS of the block determines the point from which to apply a right shift, and |
Bram Moolenaar | 402d2fe | 2005-04-15 21:00:38 +0000 | [diff] [blame] | 305 | padding includes TABs optimally according to 'ts' and 'et'. The LHS of the |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 306 | block determines the point upto which to shift left. |
| 307 | Note: v_< padding is buggy if the Visual Block starts and ends in the same |
Bram Moolenaar | 402d2fe | 2005-04-15 21:00:38 +0000 | [diff] [blame] | 308 | TAB. (Vim 5.4c) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 309 | See |v_b_>_example|. |
| 310 | See |v_b_<_example|. |
| 311 | |
| 312 | Visual-block Replace *v_b_r* |
| 313 | Every screen char in the highlighted region is replaced with the same char, ie |
| 314 | TABs are split and the virtual whitespace is replaced, maintaining screen |
| 315 | layout. |
| 316 | See |v_b_r_example|. |
| 317 | |
| 318 | |
| 319 | ============================================================================== |
| 320 | 6. Repeating *visual-repeat* |
| 321 | |
| 322 | When repeating a Visual mode operator, the operator will be applied to the |
| 323 | same amount of text as the last time: |
| 324 | - Linewise Visual mode: The same number of lines. |
| 325 | - Blockwise Visual mode: The same number of lines and columns. |
| 326 | - Normal Visual mode within one line: The same number of characters. |
| 327 | - Normal Visual mode with several lines: The same number of lines, in the |
| 328 | last line the same number of characters as in the last line the last time. |
| 329 | The start of the text is the Cursor position. If the "$" command was used as |
| 330 | one of the last commands to extend the highlighted text, the repeating will |
| 331 | be applied up to the rightmost column of the longest line. |
| 332 | |
| 333 | |
| 334 | ============================================================================== |
| 335 | 7. Examples *visual-examples* |
| 336 | |
| 337 | *:visual_example* |
| 338 | Currently the ":" command works on whole lines only. When you select part of |
| 339 | a line, doing something like ":!date" will replace the whole line. If you |
| 340 | want only part of the line to be replaced you will have to make a mapping for |
| 341 | it. In a future release ":" may work on partial lines. |
| 342 | |
| 343 | Here is an example, to replace the selected text with the output of "date": > |
| 344 | :vmap _a <Esc>`>a<CR><Esc>`<i<CR><Esc>!!date<CR>kJJ |
| 345 | |
| 346 | (In the <> notation |<>|, when typing it you should type it literally; you |
| 347 | need to remove the 'B' and '<' flags from 'cpoptions') |
| 348 | |
| 349 | What this does is: |
| 350 | <Esc> stop Visual mode |
| 351 | `> go to the end of the Visual area |
| 352 | a<CR><Esc> break the line after the Visual area |
| 353 | `< jump to the start of the Visual area |
| 354 | i<CR><Esc> break the line before the Visual area |
| 355 | !!date<CR> filter the Visual text through date |
| 356 | kJJ Join the lines back together |
| 357 | |
| 358 | *visual-search* |
| 359 | Here is an idea for a mapping that makes it possible to do a search for the |
| 360 | selected text: > |
| 361 | :vmap X y/<C-R>"<CR> |
| 362 | |
| 363 | (In the <> notation |<>|, when typing it you should type it literally; you |
| 364 | need to remove the 'B' and '<' flags from 'cpoptions') |
| 365 | |
| 366 | Note that special characters (like '.' and '*') will cause problems. |
| 367 | |
| 368 | Visual-block Examples *blockwise-examples* |
| 369 | With the following text, I will indicate the commands to produce the block and |
Bram Moolenaar | 402d2fe | 2005-04-15 21:00:38 +0000 | [diff] [blame] | 370 | the results below. In all cases, the cursor begins on the 'a' in the first |
Bram Moolenaar | 8169525 | 2004-12-29 20:58:21 +0000 | [diff] [blame] | 371 | line of the test text. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 372 | The following modeline settings are assumed ":ts=8:sw=4:". |
| 373 | |
| 374 | It will be helpful to |
| 375 | :set hls |
| 376 | /<TAB> |
Bram Moolenaar | 402d2fe | 2005-04-15 21:00:38 +0000 | [diff] [blame] | 377 | where <TAB> is a real TAB. This helps visualise the operations. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 378 | |
| 379 | The test text is: |
| 380 | |
| 381 | abcdefghijklmnopqrstuvwxyz |
| 382 | abc defghijklmnopqrstuvwxyz |
| 383 | abcdef ghi jklmnopqrstuvwxyz |
| 384 | abcdefghijklmnopqrstuvwxyz |
| 385 | |
| 386 | 1. fo<C-v>3jISTRING<ESC> *v_b_I_example* |
| 387 | |
| 388 | abcdefghijklmnSTRINGopqrstuvwxyz |
| 389 | abc STRING defghijklmnopqrstuvwxyz |
| 390 | abcdef ghi STRING jklmnopqrstuvwxyz |
| 391 | abcdefghijklmnSTRINGopqrstuvwxyz |
| 392 | |
| 393 | 2. fo<C-v>3j$ASTRING<ESC> *v_b_A_example* |
| 394 | |
| 395 | abcdefghijklmnopqrstuvwxyzSTRING |
| 396 | abc defghijklmnopqrstuvwxyzSTRING |
| 397 | abcdef ghi jklmnopqrstuvwxyzSTRING |
| 398 | abcdefghijklmnopqrstuvwxyzSTRING |
| 399 | |
| 400 | 3. fo<C-v>3j3l<.. *v_b_<_example* |
| 401 | |
| 402 | abcdefghijklmnopqrstuvwxyz |
| 403 | abc defghijklmnopqrstuvwxyz |
| 404 | abcdef ghi jklmnopqrstuvwxyz |
| 405 | abcdefghijklmnopqrstuvwxyz |
| 406 | |
| 407 | 4. fo<C-v>3j>.. *v_b_>_example* |
| 408 | |
| 409 | abcdefghijklmn opqrstuvwxyz |
| 410 | abc defghijklmnopqrstuvwxyz |
| 411 | abcdef ghi jklmnopqrstuvwxyz |
| 412 | abcdefghijklmn opqrstuvwxyz |
| 413 | |
| 414 | 5. fo<C-v>5l3jrX *v_b_r_example* |
| 415 | |
| 416 | abcdefghijklmnXXXXXXuvwxyz |
| 417 | abc XXXXXXhijklmnopqrstuvwxyz |
| 418 | abcdef ghi XXXXXX jklmnopqrstuvwxyz |
| 419 | abcdefghijklmnXXXXXXuvwxyz |
| 420 | |
| 421 | ============================================================================== |
| 422 | 8. Select mode *Select* *Select-mode* |
| 423 | |
| 424 | Select mode looks like Visual mode, but the commands accepted are quite |
| 425 | different. This resembles the selection mode in Microsoft Windows. |
| 426 | When the 'showmode' option is set, "-- SELECT --" is shown in the last line. |
| 427 | |
| 428 | Entering Select mode: |
| 429 | - Using the mouse to select an area, and 'selectmode' contains "mouse". |
| 430 | 'mouse' must also contain a flag for the current mode. |
| 431 | - Using a non-printable movement command, with the Shift key pressed, and |
| 432 | 'selectmode' contains "key". For example: <S-Left> and <S-End>. 'keymodel' |
| 433 | must also contain "startsel". |
| 434 | - Using "v", "V" or CTRL-V command, and 'selectmode' contains "cmd". |
| 435 | - Using "gh", "gH" or "g_CTRL-H" command in Normal mode. |
| 436 | - From Visual mode, press CTRL-G. *v_CTRL-G* |
| 437 | |
| 438 | Commands in Select mode: |
| 439 | - Printable characters, <NL> and <CR> cause the selection to be deleted, and |
| 440 | Vim enters Insert mode. The typed character is inserted. |
| 441 | - Non-printable movement commands, with the Shift key pressed, extend the |
| 442 | selection. 'keymodel' must include "startsel". |
| 443 | - Non-printable movement commands, with the Shift key NOT pressed, stop Select |
| 444 | mode. 'keymodel' must include "stopsel". |
| 445 | - ESC stops Select mode. |
| 446 | - CTRL-O switches to Visual mode for the duration of one command. *v_CTRL-O* |
| 447 | - CTRL-G switches to Visual mode. |
| 448 | |
| 449 | Otherwise, typed characters are handled as in Visual mode. |
| 450 | |
| 451 | When using an operator in Select mode, and the selection is linewise, the |
| 452 | selected lines are operated upon, but like in characterwise selection. For |
| 453 | example, when a whole line is deleted, it can later be pasted halfway a line. |
| 454 | |
| 455 | |
| 456 | Mappings and menus in Select mode. *Select-mode-mapping* |
| 457 | |
| 458 | In Select mode the mappings and menus of Visual mode are used. Before it is |
| 459 | executed, Vim automatically switches to Visual mode, so that the same |
| 460 | behavior as in Visual mode is effective. |
| 461 | |
| 462 | After the mapping or menu finishes, the selection is enabled again and Select |
| 463 | mode entered, unless the selected area was deleted, another buffer became |
| 464 | the current one or the window layout was changed. |
| 465 | |
| 466 | When a character was typed that causes the selection to be deleted and Insert |
| 467 | mode started, Insert mode mappings are applied to this character. This may |
| 468 | cause some confusion, because it means Insert mode mappings apply to a |
| 469 | character typed in Select mode. Language mappings apply as well. |
| 470 | |
| 471 | *gV* *v_gV* |
| 472 | gV Avoid the automatic reselection of the Visual area |
| 473 | after a Select mode mapping or menu has finished. |
| 474 | Put this just before the end of the mapping or menu. |
| 475 | At least it should be after any operations on the |
| 476 | selection. |
| 477 | |
| 478 | *gh* |
| 479 | gh Start Select mode, characterwise. This is like "v", |
| 480 | but starts Select mode instead of Visual mode. |
| 481 | Mnemonic: "get highlighted". |
| 482 | |
| 483 | *gH* |
| 484 | gH Start Select mode, linewise. This is like "V", |
| 485 | but starts Select mode instead of Visual mode. |
| 486 | Mnemonic: "get Highlighted". |
| 487 | |
| 488 | *g_CTRL-H* |
| 489 | g CTRL-H Start Select mode, blockwise. This is like CTRL-V, |
| 490 | but starts Select mode instead of Visual mode. |
| 491 | Mnemonic: "get Highlighted". |
| 492 | |
| 493 | vim:tw=78:ts=8:ft=help:norl: |