Saturday, February 2, 2013

Re:

On Sat, 2 Feb 2013 14:21:54 -0800, Andy Richer wrote:
> Hi vim experts:
>
> I use keyboard macro for following sample contents:
>
> aaa/bbb/kp0/qqq 1.553 rp-+
>
> ccc/ddd 1.235 -0.043 0.274 -0.007 rp-+
>
>
>
> aaa/bbb/ake/qqq 1.552 rp-+
>
> vcc1/ddd 1.235 -0.043 0.274 -0.021 rp-+
>
>
> ..........
>
> my keyboard macro like this sequence:
> qa
> /-+
> J
> j
> q
>
> So I join 2 lines together like this: aaa/bbb/kp0/qqq 1.553
> rp-+ccc/ddd 1.235 -0.043 0.274 -0.007
> rp-+ I know I can use 5@a, 6@a ......., yet it is difficult for me
> to decide the number for @a in a big file.
> If I give number too big, @a will reach end of file then start from
> beginning of file until number of @a finished, and this cause
> problem.
>
> My 2 questions:
> 1. is there a way to tell vim when reach end of file, just stop @a ?

If you're using the generic "/" search (which it appears you're
doing), you can disable 'wrapscan' to prevent vim from wrapping back
to the beginning.

:set nowrapscan
:help 'wrapscan'

> 2. is there a way to tell vim to stop @a at specific line number?
> say line 500

You could possibly do a check if the line-number happens to be [equal
to|greater than|less than] a given line number and then raise an
exception which should kill the macro.

Another alternative would be to use an Ex command to do the work for
you. Something like:

:g/-+/j

which can then be limited with

:1,400g/-+/j

to only do the joining on lines 1-400 (or whatever arbitrary range
you specify).

-tim




--
--
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

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

No comments: