Kodując często trzeba się przełączać między plikiem właściwym a nagłówkowym. W większości wypadków różnią się one jedynie rozszerzeniem. Ten drobny skrypt znakomicie tę sytuację wykorzystuje upraszczając przełączanie się między plikami. Jego nazwa jest równie prosta – a.vim .

Skrypt tygodnia: a

Nazwa: a
Autor: Michael Sharpe ( feline AT irendi DOT com )
Opisywana wersja: 2.7

Wstęp


Kodując często trzeba się przełączać między plikiem właściwym a nagłówkowym. W większości wypadków różnią się one jedynie rozszerzeniem. Ten drobny skrypt znakomicie tę sytuację wykorzystuje upraszczając przełączanie się między plikami. Jego nazwa jest równie prosta – a.vim .

Wymagania


Vim skompilowany w wersji big, wersja przynajmniej 6.0.

Instalacja


Plik jest spory, ale ponieważ może się przydać przy wielu różnych typach plików można go umieścić w ~/.vim/plugin.

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)
Konfiguracja w zasadzie nie jest potrzebna, wartości domyślne wystarczające są do pracy, warto jednak wiedzieć o możliwościach rozszerzenia funkcjonalości.
a.vim zapewnia konfigurację dla: C, C++, ADA, PSL7, lex i yacc. Domyślne rozszerzenia można definiując np. w ~/.vimrc:
let g:alternateExtensions_CPP = "inc,h,H,HPP,hpp"
Rozszerzenie funkcjonalności o nowe języki jest odrobinę trudniejsze. Podstawową wadą jest konieczność modyfikacji samego skryptu co może w przyszłości spowodować utratę zmian w przypadku machinalnego nadpisania przy ściąganiu nowej wersji skryptu.
Prostym przykładem jest PHP. Najczęstszym rozszerzeniem dla plików pomocniczych jest inc (choć wykorzystywane szerzej niż prosta zależność między .cpp i .h – ale to tylko przykład). W takim wypadku należy do a.vim dodać następujące linijki:
" Moja modyfikacja dla php
call <SID>AddAlternateExtensionMapping('php',"inc")
call <SID>AddAlternateExtensionMapping('inc',"php")

Dodaj te wiersze po natywnych definicjach. Pierwsza linia, zakomentowana " służy do przypomnienia, że nie jest to natywne rozwiązanie. Zauważyć należy krzyżowe deklaracje rozszerzeń plików. Bez tego :A przełączałby z .php do .inc, ale nie w drugą stronę. Należy w ten sposób zdefiniować każde możliwe rozszerzenie. Wykorzystując np. dodatkowo php4 zestaw wyglądałby tak:
" Moja modyfikacja dla php
call <SID>AddAlternateExtensionMapping('php',"inc")
call <SID>AddAlternateExtensionMapping('inc',"php,php4")
call <SID>AddAlternateExtensionMapping('php4',"inc")

Klawiszologia


Nie ma zdefiniowanych skrótów klawiszowych.

Używanie


Skrypt udostępnia jedynie trzy polecenia:

:A
Przejdź do pliku alternatywnego.
:AS
Podziel ekran i przejdź do pliku alternatywnego.
:AV
Podziel ekran pionowo i przejdź do pliku alternatywnego.

Jednak te trzy polecenia pozwalają na bardzo przyjemną obsługę plików właściwych i nagłówkowych.
Edytując plik.cpp i wydając polecenie :A przeniesieni zostaniemy do plik.h. Jeśli wykonam :AS ekran zostanie podzielony na połowy (jak w poleceniu :split) i w drugiej połowie zostanie otwarty plik.h. Wrócić można tak samo.
Prawdziwą miodność widać dopiero przy edycji wielu buforów naraz w kilku oknach. Mając układ (X to kursor):

  +--------------------------------------------------------+  |/* plik jeden.cpp */                                    |  |X                                                       |  |jeden.c=================================================|  |/* plik drugi.cpp */                                    |  |~                                                       |  |drugi.cpp===============================================|  |/* plik jeden.h */                                      |  |~                                                       |  |jeden.h=================================================|  |/* plik drugi.h */                                      |  |~                                                       |  |drugi.h=================================================|  |:A                                                      |  +--------------------------------------------------------+  

I wydając oba dostępne polecenia bieżący bufor nie zostanie zmieniony lub podzielony. Kursor zostanie przeniesiony do bufora pliku jeden.h zapobiegając w ten sposób powiększaniu bałaganu w terminalu (lub oknie Gvima).

Podsumowanie


Skrypt pozwala na szybkie i wygodne przełączanie się między plikami. Godne pochwały jest inteligentne zachowanie przy wielu otwartych oknach i buforach (także tych ukrytych). Do minusów należy zaliczyć brak dokumentacji w formacie vim-help oraz brak możliwości rozszerzenia funkcjonalności bez modyfikacji samego skryptu.

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

Share →