Ответ Ансгара совершенно прав.
Я объясню его части, чтобы сделать его методологией, а не рецептом, потому что я думаю, что регулярные выражения как-то загадочны.
:s/\<\S*abc\>//g
команда подстановки vim
Это означает, что «в текущей строке (используйте% s для всех строк) подставьте совпадения регулярного выражения \<\S*abc\>
(разделенные первыми двумя символами"/"текстом, содержащимся между двумя последними"/с, то есть ничего. Окончание "g" для глобального и означает заменить все совпадения вместо только первого.
Регулярное выражение заключено в экранированные угловые скобки \<
и \>
. Это границы слов , что означает, что регулярное выражение будет соответствовать тексту только внутри отдельных слов. Подумайте, что vim разделит текст на слова, прежде чем пытаться сопоставить каждый.
Экранированная заглавная буква S предназначена для невидимого пространства. \s
(строчные буквы) соответствует пробелам (пробелы и табуляции), а \S
(прописные) соответствует всем остальным.
Следовательно, \S*
означает «непробельные символы ноль или более раз».
Часть abc
просто соответствует этой точной последовательности символов.
Собирая все вместе, регулярное выражение сопоставляет целые слова, состоящие из любой последовательности символов, за которыми следует abc
, как и хотел max .
Из-за того, как vim думает о словах, любая последовательность символов не будет содержать пробелов и других символов, которые являются границами слов. Список других символов зависит от типа редактируемого файла, и его можно увидеть, набрав :set iskeyword
enter. Это информация, используемая для разделения текста на слова.