No edit summary |
m (Reverted edits by Emprego.curitiba (talk | block) to last version by JohnBot) |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{review}} |
{{review}} |
||
+ | {{TipImported |
||
− | {{Tip |
||
|id=573 |
|id=573 |
||
+ | |previous=572 |
||
− | |title=Repeating a substitute from current cursor position |
||
+ | |next=575 |
||
− | |created=October 3, 2003 |
+ | |created=October 3, 2003 |
|complexity=intermediate |
|complexity=intermediate |
||
|author=Charles E. Campbell, Jr. |
|author=Charles E. Campbell, Jr. |
||
|version=6.0 |
|version=6.0 |
||
|rating=4/3 |
|rating=4/3 |
||
+ | |category1= |
||
− | |text= |
||
+ | |category2= |
||
⚫ | |||
⚫ | |||
⚫ | |||
+ | For example: |
||
− | below allows one to repeat a RS-substitute after the current |
||
+ | <pre> |
||
+ | " The cursor position is indicated with '^' on next line. |
||
⚫ | |||
+ | ^ |
||
⚫ | |||
− | cursor position. |
||
⚫ | |||
+ | ^ |
||
⚫ | |||
⚫ | |||
+ | ^ |
||
+ | (I think tip author intended to repeat :RS here?) |
||
⚫ | |||
− | Ex. |
||
⚫ | |||
+ | </pre> |
||
⚫ | |||
− | cursor starts... |
||
+ | <pre> |
||
⚫ | |||
⚫ | |||
− | |||
⚫ | |||
− | o^here |
||
⚫ | |||
− | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
⚫ | |||
⚫ | |||
+ | endif |
||
− | |||
⚫ | |||
⚫ | |||
⚫ | |||
− | |||
⚫ | |||
− | one TWO^cursor ends up here |
||
⚫ | |||
− | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
⚫ | |||
⚫ | |||
+ | j! |
||
− | |||
⚫ | |||
⚫ | |||
⚫ | |||
− | |||
+ | </pre> |
||
− | one TWO three one two ^ |
||
− | |||
− | |||
− | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
− | one TWO three one two three one TWO^ |
||
− | |||
− | |||
− | |||
− | (normally I'd have left the characters preceding the ^ as blanks but I'm |
||
− | |||
− | trying to avoid problems with proportional fonts) |
||
− | |||
− | |||
− | |||
⚫ | |||
− | |||
− | |||
− | |||
− | " --------------------------------------------------------------------- |
||
− | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
− | |||
− | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
− | endif |
||
− | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
− | j! |
||
− | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
− | " --------------------------------------------------------------------- |
||
− | |||
− | |||
⚫ | |||
− | == |
+ | ==Comments== |
− | <!-- parsed by vimtips.py in 0.547058 seconds--> |
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