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ń.
- Najpierw należy wydać jedno z poleceń (omówione poniżej).
- 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. - 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.