occur - smart grep under Emacs

Min favorit-editor Emacs kan bla. .... alt, og en af de ting jeg er blevet meget glad for den sidste måneds tid er "occur" i Emacs.
Jeg har ofte redigeret en masse filer, hvor jeg skal checke linier, der indeholder et givet ord f.eks. "add-hook" (taget fra min ~/.emacs).
Med "alt-x occur" -> "add-hook" viser min Emacs en nem oversigt over de linier, der indeholder "add-hook"

7 matches for "add-hook" in buffer: .emacs
15:(add-hook 'c-mode-hook 'turn-on-font-lock)
16:(add-hook 'php-mode-hook 'turn-on-font-lock)
17:(add-hook 'c++-mode-hook 'turn-on-font-lock)
18:(add-hook 'tex-mode-hook 'turn-on-font-lock)
19:(add-hook 'lisp-mode-hook 'turn-on-font-lock)
20:(add-hook 'lisp-mode-hook 'turn-on-font-lock)
21:(add-hook 'Makefile-mode-hook 'turn-on-font-lock)

Notationen med linie-nummer og indhold af linien der matcher er enkel.

Trykker jeg på den første linie (15) lukkes min fil op i linie 15 som forventet. Nyere Emacs-versioner er faktisk endnu smartere. Hvis man har et par filer, man vil søge igennem for et "pattern", så kan
"alt-x multi-occur" anbefales. Den spørger først efter hvilke filer, der skal søges i, og til sidst det ord (egentlig et reg exp pattern).

Funktionen "occur" er et god alternativ til at søge på normal vis med "C-s", især hvis man har en tekst-struktur, hvor der skal fokuseres på specifikke ord.

/pto

Kommentarer (12)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Nikolaj Brinch Jørgensen

Så er der frit slag i bolledejen for at starte en editor krig - kom så VI tilhængere! Os andre dødelige der anvender eclipse/netbeans/intellij/textmate/ultraedit osv. osv. osv. har selvfølgelig samme muligheder, og flere til.

Behøver jeg derudover sige:

find . -type f -exec grep -H "add-hook" {} \;

  • 1
  • 0
Peter Toft

Kedeligt emne ... :) Seriøst - jeg bruger skal vi/nano/gedit og flere andre ud over emacs. Det interessante er at forstå styrkerne ved hver enkelt editor - fremfor at forsvare en fremfor de andre.

  • 0
  • 0
Nikolaj Brinch Jørgensen

Det interessante er at forstå styrkerne ved hver enkelt editor - fremfor at forsvare en fremfor de andre

Lige netop! Jeg tror også det var det jeg ville hen til. Jeg bruger selv en del forskellige (TextMate/e/RedCar/nano/gedit/vi m.fl. og diverse IDE'er), ligesom jeg benytter forsk. OS (af samme årsag, nogleer bedre end andre, eller nogle er kun relevante i nogle sammenhænge).

  • 0
  • 0
Peter Toft

@Lars - ja oplagt, men det betyder meget (for mig) i arbejdshastighed at du har direkte adgang til de linier som findes. Derfor er linket mellem editor og "grep" elegant. Jeg laver også nogle solide comboer af find og grep i hverdagen :)

  • 0
  • 0
Jacob Larsen

Ja, linket mellem dit søgeresultat og stedet i koden er uundværligt.

Er søgningen indekseret, eller laver den en fuld søgning hver gang? Her tænker jeg især på multi-file use-casen med et stort source træ i størrelsesordenen 10000-100000 filer.

I Windows verdenen på mit arbejde er jeg meget afhængig af Source Insight på grund af en meget effektiv indeksering af symboler i store source pakker, samlet med navigering plus overblik baseret på dette indeks. Jeg har længe ledt efter noget på Linux der kan det samme siden Source Insight ikke kører godt nok i Wine, men indtil videre har jeg ikke haft held til det. Måske nogen her kan anbefale noget, siden bloggen rører ved en central feature i sådan en editor/IDE?

  • 0
  • 0
Log ind eller Opret konto for at kommentere