Coś dla programistów. Najpopularniejszy skrypt na vim-online. Taglist służy do szybkiego przemieszczania się pomiędzy funkcjami, definicjami, i innymi elementami projektu.

Skrypt tygodnia: taglist

Nazwa: taglist
Autor: Yegappan Lakshmanan (yegappan AT yahoo DOT com)
Opisywana wersja: 3.3

Wstęp


Coś dla programistów. Najpopularniejszy skrypt na vim-online. Taglist służy do szybkiego przemieszczania się pomiędzy funkcjami, definicjami, i innymi elementami projektu.
Wiele interesujących możliwości:

  • Otwiera poziome/pionowe okno z listą znaczników (funkcji, klas, struktur, zmiennych, etc.) zdefiniowanych w bieżącym pliku.
  • Grupuje znaczniki według typu i pokazuje je w zwijalnym drzewku.
  • Automatycznie uaktualnia okno taglist w miarę przełączania się między plikami.
  • Kiedy otwierasz nowe pliki, znaczniki w nich zdefiniowane dodawane są do istniejącej listy plików i grupowane według nazwy pliku.
  • Po wybraniu nazwy znacznika kursor umieszczany jest w odpowiednim miejscu pliku źródłowego.
  • Podświetlanie nazwy bieżącego znacznika.
  • Pokazuje prototyp znacznika z okna listy znaczników.
  • Lista znaczników może być sortowana alfabetycznie albo wg numerów linii.
  • Lista znaczników może być zapisana do pliku a potem przywrócona.
  • Wspierane języki: asembler, ASP, awk, Beta, C, C++, C#, Cobol, Eiffer, Erlng, Fortran, HTML, Java, Javascript, Lisp, Lua, Make, Pascal, Perl, PHP, Python, Rexx, Ruby, Scheme, Shell, Slang, SML, SQL, TCL, Verilog, Vim, Yacc.
  • Łatwo rozszerzalny by wspierać nowe języki, lub dostosowywać istniejące wsparcie do indywidualnych potrzeb.
  • Działa zarówno w konsoli jak i w GUI.

Taglist w internecie

Taglist jest na tyle rozbudowanym projektem, że istnieje nie tylko na vim-online.
Posiada własną stronę domową oraz listę dyskusyjną.

Wymagania


Podobnie jak omawiany tydzień temu vimspell, taglist jest zależny od zewnętrznego programu. W tym wypadku to exuberant-ctags. Potrzebna jest wersja 5.0 lub nowsza.
Uwaga: W niektórych dystrybucjach Linuksa binarka ctags dołączana jest do jednego z pakietów wspomagających (x)emacsa. Jest to dość prymitywna wersja exuberant-ctags, niewystarczająca do prawidłowego działania taglist (oraz innego wykorzystania :tag w Vimie).
taglist.vim wymaga Vima w wersji 6.0 lub nowszej oraz poprawnego ustawienia kilku opcji. Upewnij się, że:

  • włączone jest wykrywanie typu pliku: filetype on w .vimrc
  • wyłączona jest kompatybilność z VI – set nocompatible
  • masz wsparcie dla funkcji system(), kompilacja big (standardowa w większości dystrybucji Linuksa oraz dostępnych binarek dla innych systemów)
  • nie ma flagi 'C’ w 'cpoptions'

Wszystkie te opcje są ustawione odpowiednio w 90% przypadków. Jednak zanim zaczniesz kląć, że coś nie działa upewnij się co do nich.

Instalacja

  1. Taglist rozprowadzany jest w wersji archiwum .zip. Zapisz je w do jednego z katalogów: $HOME/.vim, $HOME/vimfiles, $VIM/vimfiles i tam rozpakuj. powinny pojawić się dwa pliki:

    plugin/taglist.vim
    główny plik wtyczki
    doc/taglist.txt
    plik z dokumentacją
  2. Uruchom Vima, wydaj polecenie :helptags doc. Dzięki temu pomoc zostanie zainstalowana (szczegóły :help add-local-help).
  3. Jeśli nie jesteś pewien czy exuberant-ctags jest w twojej ścieżce wyszukiwania programów, ustaw .vimrc zmienną Tlist_Ctags_Cmd.
  4. Jeśli twoja konsola/terminal nie wspiera zmiany szerokości okna, ustaw zmienną Tlist_Inc_Winwidth na 0 w pliku .vimrc
  5. Uruchom Vima na nowo.
  6. Możesz już używać polecenia :Tlist do otwarcia/zamknięcia okna listy znaczników oraz :help taglist do uzyskania pomocy na temat obsługi wtyczki.

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)

