VIM: Как я могу найти совпадение со строкой, в которой нет определенного символа? - PullRequest
2 голосов
/ 08 сентября 2011

У меня есть несколько таких строк из файла 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 
...

Теперь, поскольку есть несколько строк, которые являются продолжением предыдущей строки. Я хочу присоединить их к соответствующей линии.

Что меня смущает, так это то, как я могу искать строку без символа ":", чтобы присоединить ее к предыдущей строке.

Пожалуйста, помогите.

Ответы [ 2 ]

11 голосов
/ 08 сентября 2011

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

:v/:/-1j

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

Редактировать Benoit и dash-tom-bang внесли существенные улучшения в свои комментарии: 1 не является необходимым, поскольку это значение по умолчанию, а ! не объединяет строки пространство. Итак, это приводит к следующей, лучшей версии:

:v/:/-j!
4 голосов
/ 08 сентября 2011

Pattern

^[^:]*$

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...