(Move categories to tip template) |
m (Reverted edits by Emprego.curitiba (talk | block) to last version by JohnBot) |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 38: | Line 38: | ||
<pre> |
<pre> |
||
" RS: repeat substitution command |
" RS: repeat substitution command |
||
− | com! -range -nargs=* RS call RepeatSubst(<q-args |
+ | com! -range -nargs=* RS call RepeatSubst(<q-args>) |
" RepatSubst: |
" RepatSubst: |
||
fun! RepeatSubst(subexpr) |
fun! RepeatSubst(subexpr) |
||
Line 47: | Line 47: | ||
let sep = strpart(g:repeatsubst,0,1) |
let sep = strpart(g:repeatsubst,0,1) |
||
let pat = substitute(g:repeatsubst,'^.\(.\{-}\)'.sep.'.*$','\1','') |
let pat = substitute(g:repeatsubst,'^.\(.\{-}\)'.sep.'.*$','\1','') |
||
− | s/\%#./\r& |
+ | s/\%#./\r&/ |
let curcol= curcol + matchend(getline("."),pat) |
let curcol= curcol + matchend(getline("."),pat) |
||
exe "s".g:repeatsubst |
exe "s".g:repeatsubst |
||
Line 57: | Line 57: | ||
==Comments== |
==Comments== |
||
− | |||
− | ---- |
Latest revision as of 15:32, 8 November 2011
Tip 573 Printable Monobook Previous Next
created October 3, 2003 · complexity intermediate · author Charles E. Campbell, Jr. · version 6.0
The :RS /pattern/subpattern/{flags} command+function as shown below allows one to repeat a RS-substitute after the current cursor position.
For example:
" The cursor position is indicated with '^' on next line. one two three one two three one two three ^ :RS /two/TWO/ one TWO three one two three one two three ^ move cursor: one TWO three one two three one two three ^ (I think tip author intended to repeat :RS here?) cursor ends up: one TWO three one two three one TWO three
Put the following into your vimrc if you'd like to be able to do this.
" RS: repeat substitution command com! -range -nargs=* RS call RepeatSubst(<q-args>) " RepatSubst: fun! RepeatSubst(subexpr) if a:subexpr != "" let g:repeatsubst= a:subexpr endif let curcol= col(".") let sep = strpart(g:repeatsubst,0,1) let pat = substitute(g:repeatsubst,'^.\(.\{-}\)'.sep.'.*$','\1','') s/\%#./\r&/ let curcol= curcol + matchend(getline("."),pat) exe "s".g:repeatsubst norm! k j! exe 'norm! '.curcol.'|' endfun