Wbudowany interfejs Vima dla programów typu grep jest wygodny, ale niewystarczający przy bardziej rozbudowanych projektach i edycji wielu plików naraz. Szczególnie we znaki daje się brak odpowiedników poleceń :argdo, :bufdo oraz trudności przy wyszukiwaniu rekursywnym. Problemy te z powodzeniem załatwia grep.vim.

Skrypt tygodnia: grep

Nazwa: grep

Autor: Yegappan Lakshmanan

Opisywana wersja: 1.3

Wstęp

Wbudowany interfejs Vima dla programów typu grep jest wygodny, ale niewystarczający przy bardziej rozbudowanych projektach i edycji wielu plików naraz. Szczególnie we znaki daje się brak odpowiedników poleceń :argdo, :bufdo oraz trudności przy wyszukiwaniu rekursywnym. Problemy te z powodzeniem załatwia grep.vim.

Wymagania

Vim 6.0, żeby w pełni wykorzystać możliwości skryptu przyda się zestaw narzędzi grep, fgrep, egrep, agrep, xargs (najlepiej by były zgodne z wersjami GNU programów).

Instalacja

Umieść plik grep.vim w katalogu ~/.vim/plugin. Po prostu.

Konfiguracja

(omawiam tutaj tylko najważniejsze opcje, pełna lista w dokumentacji skryptu, wspomniane tutaj opcje mogą być istotne dla polskiego użytkownika, lub wymagane do poprawnego działania skryptu)

Najważniejsze jest prawidłowe zdefiniowanie ścieżek do programów. O ile na *niksach wszystko powinno działać bez problemów to na systemach MS-Windows konieczne jest ustawienie prawidłowych wartości zmiennych w pliku _vimrc:

  • Grep_Path
  • Fgrep_Path
  • Egrep_Path
  • Agrep_Path
  • Grep_Find_Path
  • Grep_Xargs_Path

Inne rzeczy, nad wartością których można się zastanowić to:

Grep_Default_Filelist
Domyślnie: *
Po wybraniu jednego z poleceń i podaniu wzorca wyszukiwania użytkownik jest proszony o podanie szablonu nazwy pliku. Warto tę zmienną przystosować do indywidualnych potrzeb we wtyczkach typu pliku np. na *.[chS].
Grep_Default_Options
Domyślnie: empty
Nie wszyscy to lubią, warto mieć świadomość domyślnego ustawienia.
Grep_OpenQuickfixWindow
Domyślnie: 1
Okno quickfix otwiera się automatycznie, jeśli chcesz je wyłączyć ustaw tę zmienną na 0.
Grep_Skip_Dirs
Domyślnie: RCS CVS SCCS
Tych katalogów nie należy przeszukiwać w czasie rekursywnego przeszukiwania.
Grep_Skip_Files
Domyślnie: *~ *,v s.*
Pliki pasujące do podanych wzorców należy pominąć.
Grep_Key
Domyślnie: <F3>
Domyślny skrót klawiszowy dla polecenia :Grep. Przenosi od razu do wzorca wyszukiwania, nie jest możliwe zmodyfikowanie opcji.

Klawiszologia

Jedynym skrótem klawiszowym udostępnianym przez grep.vim jest <F3>, który wywołuje polecenie :Grep. Można go zmienić redefiniując zmienną Grep_Key.

Używanie

Skrypt umożliwia współpracę z kilkoma programami przeszukującymi pliki według podanego wyrażenia regularnego. Nie będę objaśniał co dokładnie każdy z tych programów robi, od tego jest dokumentacja do nich dołączana.

Schemat działania jest podobny w przypadku wszystkich poleceń.

  1. Najpierw należy wydać jedno z poleceń (omówione poniżej).
  2. Skrypt pyta o wzorzec do wyszukiwania – jako domyślny zostanie podany wyraz na którym był kursor w chwili wywołania polecenia. Można go zmodyfikować, użyć wyrażenia regularnego.
    Uwaga: wyrażenia regularne mają składnię grepa, nie Vima.
  3. Na końcu podaje się jakie pliki należy przeszukać.

Polecenia:

Do każdego polecenia możesz dodać opcje wyszukiwania jakie należałoby podać w linii poleceń. W ten sposób :Grep -i będzie szukał nie zwracając uwagi na wielkość znaków.

:Grep
Szukaj określonego wzorca w zadanych plikach.
:Rgrep
Rekursywny grep.
:GrepBuffer
Grep we wszystkich otwartych buforach.
:GrepArgs
Grep we wszystkich plikach listy argumentów (:args – przydatne przy projektach gdzie niekoniecznie wszystkie pliki muszą być otwarte).
:Fgrep
Szukaj przy pomocy fgrep.
:Rfgrep
Rekursywne fgrep.
:Egrep
Szukaj przy pomocy egrep.
:Regrep
Rekursywne egrep.
:Agrep
Szukaj przy pomocy agrep.
:Ragrep
Rekursywne agrep.

Podsumowanie

Bardzo miłe rozszerzenie funkcjonalności wbudowanej w Vima. Jak zwykle ubolewam nad brakiem pomocy w formacie vim-help.

Istnieje kilka innych skryptów ułatwiających korzystanie z zewnętrznych narzędzi do wyszukiwania. Znajdziesz je tutaj.

Archiwalny news dodany przez użytkownika: mikmach.
Kliknij tutaj by zobaczyć archiwalne komentarze.

Oznaczone jako → 
Share →