Thanks for your help. James.
On Mar 7, 10:38 pm, Andy Wokula <[email protected]> wrote: > Am 07.03.2010 12:39, schrieb James Cole: > > > Hi, > > > I was trying to write a vmap for a custom text-object, and I could > > move the cursor to select the text by using a search specified > > directly within the vmap, but if I tried to instead put those searches > > in separte functions and call those functions from within the vmap, it > > didn't work. > > When you execute the sequence > V:<C-U>call NextSection()<Enter> > by hand, you will notice that returning from Cmdline mode clears the > visual area. Executing > normal! gv > early within function restores the visual area. > > > > > > > function! PrevSection() > > execute "?^:" > > endfunction > > > function! NextSection() > > execute "/^:" > > endfunction > > > vmap ac<ESC>:call PrevSection()<CR>V:call NextSection()<CR>k > > > (BTW, this is for a text file format I'm using that contains sections > > delimited by headings - a heading is just a line that starts with a > > colon. > > e.g. > > > :section 1 heading > > > text of section one > > > ::section 1.1 heading > > > some more text > > > :section 2 heading > > > the text of section 2 > > ) > > suggestion: > > function! SelectASection() > call search("^:", "bcW") > normal! V > let line2 = search("^:", "W") > if line2 == 0 > $ > else > - > endif > endfunction > > noremap <silent> ac :<C-U>call SelectASection()<CR> > nunmap ac| sunmap ac > > This will work for Visual mode and Operator pending mode. > > TODO (maybe) > - support a count > - if there is already a Visual area, extend it (don't replace it) > > -- > Andy -- You received this message from the "vim_use" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php
