2011-09-08 4 views
1

У меня есть такие строки из файла Ldiff,VIM: Как я могу найти совпадение с линией, которая не имеет определенного символа?

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 [email protected] 
displayname: dkalland_directs_ww 
mail: [email protected] 
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.

ответ

11

Я считаю, что вы хотите сделать

:v/:/-1j 

Команда v выбирает все строки, сделать не Сопрягайте patterh /:/. -1 выбирает линии, указанные выше. и j присоединяется к этой линии со следующей строкой (то есть, выбранный с помощью команды v)

Edit Benoit и тир-том- взрывы предоставили значительные улучшения в их Комментариях: 1 не является необходимым, так как оно по умолчанию, а ! не присоединяется к строкам с пробелом. Таким образом, это приводит к следующему, лучшей версии:

:v/:/-j! 
+4

Обратите внимание, что '1' не является обязательным:': v /:/- j' также работает. '1' является значением по умолчанию, когда используются' + 'и' -' унарные операторы для диапазонов. – Benoit

+0

@Benoit: спасибо, что указал. –

+1

Я бы добавил '!' До конца, так что вы не получите добавленных или удаленных пробелов в точке соединения. (т. е. ': v /:/- j!') –

3

Pattern

^[^:]*$ 

матчи линии без :, это может быть полезно в более общих задач, когда :v команда не подходит (макрос или некоторые сравнение в скрипте)

+0

Спасибо за это опрятное решение :) –

+0

С приведенным выше подходом (используя: v) мне даже не нужно беспокоиться о макросе, и это считается :) –