ack regex: Сопоставление двух слов по порядку в одной строке

Я хотел бы найти в файлах строки, содержащие два слова, word_1 и word_2 по порядку, например, в Line A ниже, но не как в ] Строка B или Строка C :

Line A: ... word_1 .... word_2 .... 
Line B: ... word_1 ....
Line C: ... word_2 ....

Я пробовал

$ack '*word_1*word_2'
$ack '(word_1)+*(word_2)+'

и те же команды с ^ , добавленными в начало регулярного выражения (в попытке следовать синтаксис регулярных выражений Perl).

Ни одна из этих команд не возвращает файлы или строки, которые меня интересуют. oranges / main.cpp Я открываю их в одном окне emacs через emacs apples / main.cpp oranges / main.cpp Когда я использую Cx b для ...

У меня есть два файла с одинаковым именем, но в разных каталогах:

apples/main.cpp
oranges/main.cpp

Я открываю их в одном окне emacs через emacs apples / main.cpp oranges / main.cpp

Когда я использую Cx b для переключения между этими двумя буферами, имена буферов следующие: main.cpp "и" main.cpp <2> ". Я хотел бы иметь возможность видеть полный путь к этим двум файлам при переключении буферов, чтобы я мог однозначно различать версию с яблоками и апельсинами. Есть ли способ сделать это?

Одним из способов может быть изменение любого кода, генерирующего <2> после второго main.cpp, когда Emacs обнаруживает, что буфер с таким именем уже открыт. Однако я не мог найти, как это сделать.

6
задан Alan Turing 9 April 2011 в 20:47
поделиться