vim:keys: Substitute only inside visual selection
When substituting in a visual block selection, the automatically inserted range `'<,'>` is not enough as the pattern will also match outside of the selection on the same lines. To only match inside the selection, insert the `\%V` atom. Theoretically the pattern will also need the atom before the last character to make sure that everything is inside the selection, but this can be inserted manually when needed (see `:h /\%V`).
This commit is contained in:
@@ -27,13 +27,13 @@ nnoremap <C-w>! <C-w>T
|
|||||||
" Substitute command
|
" Substitute command
|
||||||
if (exists('+inccommand') && &inccommand != '')
|
if (exists('+inccommand') && &inccommand != '')
|
||||||
nnoremap S :%s/
|
nnoremap S :%s/
|
||||||
vnoremap S :s/
|
vnoremap S :s/\%V
|
||||||
else
|
else
|
||||||
" This does not work with live previewing commands (inccommand) since the
|
" This does not work with live previewing commands (inccommand) since the
|
||||||
" replace pattern is already defined and thus everything matching the search
|
" replace pattern is already defined and thus everything matching the search
|
||||||
" pattern is just deleted.
|
" pattern is just deleted.
|
||||||
nnoremap S :%s//gc<Left><Left><Left>
|
nnoremap S :%s//gc<Left><Left><Left>
|
||||||
vnoremap S :s//gc<Left><Left><Left>
|
vnoremap S :s/\%V/gc<Left><Left><Left>
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Interact with the system clipboard
|
" Interact with the system clipboard
|
||||||
|
|||||||
Reference in New Issue
Block a user