VIM:如何搜索匹配没有特定字符的行?

时间:2011-09-08 10:07:14

标签: search vim design-patterns vi text-mining

我有一些来自ldiff文件的行,

dn: cn=dkalland_directs_ww,cn=org_groups,cn=beehive_groups,cn=groups,dc=oracle
,dc=com
businesscategory: open
cn: dkalland_directs_ww
description: Directs Group for daniel.kallander@oracle.com
displayname: dkalland_directs_ww
mail: dkalland_directs_ww@oracle.com
objectclass: top
objectclass: orclGroup
objectclass: groupOfUniqueNames
orclglobalid: modified
orclnormdn: cn=dkalland_directs_ww,cn=org_groups,cn=beehive_groups,cn=groups,d
c=oracle,dc=com
owner: cn=BHGRPADMIN_WW,L=AMER,DC=ORACLE,DC=COM
uniquemember: cn=mattias_tobiasson,dc=us,dc=oracle,dc=com
uniquemember: cn=mattias_joelson,dc=us,dc=oracle,dc=com
uniquemember: cn=markus_persson,dc=us,dc=oracle,dc=com 
...

现在因为有一些行是前一行的延续。我想加入他们各自的路线。

我感到困惑的是如何搜索没有":"字符的行,以便我可以将其与前一行连接。

Plz帮助。

2 个答案:

答案 0 :(得分:11)

我相信你想做一个

:v/:/-1j

v命令选择匹配patterh /:/的所有行。 -1选择上面的第一行。并且j将此行与下一行(即使用v命令选择的行)连接起来

编辑 Benoit和dash-tom-bang在评论中提供了重大改进:1不是必需的,因为它是默认值,而!会没有用空格加入线条。因此,这会导致以下更好的版本:

:v/:/-j!

答案 1 :(得分:4)

模式

^[^:]*$

匹配没有:的行,当:v命令不适合(宏或脚本中的某些比较)时,它可用于更常见的任务