Скажем, ваш рисунок - это буква 'e'.
Для поиска строки, не комментировали, но содержит е:
/^\%(\s*"\)\@!.*e
Это использует отрицательный предпросмотр (\@!
), чтобы подтвердить, что начало линии (^
) не следует в начале комментария (пробел, а затем двойная кавычка \s*"
), но за ним следует 'e' (.*e
). \%(
и \)
делает замкнутый шаблон атомом, в котором другие операторы (например, негативный просмотр) могут работать как единое целое.
Для выполнения команды на соответствующих линиях, используйте :g
:g/^\%(\s*"\)\@!.*e/echo "found one"
Чтобы увидеть, если соответствует текущей строки, используйте match()
:echo match(getline(line('.')), '^\%(\s*"\)\@!.*e') >= 0 ? 'true' : 'false'
регулярное выражение почти всегда такой же, речь идет что вы хотите делать с соответствующими линиями?
Просто уточнить: вы имеете в виду «остановку в первом матче, который не закомментирован»? Или вы ТОЛЬКО хотите найти первую строку без объявления? –
@PrinceGoulash: он означает поиск в заголовке, который является областью с комментариями в верхней части файла, вплоть до (и, естественно, исключая) первую строку без комментариев. –
Кстати, @Filip, причина, по которой вы получаете downvotes, состоит в том, что вы просите функцию без указания на то, что вы что-то пробовали. Stack Overflow не здесь, чтобы предоставить вам код, но чтобы помочь вам с проблемами с кодом. –