*usr_26.txt*	Per Vim version 6.2.  Ultima modifica: 2002 Ott 29

		     VIM USER MANUAL - di Bram Moolenaar
		 Traduzione di questo capitolo: Ivan Morgillo

				  Ripetizione


Un lavoro di editing  sempre crudamente privo di struttura.  Una modifica
spesso necessita di venire eseguita molte volte.  In questo capitolo saranno
spiegati diversi modi utili per ripetere un cambiamento.


|26.1|	Ripetizioni in Visual mode
|26.2|	Aggiungere e sottrarre
|26.3|	Fare una modifica in pi files
|26.4|	Usare Vim in uno shell script

  Capitolo seguente: |usr_27.txt|  Comandi di ricerca e modelli
Capitolo precedente: |usr_25.txt|  Lavorare con testo formattato
	     Indice: |usr_toc.txt|

==============================================================================
*26.1*	Ripetizioni in Visual mode

Il Visual mode  molto pratico per effettuare correzioni su qualsiasi numero
di righe.  Potete vedere il testo evidenziato, cos potete verificare se siano
state modificate le linee giuste.  Ma effettuare la selezione richiede la
pressione di alcuni tasti.  Il comando "gv" seleziona nuovamente la stessa
area di testo.  Questo vi permette di fare un'altra operazione sullo stesso
testo.
   Supponiamo che abbiate alcune righe in cui vogliate sostituire "2001" con
"2002" e "2000" con "2001":

	The financial results for 2001 are better ~
	than for 2000.  The income increased by 50%, ~
	even though 2001 had more rain than 2000. ~
			2000		2001 ~
	income		45,403		66,234 ~

Per prima cosa sostituite "2001" con "2002".  Selezionate le righe in Visual
mode, e usate: >

	:s/2001/2002/g

Ora usate "gv" per riselezionare lo stesso testo.  Non importa dove si trovi
il cursore.  Usate ":s/2000/2001/g" per effettuare la seconda modifica.
   Ovviamente, potete ripetere queste sostituzioni diverse volte.
   
==============================================================================
*26.2*	Aggiungere e sottrarre

Quando ripetete il cambiamento di un numero in un altro, spesso avete uno
scostamento fisso.  Nell'esempio sopra,  stato aggiunto uno ad ogni anno.
Invece di scrivere un comando diverso per ogni anno, si pu usare il comando
CTRL-A.
   Usando lo stesso testo di prima, cercate un anno: >
    
	/19[0-9][0-9]\|20[0-9][0-9]

Ora premete CTRL-A. L'anno sar incrementato di uno:


	The financial results for 2002 are better ~
	than for 2000.  The income increased by 50%, ~
	even though 2001 had more rain than 2000. ~
			2000		2001 ~
	income		45,403		66,234 ~

Usate "n" per trovare l'anno successivo, e premente "." per ripetere il CTRL-A
("."  un po' pi veloce da scrivere). Ripetete "n" e "." per tutti gli
anni che ci sono.
   Suggerimento: impostate l'opzione 'hlsearch' per vedere i valori che state
per modificare, poi potrete guardare oltre e farlo pi velocemente.

L'aggiunta di numeri maggiori di uno pu essere fatta premettendo un numero
a CTRL-A.  Supponete di avere la seguente lista:

        1.  item four ~
        2.  item five ~
	3.  item six ~
		      
Spostate il cursore su "1." e scrivete: >
        
	3 CTRL-A

L'"1." cambier in "4,". Ancora, potete usare "." per ripetere l'operazione
sugli altri numeri.
numeri.	

Altro esempio:

	006	foo bar ~
	007	foo bar ~

Usando CTRL-A su questi numeri risulter:

	007	foo bar ~
	010	foo bar ~

7 pi uno fa 10? Questo  accaduto perch Vim ha riconosciuto "007" come un
numero in rappresentazione ottale, perch il primo numero  uno zero.  Questa
notazione  spesso usata nei programmi C.  Se non volete che un numero che
inizia per zero sia gestito come un numero ottale, usate questo: >

	:set nrformats-=octal

Il comando CTRL-X esegue le sottrazioni nello stesso modo.

==============================================================================
*26.3*	Fare una modifica in pi file

Supponiamo che abbiate una variabile di nome "x_cnt" e che vogliate cambiarla
in "x_counter".  Questa variabile viene usata in parecchi dei vostri file C.
Dovrete sostituirla in tutti i file.  Ecco come fare.
   Mettete tutti i file interessati nella lista degli argomenti: >

   	:args *.c
<
Questo comando trova tutti i file C e modifica il primo.  Ora potete eseguire
un comando di sostituzione su tutti gli altri file: >

	:argdo %s/\<x_cnt\>/x_counter/ge | update

Il comando ":argdo" prende come argomento un altro comando.  Questo comando
verr eseguito su tutti i file nella list degli argomenti.
   Il comando substitute "%s" che segue lavora su tutte le righe.  Esso trova
la parola "x_cnt" come "\<x_cnt\>".  Le "\<" e "\>" vengono usate per trovare
solo la parola esatta e non "px_cnt" o "x_cnt2".
   Le flag per il il comando includono "g" per sosotituire tutte le "x_cnt"
che si presentano nella stessa riga.  La flag "e"  usata per evitare un
messaggio di errore nel caso in cui "x_cnt" non appaia affatto nel file.
Diversamente ":argdo" abortirebbe la sua esecuzione se non venisse trovata
"x_cnt" nel primo file.
   Le "|" separano i due comandi.  Il comando "update" che segue salva il file
solo se  cambiato il suo contenuto.  Se nessuna "x_cnt" viene cambiata in
"x_counter", non succede niente.

C' anche il comando ":windo", che esegue il suo argomento in tutte le
finestre.  E ":bufdo" che esegue il suo argomento in tutti i buffer.  Fate
attenzione con quest'ultimo perch potreste avere pi file di quanti
pensiate nella lista dei buffer.  Fate un controllo con il comando ":buffers"
(o ":ls").

==============================================================================
*26.4*	Usare Vim da uno shell script

Supponiamo che abbiate molti file in cui avete bisogno di cambiare la stringa
"-person-" con "Jones" e poi stamparla.  Come lo fate?  Un modo  scrivere
molto.  L'altro modo  scrivere uno shell script che faccia il lavoro.
   L'editor Vim fa un lavoro superbo come editor screen-oriented quando si
usano i comandi del Normal mode.  Nei processi di batch, tuttavia, i comandi
del Normal mode non risultano chiari; cos qui userete invece l'Ex mode.
Questa modalit fornisce una gradevole interfaccia a linea di comando che
facilita l'immissione dei comandi in un file batch.  ("Ex command"  solo un
altro nome per un comando (:) da linea di comando).
   I comandi Ex mode di cui avete bisogno sono i seguenti: >

	%s/-person-/Jones/g
	write tempfile
	quit

