Vim ищет и заменяет html-теги, повторно используя совпадения

Вы можете использовать либо psacct(несколько устаревший ), либо auditd(гораздо более гибкий )для наблюдения за тем, какие процессы запускает пользователь. Auditd можно настроить сразу, и он начнет регистрировать действия пользователей, хотя это сложная система.

1
18.12.2019, 16:46
1 ответ
  • .соответствует только обычным символам, но не новым строкам. Поскольку ваш HTML-тег занимает несколько строк, совпадений нет. Используйте атом \_.вместо(:help /\_.).
  • Вы ссылаетесь на внутренний текст с помощью \1внутри замены, но на самом деле не фиксируете его. Для этого вложите в\(...\):
  • Жадное сопоставление через *будет соответствовать первому начальному тегу и последнему конечному тегу, остальные теги будут поглощены в группе захвата., так что это будет работать только с одним вхождением. Чтобы изменить все вхождения, используйтене -жадноесовпадение, заменив *на \{-}. (Или используйте второй вариант.)
:%s/<div class="subSectionTitle">\(\_.\{-}\)<\/div>/<h1>\1<\/h1>/g

Кроме того, вы можете просто сопоставить начальный и конечный теги по отдельности. (В любом случае, даже исходное одиночное совпадение не справилось бы с заменой соответствующего закрывающего тега в случае вложенных тегов. )Вместо того, чтобы фиксировать разные начала начального и конечного тегов, я запускаю фактическое совпадение через специальный атом /\zs.

:%s/<\zsdiv class="subSectionTitle">\|<\/zsdiv>/h1>/g
3
27.01.2020, 23:22

Теги

Похожие вопросы