Совпадение со всеми строками, содержащими строку, за которой следует точка, за которой следуют ровно две буквы в Vim?

Вы должны обновить/переустановить свою рабочую станцию ​​с помощью Fedora 30. Усовершенствования Wayland в последнем выпуске устранили эту проблему.

https://bugzilla.redhat.com/show_bug.cgi?id=1668036

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/382

0
27.11.2021, 16:34
1 ответ

Вы можете использовать:

/example\.\w\w\W

Для поиска «пример». за которыми следуют два «словесных символа» \w, а затем 'не -символ слова'\W

Чтобы удалить все строки, не соответствующие шаблону, вы можете сделать:

:v/example\.\w\w\W/delete

Или просто:

:v/example\.\w\w\W/d

Или с помощью команды g[lobal] с отрицанием!:

:g!/example\.\w\w\W/d

Все 3 приведенные выше команды повернут это:

example.site"
example.link]"
example.example'
example.ex'
example.xx]"'

в это:

example.ex'
example.xx]"'

Обновление

Для работы со случаями, когда эти шаблоны находятся на одной строке:

example.site"
example.example' example.ex' example.link]"
example.xx]"'

Вы можете использовать подобный шаблон поиска:

/example\.\w\w\w[^ ]* \?

Это работает, чтобы найти «пример». за которыми следуют три «словесных символа» за которым следует любое количество символов, которые являются , а не пробелами [^ ]*и заканчиваются с необязательным пробелом \?.

Таким образом, вы можете заменить спички ничем (средство gприменить это замена для каждого совпадения в строке, а не только для первого найденного):

:%s/example\.\w\w\w[^ ]* \?//g

чтобы получить:


example.ex' 
example.xx]"'

(и вы также можете удалить пустые строки с помощью :g/^$/d. На самом деле, вы можете связать это вместе с помощью |и сделать все это в одном с:%s/example\.\w\w\w[^ ]* \?//g | %g/^$/d)

2
27.11.2021, 16:55

Теги

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