Hi Kunal!

On Di, 13 Apr 2010, Kunal Bajpai wrote:

> Here is what I want to achieve:
> 
> I have to insert a text after every 3 line a string.
> 
> e.g.
> Original Text -
> Line01some-text some-text some-text some-text some-text
>  Line02some-text some-text some-text some-text some-text
>  Line03some-text some-text some-text some-text some-text
>  Line04some-text some-text some-text some-text some-text
>  Line05some-text some-text some-text some-text some-text
>  Line06some-text some-text some-text some-text some-text
>  Line07some-text some-text some-text some-text some-text
>  Line08some-text some-text some-text some-text some-text
>  Line09some-text some-text some-text some-text some-text
>  Line10some-text some-text some-text some-text some-text
>  Line11some-text some-text some-text some-text some-text
>  Line12some-text some-text some-text some-text some-text
> 
> Edited Text -
> 
> Line01some-text some-text some-text some-text some-text
>  Line02some-text some-text some-text some-text some-text
>  Line03some-text some-text some-text some-text some-text
> <inserted-text>
> Line04some-text some-text some-text some-text some-text
>  Line05some-text some-text some-text some-text some-text
>  Line06some-text some-text some-text some-text some-text
> <inserted-text>
> Line07some-text some-text some-text some-text some-text
>  Line08some-text some-text some-text some-text some-text
>  Line09some-text some-text some-text some-text some-text
> <inserted-text>
> Line10some-text some-text some-text some-text some-text
>  Line11some-text some-text some-text some-text some-text
>  Line12some-text some-text some-text some-text some-text
> <inserted-text>
> 
> I hope that you got the problem
I am not sure about a native vim solution (but see further down).

I think the easiest solution would be to use sed? (or filter throught 
sed) like this:

#v+
chris...@t41:~/sed$ seq 1 10|sed '0~3a\
> <inserted-text>'
1
2
3
<inserted-text>
4
5
6
<inserted-text>
7
8
9
<inserted-text>
10
#v-

or from within vim filtering the (selected) text:
:%!sed "0~3a<inserted text>"
(this is Gnuish, I am not sure how to get the line break right).

A native Vim solution, could work like this:
:%s/^/\=(!(line('.')%4)?"\n":'')

which means check for every line whether it is the fourth. If it is,
replace this line start with a line break (thus entering a linebreak
after every 3 third line


?) Gnu sed at least allows this. I am not sure about other seds.

regards,
Christian

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

To unsubscribe, reply using "remove me" as the subject.

Reply via email to