*usr_08.txt* Per Vim version 7.2. Ultima modifica: 2006 Lug 18 VIM USER MANUAL - di Bram Moolenaar Traduzione di questo capitolo: Valentino Squilloni Dividere le finestre Poter osservare due diversi file, uno sopra l'altro. Oppure vedere contemporaneamente due diversi punti dello stesso file. Confrontare due file diversi mettendoli l'uno affianco all'altro. Tutto ciò è possibile dividendo in più parti la finestra. |08.1| Dividere una finestra |08.2| Dividere una finestra aprendo un altro file |08.3| Dimensioni della finestra |08.4| Tagli verticali |08.5| Muovere le finestre |08.6| Comandi per tutte le finestre |08.7| Evidenziare le differenze con vimdiff |08.8| Varie ed eventuali |08.9| Linguette Capitolo seguente: |usr_09| Usare la GUI Capitolo precedente: |usr_07| Elaborare più di un file Indici: |usr_toc|
*08.1* Dividere una finestra Il modo più semplice per aprire una nuova finestra è quello di usare il seguente comando:
:split
Questo comando divide lo schermo in due finestre e posiziona il cursore nella finestra più in alto: +----------------------------------+ |
/* file one.c */
| |~
| |~
| |one.c=============================
| |/* file one.c */
| |~
| |one.c=============================
| || +----------------------------------+ Quello che vedrete qui sono due finestre aperte sullo stesso file. La linea con "====" è la linea di status. Essa ci dà informazioni sulla finestra sovrastante. (In pratica la linea di status si presenterà con colori opposti a quelli dello schermo.) Le due finestre permettono di vedere due parti dello stesso file. Ad esempio, sarà possibile far mostrare alla finestra in alto la dichiarazione delle variabili di un programma, ed a quella in basso il codice che utilizza quelle variabili. Il comando
CTRL-W
w viene usato per saltare fra le finestre. Se siete nella finestra in alto,CTRL-W
w salterà alla finestra sottostante. Se siete nell'ultima finestra (quella più in basso)CTRL-W
w salterà alla prima. (CTRL-W
CTRL-W
fa la stessa cosa, nel caso il tasto CTRL venga rilasciato un pelo troppo tardi.) CHIUDERE LA FINESTRA Per chiudere una finestra, si usa il comando:
:close
In realtà, ogni comando che chiude l'editing di un file funzionerà, come ":quit" e "ZZ". Ma ":close" previene l' uscita accidentale da Vim quando si chiude l'ultima finestra. CHIUDERE TUTTE LE ALTRE FINESTRE Se avete aperto un mucchio di finestre, ma ora volete concentrarvi solo su una di esse, questo comando vi sarà utile:
:only
Questo chiuderà tutte le finestre, a parte quella corrente (quella dove è presente il cursore). Se qualcuna delle altre finestre ha avuto dei cambiamenti, avrete un errore e quelle finestre non verranno chiuse.
*08.2* Dividere una finestra aprendo un altro file Il comando seguente apre una seconda finestra e inizia ad editare in essa il file dato:
:split two.c
Se state editando one.c, allora il risultato del comando sarà circa così: +----------------------------------+ |
/* file two.c */
| |~
| |~
| |two.c=============================
| |/* file one.c */
| |~
| |one.c=============================
| || +----------------------------------+ Per aprire una finestra su un nuovo file vuoto, usate questo:
:new
Potete ripetere i comandi ":split" e ":new" per creare quante finestre volete.
*08.3* Dimensioni della finestra Il comando ":split" può avere un argomento numerico. Se viene specificato, questo sarà l'altezza della nuova finestra. Per esempio, il comando seguente apre una nuova finestra alta tre linee e inizia a editarvi il file alpha.c:
:3split alpha.c
Per le finestre già esistenti potete cambiarne le dimensioni in diversi modi. Se avete un mouse funzionante, è facile: basta muovere il cursore sulla linea di status che separa le due finestre, e trascinarla in alto o in basso. Per aumentare la dimensione di una finestra:
CTRL-W
+Per diminuirla:
CTRL-W
-
Entrambi i comandi prendono un numero e aumentano o diminuiscono l'altezza della colonna di quel numero di linee. In questo modo "4
CTRL-W
+" da sì che la finestra diventi 4 linee più alta. Per impostare l'altezza della finestra ad un numero specificato di linee:
{altezza}
CTRL-W
_Cioè: un numero
{altezza}
,CTRL-W
e un underscore (il tasto - con Shift premuto sulle tastiere English-US). Per rendere una finestra più alta possibile, si usa il comandoCTRL-W
_ senza un numero prima. USARE IL MOUSE In Vim potete fare un sacco di cose molto velocemente direttamente con la tastiera. Sfortunatamente, i comandi per ridimensionare la finestra richiedono numerose pressioni dei tasti. In questo caso, usare il mouse è più veloce. Posizionate il mouse sulla linea di status. Ora premete il tasto sinistro del mouse e trascinate. La linea di status si muoverà, facendo diventare la finestra da una parte più alta e quella dall'altra più bassa. OPZIONI L'opzione 'winheight' è usata per impostare l'altezza minima desiderata di una finestra e 'winminheight' per l'altezza minima consentita di una finestra. Allo stesso modo c'è 'winwidth' per la larghezza minima desiderata e 'winminwidth' per la minima larghezza consentita. L'opzione 'equalalways', quando è impostata, fa sì che Vim aggiusti le altezze delle finestre quando viene chiusa o aperta una finestra per uniformarle.
*08.4* Tagli verticali Il comando ":split" crea la finestra nuova sopra a quella corrente. Invece per far comparire la nuova finestra alla sinistra di quella già presente, si usa:
:vsplit
oppure:
:vsplit two.c
Il risultato sarà simile a questo: +--------------------------------------+ |
/* file two.c */
|/* file one.c */ | |~
|~ | |~
|~ | |~
|~ | |two.c===============one.c=============
| || +--------------------------------------+ In pratica, le colonna di | al centro dello schermo sarà in colori opposti a quelli dello schermo. Viene chiamata separatore verticale. Serve a separare le due finestre alla destra e alla sinistra di essa. C'è anche il comando ":vnew", che taglia verticalmente la finestra aprendo un nuovo file vuoto. Un altro modo di ottenere ciò:
:vertical new
Il comando ":vertical" può esser inserito prima di un altro comando che divide una finestra. Questo farà sì che quel comando divida la finestra in verticale invece che in orizzontale. (Se il comando non divide finestre, non verrà influenzato da esso.) MUOVERSI FRA LE FINESTRE Poiché si può dividere più volte la finestra in orizzontale e in verticale, è possibile creare quasi ogni tipo di schema. Potete poi usare questi comandi per muovervi da una finestra all'altra:
CTRL-W
h muove verso la finestra a sinistraCTRL-W
j muove verso la finestra di sottoCTRL-W
k muove verso la finestra di sopraCTRL-W
l muove verso la finestra a destraCTRL-W
t muove verso la finestra più in altoCTRL-W
b muove verso la finestra più in bassoNote
rete che le stesse lettere sono usate per muovere il cursore. E anche le frecce possono essere usate, se preferite. Ulteriori comandi per muoversi verso altre finestre: |Q_wi|..
*08.5* Muovere le finestre Avete tagliato alcune finestre, ma ora sono nel posto sbagliato. Quindi avrete bisogno di un comando per muovere la finestra in un altro posto. Ad esempio, avete tre finestre messe in questo modo: +----------------------------------+ |/* file two.c */
| |~
| |~
| |two.c=============================
| |/* file three.c */
| |~
| |~
| |three.c===========================
| |/* file one.c */
| |~
| |one.c=============================
| || +----------------------------------+ Chiaramente l'ultima in basso dovrebbe stare nel posto più in alto. Allora muovetevi verso quella finestra (usando
CTRL-W
w) e usate questo comando:
CTRL-W
KQuesto comando usa la lettera maiuscola K. Quello che succede è che la finestra in questione viene spostata nel punto più alto.
Note
rete che K è usata ancora per muoversi verso l'alto. Se ci sono dei tagli verticali,CTRL-W
K muoverà la finestra corrente nel punto più in alto e le farà occupare l'intera larghezza della finestra di Vim. Se questo è il vostro layout: +-------------------------------------------+ |/* two.c */
|/* three.c */ |/* one.c */
| |~
|~ |~
| |~
|~ |~
| |~
|~ |~
| |~
|~ |~
| |~
|~ |~
| |two.c=========three.c=========one.c========
| || +-------------------------------------------+ Allora usando
CTRL-W
K sulla finestra al centro (three.c) avrà come risultato: +-------------------------------------------+ |/* three.c */
| |~
| |~
| |three.c====================================
| |/* two.c */
|/* one.c */ | |~
|~ | |two.c==================one.c===============
| || +-------------------------------------------+ Gli altri tre comandi simili (e probabilmente ora già ve li immaginate) sono:
CTRL-W
H muove la finestra nel punto più a sinistraCTRL-W
J muove la finestra nel punto più in bassoCTRL-W
L muove la finestra nel punto più a destra
*08.6* Comandi per tutte le finestre Quando avete molte finestre aperte e volete uscire da Vim, potete chiudere separatamente ogni finestra. Un modo più veloce per fare la stessa cosa è il comando:
:qall
Che sta per "quit all". Se qualche finestra contiene delle modifiche, Vim non uscirà. Il cursore sarà automaticamente posizionato in una di queste finestre che hanno subito modifiche. Potete usare ":write" per salvare i cambiamenti fatti, oppure ":quit!" per buttarli via. Se sapete che ci sono più finestre da salvare, e le volete salvare tutte, usate questo comando:
:wall
Che sta per "write all". In realtà va a scrivere solo quei file che hanno subito delle modifiche. Vim sa che non ha senso scrivere un file che non è stato modificato. C'è anche la combinazione di ":qall" e ":wall": il comando "scrivi tutto ed esci":
:wqall
Che salva tutti i file modificati e chiude Vim. Infine, c'è un comando per chiudere Vim e ignorare tutti i cambiamenti fatti:
:qall!
Attenzione, non c'è il modo di annullare questo comando! APRIRE UNA FINESTRA PER OGNI ARGOMENTO Per far sì che Vim apra una finestra per ogni file, lo si fa partire con l'argomento "-o":
vim -o one.txt two.txt three.txt
Il risultato sarà: +-------------------------------+ |
file one
| |~
| |one========================
| |file two
| |~
| |two========================
| |file three
| |~
| |three======================
| || +-------------------------------+ L'argomento "-O" è usato per avere finestre separate verticalmente. Quando Vim è già in esecuzione, il comando ":all" apre una finestra per ogni file nella lista degli argomenti. ":vertical all" fa la stessa cosa ma con tagli verticali.
*08.7* Evidenziare le differenze con vimdiff C'è un modo speciale di far partire Vim, che mostra le differenze fra due file. Prendiamo ad esempio il file "main.c" e inseriamo qualche carattere in una linea. Salviamo il file con l'opzione 'backup' attiva, così che il file di backup "main.c~" conterrà la versione precedente del file. Scrivete questo comando in una shell (non in Vim):
vimdiff main.c~ main.c
Vim partirà con due finestre una al fianco dell'altra. Voi vedrete solo la linea in cui avete aggiunto i caratteri, e qualche linea sopra e sotto di essa. VV VV +-----------------------------------------+ |
+ +--123 lines: /* a
|+ +--123 lines: /* a| <- piegatura |testo
| testo | |testo
| testo | |testo
| testo | |testo
| testo cambiato | <- linea cambiata |testo
| testo | |testo
| ------------------| <- linea cancellata |testo
| testo | |testo
| testo | |testo
| testo | |+ +--432 lines: test
|+ +--432 lines: test| <- piegatura |~
| ~ | |~
| ~ | |main.c~==============main.c==============
| || +-----------------------------------------+ (Questa figura non mostra le parti evidenziate, usate direttamente vimdiff per una resa migliore.) Le linee che non erano state modificate sono collassate in una riga. Questo è chiamato una piega chiusa (closed fold). Nella figura sono indicate con "<- piegatura". Sebbene la prima linea piegata rappresenti 123 linee di testo, queste linee sono uguali in entrambi i file. La linea contrassegnata con "<- linea cambiata" è evidenziate, e il testo inserito viene visualizzato in un altro colore. Questo mostra in modo chiaro le differenze fra i due file. La linea che è stata cancellata è mostrata con "---" nella finestra di main.c. Notate il contrassegno "<- linea cancellata" nella figura. Questi caratteri non sono veramente lì. Servono solo a riempire main.c, in modo che mostri lo stesso numero di linee dell'altra finestra. LA COLONNA PIEGA Ogni finestra ha una colonna sulla sinistra con lo sfondo leggermente differente. Nella figura sopra queste colonne sono indicate con "VV".
Note
rete un carattere "+" all'inizio di ogni piega chiusa. Muovete il mouse su quel "+" e fate clic col pulsante sinistro. La piega si distenderà, e potrete vedere il testo che contiene. La colonna piega contiene un segno di "-" per ogni piegatura aperta. Se fate clic su quel simbolo meno, la piega si chiuderà. Ovviamente questo sarà possibile solo se avete un mouse funzionante. Altrimenti, potete comunque usare "zo" per aprire una piegatura, e "zc" per chiuderla. EVIDENZIARE LE DIFFERENZE IN VIM La modalità diff può essere attivata in un altro modo, direttamente da dentro a Vim. Editate il file "main.c", poi dividete la finestra e mostrate le differenze:
:edit main.c
:vertical diffsplit main.c
Il comando ":vertical" viene usato per far sì che la finestra venga tagliata verticalmente. Se lo omettete, avrete un taglio orizzontale. Se avete un file patch o diff, potete usare un terzo modo per far partire la modalità diff. Innanzitutto editate il file a cui le patch andranno applicate. Poi dite a Vim il nome del file di patch:
:edit main.c
:vertical diffpatch main.c.diff
ATTENZIONE: Il file patch deve contenere solo una patch per il file che state editando. Altrimenti avrete molti messaggi di errore, e alcuni file potrebbero essere aggiornati dalla patch in modo inaspettato. La patch verrà applicata solo al file all'interno di Vim. Il file sul vostro hard disk resterà immutato (fino a che deciderete di salvare il file). TENERE UNITO LO SCORRIMENTO Quando i file hanno più di una variazione, potete scrollare nel solito modo. Vim cercherà di tenere allineato l'inizio di entrambe le finestre, per mostrare semplicemente le differenze, lato a lato. Se volete disabilitare temporaneamente questa caratteristica, usate questo comando:
:set noscrollbind
SALTARE ALLE DIFFERENZE Se in qualche maniera avete disabilitato la funzione di piegatura, potrebbe essere difficile trovare le differenze. Usate questo comando per saltare in avanti alla prossima differenza:
]c
Per andare nell'altra direzione (verso l'alto) usare :
[c
Mettere come prefisso un numero per saltare più volte. ELIMINARE LE DIFFERENZE Potete spostare delle parti di testo da una finestra all'altra. Questo fa sì che siano rimosse le differenze, oppure che siano aggiunte le parti nuove. Vim non tiene aggiornate le differenze in ogni occasione. Per aggiornarle, usate questo comando:
:diffupdate
Per eliminare una differenza, potete spostare il testo all'interno di un blocco evidenziato da una finestra all'altra. Prendete ad esempio i file "main.c" e "main.c~" citati precedentemente. Spostate il cursore sulla finestra di sinistra, sopra alla linea che nell'altra finestra era stata cancellata. Ora usate questo comando:
dp
Le differenze verranno rimosse mettendo il testo della finestra corrente nell'altra finestra. "dp" sta per "diff put" (inserisci la differenza). Potete anche fare la stessa cosa in un'altra maniera. Spostate il cursore nella finestra di destra, sulla linea dove era stati inseriti dei "cambiamenti". Ora usate questo comando:
do
Le differenze in questo caso saranno rimosse prendendo la parte di testo dall'altra finestra. Poiché a questo punto non ci saranno più differenze, Vim racchiuderà tutto il testo in una piega chiusa. "do" sta per "diff obtain" (prendi le differenze). "dg" sarebbe stato meglio, ma aveva già un significato diverso ("dgg" cancella tutto dal cursore fino alla prima linea compresa). Per maggiori dettagli sulla modalità diff, vedere |vimdiff|.
*08.8* Varie ed eventuali L'opzione 'laststatus' può essere usata per specificare se e quando l'ultima finestra debba avere la linea di status: 0 mai 1 solo quando ci sono finestre divise (default) 2 sempre Molti comandi che editano un altro file hanno una variante che divide la finestra. Per i comandi nella linea dei comandi questo viene fatto preponendo una "s". Ad esempio: ":tag" salta ad un certo punto contrassegnato, ":stag" divide in due la finestra e salta a quel punto. Per i comandi in modalità normale viene preposta la combinazioneCTRL-W
. CTRL-^ salta al file alternato,CTRL-W
CTRL-^ divide in due la finestra ed edita il file alternato. L'opzione 'splitbelow' può essere impostata per far sì che la finestra nuova appaia sotto alla finestra corrente. L'opzione 'splitright' analogamente fa sì che appaia alla destra della finestra corrente. Quando si divide in due la finestra si può premettere al comando un modificatore per decidere dove apparirà la finestra: :leftabove{comando}
a sinistra o sopra la finestra corrente :aboveleft{comando}
idem :rightbelow{comando}
a destra o sotto la finestra corrente :belowright{comando}
idem :topleft{comando}
nel punto più in alto o a sinistra della finestra di Vim :botright{comando}
nel punto più in alto o alla destra della finestra di Vim
*08.9* Linguette Avrete notato che le finestre non si sovrappongono mai. Questo implica che potete velocemente esaurire lo spazio sullo schermo. La soluzione a questo si chiama Linguette. Supponete di stare modificando "file_uno". Per creare una nuova Linguetta, usate questo comando:
:tabedit file_due
Questo comincerà a modificare "file_due" in una finestra grande come l'intera finestra di Vim.
Note
rete una linguetta in alto coi nomi dei due file: +----------------------------------+ |file_uno
| /file_due/ __________X| (file_due è in grassetto) |/* file_due */
| |due
| |due
| |~
| |~
| |~
| || +----------------------------------+ Avete ora due Linguette. La prima contiene una finestra per "file_uno" e la seconda una finestra per "file_due". Sono come due pagine una sopra l'altra, con una linguetta che esce da ogni pagina, e mostra il nome del file. Ora, fate clic col mouse su "file_uno" nella linea in alto. Otterrete: +----------------------------------+ |
/file_uno/
| file_due __________X| (file_uno è in grassetto) |/* file_uno */
| |uno
| |uno
| |~
| |~
| |~
| || +----------------------------------+ Quindi potete passare da una Linguetta all'altra facendo clic sull'etichetta corrispondente nella linea in alto. Se non avete un mouse o non volete usarlo, potete usare il comando "gt". Per ricordarlo: Goto Tab. Ora creiamo un'altra Linguetta col comando:
:tab split
Questo crea una nuova Linguetta con una finestra che sta modificando lo stesso buffer della finestra in cui ci trovavamo: +-------------------------------------+ |
file_uno
| /file_uno/ |file_due __X
| (file_uno è in grassetto) |/* file_uno */
| |uno
| |uno
| |~
| |~
| |~
| || +-------------------------------------+ Potete mettere ":tab" prima di ogni comando Ex che apre una finestra. La finestra verrà aperta in una nuova linguetta. Altro esempio:
:tab help gt
Mostrerà il testo di help per "gt" in una nuova linguetta. Ci sono alcune altre cose possibili con le Linguette: - fare clic col mouse nello spazio dopo l'ultima etichetta La successiva linguetta sarà scelta, come con "gt". - fare clic col mouse sulla "X" nell'angolo in alto a destra La Linguetta corrente sarà chiusa. Tranne che ci siano modifiche non salvate nella Linguetta corrente. - fare clic due volte col mouse sulla linea in alto Una nuova linguetta verrà creata. - il comando "tabonly" Chiude tutte le Linguette, meno quella corrente. Tranne che ci siano modifiche non salvate nella Linguetta corrente. Per maggiori informazioni sulle linguette si veda |tab-page|.
Capitolo seguente: |usr_09| Usare la GUI Copyright: vedere |manual-copyright| vim:tw=78:ts=8:ft=help:norl: Per segnalazioni scrivere a vimdoc.it at gmail dot com oppure ad Antonio Colombo azc100 at gmail dot com
Generated by vim2html on Wed Mar 4 19:49:22 2009