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.