2009-05-25 8 views

Odpowiedz

16

M-x occur?

Od the manual:

M-x occur

Prompt dla regexp, i wyświetli listę pokazując każdą linię w buforze zawierającym mecz dla niego. Dopasowany tekst jest podświetlany za pomocą twarzy match. Aby ograniczyć wyszukiwanie do części bufora, zawęź je do tej części (zobacz Zawężanie). Argument liczbowy n określa, że ​​linie kontekstu n mają być wyświetlane przed i za każdą pasującą linią. Domyślna liczba linii kontekstowych jest określona przez zmienną list-matching-lines-default-context-lines.

W buforze *Occur* można kliknąć każdą pozycję lub przenieść tam i wpisać RET, aby przejść do odpowiedniej pozycji w przeszukiwanym buforze. o i C-o wyświetlają dopasowanie w innym oknie; C-o go nie wybiera. Alternatywnie możesz użyć polecenia C-x ` (next-error), aby odwiedzać wystąpienia jeden po drugim (patrz Tryb kompilacji).

Wpisanie e w buforze *Occur* powoduje przełączenie do trybu edycji zdarzeń, w którym zmiany wprowadzone w tych wpisach są również stosowane do tekstu w buforze wyjściowym. Wpisz C-c C-c, aby powrócić do trybu Wystąp.

Komenda M-x list-matching-lines jest synonimem dla M-x occur.

+0

Dziękuję za odpowiedź! –

+0

nie ma problemu ... Jestem facetem vi, który czasami musi używać emacsa ... – LB40

4

Mój zwykły pracy jest, aby nie dostać listę i wybierz (nie wiem jak to zrobić), ale korzystanie z przyrostową wyszukiwania:

C-s <search target> 

dostaje meczu pięść po punkcie. Jeśli ci się nie spodoba, następny C-s dostaje następny. Kontynuuj, aż będziesz szczęśliwy (będziesz potrzebować dodatkowego C-s, aby zawinąć się od bufora i). Wystarczająco nowy emacsen może również podświetlić wszystkie mecze, które są widoczne.

Jak zauważono w komentarzach Töröka Gábora, jest to typowy skrót klawiaturowy: isearch-forward. Jeśli twoje powiązania są różne, musisz zmodyfikować zalecaną procedurę.

+3

'isearch-forward' (tj.' Cs') pozwala ci również wpisać 'Co' po podanej wyszukiwanej frazie, a następnie uruchamia 'wystąpić' co zasugerował LB. W ten sposób możesz użyć swojej mocy naraz. –

+0

Dzięki, Török. Jeszcze jedna rzecz, której nie wiedziałem o emacs. – dmckee

+0

To nie wydaje się działać dla mnie - 'C-o' jest związany z' otwartą linią'. –

5

Oprócz M-x occurr sprawdź także M-x grep. Działa to w kilku plikach naraz.

+3

'rgrep' jest jeszcze lepszy, ponieważ umożliwia wyszukiwanie cykliczne. –