Inserite questi comandi nel file "change.vim".  Ora per lanciare l'editor in
batch mode, usate questo shell script: >

	for file in *.txt; do
	  vim -e -s $file < change.vim
	  lpr -r tempfile
	done

Il ciclo for-done  un costrutto della shell per ripetere le due righe nel
mezzo, sino a che la variabile $file risulta ogni volta impostata con un nome
di file diverso.
   La seconda riga lancia l'editor Vim in modalit Ex (argomento -e) sul file
$file e legge i comandi dal file "change.vim".  L'argomento -s dice a Vim di
operare in silent mode.  In altre parole, non visualizza il :prompt, n
alcun altro prompt.
   Il comando "lpr -r tempfile" stampa il risultante "tempfile" e lo cancella
(ci che fa l'argomento -r).


LEGGERE DA STDIN

Vim pu leggere testo dallo standard input.  Dato che normalmente qui vegono
letti i comandi, voi dovete dire a Vim di leggere invece del testo.  Ci 
possibile passando l'argomento "-" al posto di un file.  Esempio: >
	
	ls | vim -

Ci vi permette di modificare l'output del comando "ls", senza prima salvare
il testo in un file.
   Se usate lo standard input per leggere del testo, potete usare l'argomento
"-S" per leggere uno script: >

	producer | vim -S change.vim -


SCRIPT E MODALITA' NORMALE

Se veramente volete usare i comandi del Normal mode in uno script, potete
farlo cos: >

	vim -s script file.txt ...
<
	Note:
	"-s" ha un significato diverso quando viene usato senza "-e".  Qui
	significa che utilizza il contenuto di "script" come un insieme di
	comandi del Normal mode.
	Quando  usato con "-e" significa che esegue in silenzio e non usa
	l'argomento seguente come nome di un file.

I comandi nello script vengono eseguiti nel modo in cui li avete scritti.  Non
dimenticate che una riga vuota viene interpretata come premere <Enter>.  In
Normal mode esso sposta il cursore sulla riga successiva.
   Per realizzare lo script potete creare il file script e scrivervi i
comandi.  Avete bisogno di immaginare quale possa essere il risultato, il che
pu essere un po' difficile.  Un altro modo consiste nel registrare i comandi
mentre li eseguite manualmente.  Questo  quanto dovete fare: >

	vim -w script file.txt ...

Tutti i tasti che verranno premuti saranno scritti nello "script".  Se fate
un piccolo sbaglio potete pure continuare e ricordarvi di modificare lo script
in seguito.
   L'argomento "-w" aggiunge tutto ad uno script esistente.  Va bene quando
volete registrare lo script un p alla volta.  Se voleste iniziare dal
niente e scrivere tutto dall'inizio, usate l'argomento "-W".  Sovrascriver
ogni file esistente.

==============================================================================

Capitolo seguente: |usr_27.txt|  Comandi di ricerca e modelli

Copyright: vedere |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:

Segnalare refusi a Bartolomeo Ravera - E-mail: barrav at libero.it
