2013-10-09 30 views
1

我有一個全部包含在一行中的文本文件。Vim:在4個隨機數字序列末尾的分割線

例如

Scheme 4078 6291 4205 66 Video 23522 4323 53522 4233 Social 23 5432 6 54 

我想將它分成幾行,將名稱和四個相關的數字保留在一行上。

因此:

Scheme 4078 6291 4205 66 

Video 23522 4323 53522 4233 

Social 23 5432 6 54 

我一直在努力的事情像

/[[:digit:]]+ [[:digit:]]+ [[:digit:]]+ [[:digit:]]+ 

而且我估計,它必須進入,涉及線路:%s的,但我迷路。 有什麼幫助嗎?

回答

1

單程。它不會查看四位數組,而是查看任何沒有數字的單詞,並在其前面插入一個換行符。

:%s/\v\s+(\D+)/\r\1/g 

它產生:

Scheme 4078 6291 4205 66 
Video 23522 4323 53522 4233 
Social 23 5432 6 54 
+0

謝謝!這涉及到連續多個單詞的少數情況,這是很好的,我從我的問題中錯過了。 @ JohnSmith的答案也適用。 – Patrick

1

這種替換應該工作。

:%s/\s\+\(\D\)/\r\1/g 
1

這其中的工作原理與類似的語法你使用

:%s/\(\(\<[[:digit:]]\+\>[ \t]\+\)\{4\}\)/\1\r/g 
0

如果這是唯一的關鍵詞,那麼這將工作

:%s/\(Scheme\|Video\|Social\)/\r\1/g