【问题标题】:VIM: How can I search match a line which doesn't have a particular character?VIM:如何搜索匹配没有特定字符的行?
【发布时间】:2011-11-12 20:43:45
【问题描述】:

我在一个 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 
...

现在有一些行是上一行的延续。我想加入他们各自的行列。

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

请帮忙。

【问题讨论】:

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


    【解决方案1】:

    我相信你想做一个

    :v/:/-1j
    

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

    编辑 Benoit 和 dash-tom-bang 在他们的 cmets 中提供了实质性的改进:1 不是必需的,因为它是默认值,并且 ! 不加入行带空格。因此,这导致了以下更好的版本:

    :v/:/-j!
    

    【讨论】:

    • 请注意,1 不是强制性的::v/:/-j 也可以使用。 1 是使用 +- 范围的一元运算符时的默认计数。
    • 我也会在末尾添加一个!,这样您就不会在加入时添加或删除空格。 (即:v/:/-j!
    • 事实上,使用这种方法我不需要担心宏以及我需要运行它多少次...... :D
    【解决方案2】:

    图案

    ^[^:]*$
    

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

    【讨论】:

    • 感谢这个巧妙的解决方案 :)
    • 使用上述方法(使用:v)我什至不需要担心宏,它很重要:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 2011-09-11
    相关资源
    最近更新 更多