Tlist_Ctags_Cmd
Jedna z najważniejszych opcji, wskazuje położenie programu exuberant-ctags.
Tlist_Auto_Open
Okno znaczników zostanie automatycznie otwarte przy uruchomieniu Vima.
Domyślnie: 0
Tlist_Display_Prototype
Zamiast nazwy funkcji pokaż prototyp.
Domyślnie: 0
Tlist_Inc_Width
Domyślnie, kiedy okno jest węższe niż 100 i okno znaczników jest otwierane pionowo, szerokość okna zostanie zwiększona by pomieścić nowe okno. Uwaga: na starszych terminalach może być to przyczyną kłopotów i należy wtedy wyzerować tę opcję:
:let Tlist_Inc_Width = 0
Domyślnie: 1
Tlist_WinWidth, Tlist_WinHeight
Szerokość, wysokość okna znaczników (w zależności od tego jak jest otwierane).
Domyślnie: 30 i 10
Tlist_File_Fold_Auto_Close
Domyślnie wszystkie fałdy, w których znajdują się znaczniki pozostają otwarte dla wszystkich odwiedzonych plików. Jeśli włączysz tę opcję fałdy będą otwarte tylko dla widocznych plików.
Domyślnie: 0

Klawiszologia


Na szczęście taglist nie przeciąża użytkownika masą skrótów klawiaturowych. Do użytkowania właściwie nie wystarczy żadnego z nich pamiętać. Pomoc dla nich jest łatwo dostępna w oknie znaczników przy pomocy ?. Jedynym minusem jest zmiana zachowania <Space>. Normalnie otwiera ona fałdę, ale w taglist pokazuje prototyp funkcji znacznika.

<CR>
Skocz do miejsca gdzie znacznik jest zdefiniowany.
o
Skocz do miejsca gdzie znacznik jest zdefiniowany w nowym oknie.
p
Pokaż definicję w oknie pliku, ale niech kursor pozostanie w oknie znaczników.
<Space>
Pokaż prototyp znacznika pod kursorem.
u
Uaktualnij znaczniki.
s
Zmień porządek sortowania (według nazwy lub kolejności).
d
Usuń znaczniki dla pliku pod kursorem.
x
Powiększ/zmniejsz okno znaczników.
+
Otwórz fałdę.
-
Zamknij fałdę.
*
Otwórz wszystkie fałdy.
=
Zamknij wszystkie fałdy.
[[
Skocz do początku poprzedniego pliku.
]]
Skocz do początku następnego pliku.
q
Zamknij okno znaczników.
?
Pokaż pomoc.

Dodatkowo można dodać mapowania do najbardziej popularnych poleceń, np.:
nnoremap <silent> <F8> :Tlist<CR>

Używanie


Bardzo proste. Po uruchomieniu Vima z plikiem, którego typ jest wpierany przez exuberant-ctags wystarczy wydać polecenie :Tlist, żeby otworzyć okno znaczników. W nim przemieszczać się można dzięki jk i wybierać znacznik przez <CR> lub myszką.
Po otwarciu nowego pliku zostanie on zanalizowany i jego znaczniki zostaną dodane do okna.
Miłym dodatkiem jest podświetlanie znacznika w obszarze, którego jest kursor. Stanie się to po pewnym czasie kiedy kursor jest nieruchomy. Długość tego okresu regulowana jest opcją 'updatetime'. Nie jest rozsądne ustawianie tej opcji na bardzo krótki czas. Lepiej jest podmapować jeden z klawiszy do polecenia :TlistSync wymuszającego synchronizację okna znaczników z oknem gdzie jest kursor.
Zmiany w pliku nie są automatycznie odzwierciedlane w oknie znaczników. Aby pokazać nowe znaczniki należy wcisnąć u w oknie znaczników, albo w samym pliku wydać polecenie :TlistUpdate.

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

Oznaczone jako → 
Share →