(?!\.php)является оператором регулярного выражения perl. lessобычно использует системный API регулярного выражения POSIX, поэтому обычно в расширенных регулярных выражениях GNU в системе GNU vimиспользуются vimрегулярные выражения.
В vim, как уже показано cuonglm, эквивалент index(?!\.php)будет index\(\.php\)\@!или \vindex(\.php)@!.
Поскольку lessво время компиляции вы можете выбрать библиотеку / API регулярных выражений и, как результат, тип регулярного выражения для использования:
--with-regex={auto,gnu,pcre,posix,regcmp,re_comp,
regcomp,regcomp-local,none}
Select a regular expression library auto
По умолчанию, однако, lessбудет использоваться POSIX regcompс REG_EXTENDED, поэтому вы получите расширенные регулярные выражения вашей системы, поэтому обычно что-то похожее с grep -E.
В расширенном регулярном выражении GNU нет аналогичного оператора просмотра или просмотра вперед.
Вы могли бы сделать это трудным путем:
index($|[^.]|\.($|([^p]|p($|([^h]|h($|[^p]))))))
С помощью lessвы можете использовать &ключ для фильтрации строк, содержащих index.php( &!index\.php), а затем искать index( /index). (вы все равно пропустите другие экземпляры, indexкоторые появляются в строке, также содержащей index.php).