Exuberant Ctags#
Program ctags#
path#
Argument path
określa ścieżkę względną lub bezwzględną do pliku/plików lub folderu/folderów, które będą analizowane przy bieżącym wywołaniu programu ctags. Generacja tagów dla poszczególnych plików w tych lokalizacjach zależy także od innych czynników, np. ich rozszerzenia czy niestandardowej konfiguracji programu. Argument path
można podawać wielokrotnie (separatorem jest spacja).
Opis działania#
Prawidłowe użycie argumentu najlepiej objaśnić na zapisie składniowym:
ctags path [--argument | -argument]
gdzie poszczególne człony oznaczają:
- ctags - ścieżka względna lub bezwzględna do pliku binarnego programu ctags (
ctags.exe
). Wszystko zależy od sposobu uruchamiania programu ctags, np. z systemowej konsoli, ze skrótu do programu czy z innego programu/skryptu. - path - ścieżka względna lub bezwzględna do pliku/plików lub folderu/folderów, które będą analizowane przy generowaniu tagów. Można podawać wielokrotnie (separatorem jest spacja). Znaki wieloznaczności
*
i?
są obsługiwane, ale tylko w nazwie pliku (a nie nazwie folderu/folderów), chyba że ścieżkę poprzedzimy argumentem--recurse
lub-R
, który zmieni tę zasadę i ostatni człon w ścieżce potraktuje jednocześnie jak folder lub plik. - argument - jeden lub więcej dodatkowych argumentów dostrajających działanie programu ctags.
Kilka uwag odnośnie ścieżek w argumencie path
(dotyczy także ścieżek w pliku wskazanym przez argument -L
) i ich wpływie na działanie programu ctags:
- Każda ścieżka w argumencie
path
to osobne zadanie dla programu ctags. Dotyczy to nawet sytuacji, kiedy ścieżki wskazują na te same zasoby, co doprowadzi do wygenerowania powtarzających się tagów. Dzięki domyślnemu sortowaniu (ręczna kontrola poprzez argument--sort
) tagi zostaną automatycznie wysprzątane ze wszystkich duplikatów. - Przy domyślnych ustawieniach postać ścieżki w argumencie
path
wpływa potem na postać ścieżki (tagfile
) w tagach wygenerowanych dla plików wskazywany przez tę ścieżkę. Jeśli w argumenciepath
użyjemy ścieżkę bezwzględną to w tagach zawsze pojawi się ścieżka bezwzględna. Zachowanie to jest respektowane osobno dla każdego przekazanego argumentupath
, gdzie ścieżki w wygenerowanych tagach użyją tego samego formatu, co w przekazanym argumencie (szczegóły). - Folderem odniesienia w ścieżkach względnych zawsze będzie bieżący folder roboczy. Będąc wewnątrz tego folderu można od razu podawać nazwy plików/folderów bez poprzedzania ich dodatkowymi znakami (np.
"plik.js"
zamiast".\plik.js"
). - Pierwszy znak
"\"
w ścieżce względnej zawsze wskazuje na folder najwyższego poziomu (tj. korzeń), w którym zawarty jest bieżący folder roboczy. Dzięki temu można pominąć literę dysku czy partycji, np."\test.js"
zamiast"C:\test.js"
. - Pojedynczy znak
"*"
oznacza wszystkie pliki z bieżącego folderu roboczego (bez jego podfolderów). Przy domyślnych ustawieniach użycie".\*"
zamiast"*"
powoduje, że ścieżki (tagfile
) w tagach zawierają początkowy znak".\"
, przykładowo".\test\plik.js"
zamiast"test\plik.js"
. - Ostatni człon w ścieżce względnej lub bezwzględnej (tj. to, co za ostatnim znakiem
"\"
), powinien jasno wskazywać na plik/pliki, które chcemy przetworzyć (nie może być pusty). Jeśli ostatnim członem w ścieżce będzie nazwa folderu to tagi nie zostaną wygenerowane dla jego zawartości, chyba że ścieżkę poprzedzimy argumentem--recurse
lub-R
, który zmieni tę zasadę i ostatni człon w ścieżce potraktuje jednocześnie jak folder lub plik. - Ścieżki zawierające spacje należy otaczać podwójnymi cudzysłowami (nie dotyczy ścieżek w pliku wskazanym przez argument
-L
). - W ścieżkach można stosować zamiennie znaki
"\"
i"/"
.
Prosty przykład:
ctags * :: wszystkie pliki bieżącego folderu roboczego (bez jego podfolderów) tagfile ma postać "plik.js"
ctags .\* :: jak wyżej, ale tagfile ma postać ".\plik.js"
ctags D:\test\* :: wszystkie pliki z folderu `test` (bez jego podfolderów) tagfile ma postać "D:\test\plik.js"
ctags D:\test\*.js :: jak wyżej, ale tylko pliki z rozszerzeniem js.
ctags D:\test\plik.js :: jak wyżej, ale tylko plik `plik.js`
ctags "D:\nowy test\*" :: konieczne otoczenie znakami "" ze względu na spację w folderze `nowy test`
ctags test :: plik `test`, ale nie przetworzy zawartości folderu `test`
ctags test\* :: wszystkie pliki z folderu `test` (bez jego podfolderów)
ctags -R test :: wszystkie pliki z folderu `test` i jego podfolderów oraz plik `test`
ctags -R test\* :: wszystkie pliki z folderu `test` i jego podfolderów
ctags test1* -R test2* :: dowolne pliki o nazwie `test1` i `test2` oraz wszystkie pliki z folderu `test2` i jego podfolderów
Pasek społecznościowy