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.

Oznaczone jako → 
Share →