Kod nie powinien tylko działać, powinien być także czytelny – zmienne wyrównane wg znaku przypisania, komentarze wyrównane, etc. Bardzo pracochłonne jest wykonanie tego ręcznie. Wtedy z pomocą przychodzi Align.

Skrypt tygodnia: Align

Nazwa: Align

Autor: Charles E. Campbell, Jr. ( NdrOchip AT ScampbellPfamily.AbizM )

Opisywana wersja: 24/28

Wstęp

Kod nie powinien tylko działać, powinien być także czytelny – zmienne wyrównane wg znaku przypisania, komentarze wyrównane, etc. Bardzo pracochłonne jest wykonanie tego ręcznie. Wtedy z pomocą przychodzi Align.

Skrypt pozwala na automatyczne wyrównywanie w rozmaity sposób wielu różnych typów tekstu. Możliwe jest nawet proste przerobienie deklaracji zmiennych. Align jest bardzo rozbudowanym skryptem o bardzo rozbudowanych możliwościach, dlatego w tym wypadku szczególnie zachęcam do przestudiowania dokumentacji gdyż w niniejszym tekście możliwe jest tylko zasygnalizowanie części funkcjonalności.

Wymagania

Vim 6.0, wersja big

Instalacja

Skopiuj plik archiwum do katalogu ~/.vim i tam go rozpakuj tar jxvf Align.tar.bz2. Następnie uruchom Vima i wydaj polecenie :helptags ~/.vim/doc aby zainstalować dokumentację.

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)

Klawiszologia

Align ma bardzo dużą liczbę skrótów klawiszowych, dokładne opisywanie ich wszystkich nie ma większego sensu – zwłaszcza że są one w dokumentacji dokładnie objaśnione z jasnymi przykładami. Wybrałem tylko najciekawsze – zarówno pokazujące możliwości jak i najbardziej przydatne (w przykładach oznacza tak naprawdę ):

a<
Wyrównuje wg <<:

  		cin << x;  		cin      << y;  		cout << "this is x=" << x;  		cout << "but y=" << y << "is not";  	

Zaznacz tekst V i aplikuj skrót:

  		cin  << x;  		cin  << y;  		cout << "this is x=" << x;  		cout << "but y="     << y  << "is not";  	
abox
Zamyka wybrany tekst w komentarzu:

  		This is some plain text  		which will  		soon be surrounded by a  		comment box.  	

Zaznacz tekst V i aplikuj skrót:

  		/***************************  		 * This is some plain text *  		 * which will              *  		 * soon be surrounded by a *  		 * comment box.            *  		 ***************************/  	
acom
Wyrównuje komentarze:

  		if(itworks) { /* this */  			then= dothis; /* is a */  			} /* set of three comments */  	

Zaznacz tekst V i aplikuj skrót:

  	        if(itworks) {         /* this                  */  	                then= dothis; /* is a                  */  	                }             /* set of three comments */  	
anum
Wyrównuje kolumny liczb (rozpoznaje zarówno . jak i ,):

  		 -1.234 .5678 -.901e-4  		 1.234 5.678 9.01e-4  		 12.34 56.78 90.1e-4  		 123.4 567.8 901.e-4  	

Uwaga, tutaj trzeba w pierwszej linii wykonać ma, przejść do ostatniej i dopiero wtedy wykonać skrót - nie poprzez tryb Visual:

  		  -1.234    .5678   -.901e-4  		   1.234   5.678    9.01e-4  		  12.34   56.78    90.1e-4  		 123.4   567.8    901.e-4  	
tt
Fragment tabelki w LaTeXu:

  	   one&two&three\ hline  	   four&five&six\  	   seven&eight&nine\  	

Zaznacz tekst V i aplikuj skrót:

  	   one   & two   & three \ hline  	   four  & five  & six   \  	   seven & eight & nine  \  	

To były najciekawsze przykłady, a praktycznych możliwości jest więcej.

Używanie

Align udostępnia 2 podstawowe polecenia :Align i :AlignCtrl. Można je podsumować tak - AlignCtrl służy do szybkiego kontrolowania opcji tak by nie trzeba było przedefiniowywać mnóstwa zmiennych, Align zaś wykonuje samo wyrównywanie.

Weźmy dwie tabelki z dokumentacji pokazujące możliwości AlignCtrl:

   +-------------+------------------+---------------------+----------------------+   | Oryginalne  | AlignCtrl = = + -| AlignCtrl = =       | AlignCtrl C = + -    |   +-------------+------------------+---------------------+----------------------+   |a = b + c - d|a = b + c - d     |a = b + c - d        |a = b         + c - d |   |x = y = z + 2|x = y = z + 2     |x = y         = z + 2|x = y = z     + 2     |   |w = s - t = 0|w = s - t = 0     |w = s - t     = 0    |w = s - t = 0         |   +-------------+------------------+---------------------+----------------------+  
   +------------+-------------------+-------------------+-------------------+   | Oryginalne |  AlignCtrl l      | AlignCtrl r       | AlignCtrl lr      |   +------------+-------------------+-------------------+-------------------+   | a=bb=ccc=1 |a   = bb  = ccc = 1|  a =  bb = ccc = 1|a   =  bb = ccc = 1|   | ccc=a=bb=2 |ccc = a   = bb  = 2|ccc =   a =  bb = 2|ccc =   a = bb  = 2|   | dd=eee=f=3 |dd  = eee = f   = 3| dd = eee =   f = 3|dd  = eee = f   = 3|   +------------+-------------------+-------------------+-------------------+   | Wyrównanie |l     l     l     l|  r     r     r   r|l      r   l     r|   +------------+-------------------+-------------------+-------------------+  

Po ustawieniu AlignCtrl samo przeformatowanie wykonuje się poprzez zaznaczenie wybranego fragmentu i wydanie polecenia Align: :'<,'>Align.

Podsumowanie

Skrypt o dużych możliwościach, bardzo wspomagający utrzymywanie kodu w czytelnym stanie.

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

Oznaczone jako → 
Share →