Puntatori utili: Pagina iniziale · Riferimenti rapidi · Indice User Manual Vim · Indice generale · FAQ in inglese
*usr_08.txt* Per Vim version 8.1. Ultima modifica: 2017 Aug 11 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::splitQuesto 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 comandoCTRL-Ww viene usato per saltare fra le finestre. Se siete nella finestra in alto,CTRL-Ww salterà alla finestra sottostante. Se siete nell'ultima finestra (quella più in basso)CTRL-Ww salterà alla prima. (CTRL-WCTRL-Wfa 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::closeIn 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::onlyQuesto 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.cSe 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::newPotete 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.cPer 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 "4CTRL-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-We 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::vsplitoppure::vsplit two.cIl risultato sarà simile a questo: +--------------------------------------+ |/* file two.c */|/* file one.c */ | |~|~ | |~|~ | |~|~ | |two.c===============one.c=============| || +--------------------------------------+ In pratica, la 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 newIl 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-Wh muove verso la finestra a sinistraCTRL-Wj muove verso la finestra di sottoCTRL-Wk muove verso la finestra di sopraCTRL-Wl muove verso la finestra a destraCTRL-Wt muove verso la finestra più in altoCTRL-Wb muove verso la finestra più in bassoNoterete 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 K
Questo comando usa la lettera maiuscola K. Quello che succede è che la
finestra in questione viene spostata nel punto più alto. Noterete 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 sinistra
CTRL-W J muove la finestra nel punto più in basso
CTRL-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::qallChe 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::wallChe 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"::wqallChe 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.txtIl 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.cVim 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".Noterete 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 Il modo Diff può essere attivato in un'altra maniera, direttamente da dentro a Vim. Editate il file "main.c", poi dividete la finestra e mostrate le differenze::edit main.c:vertical diffsplit main.cIl 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 il modo 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.diffATTENZIONE: 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 funzionalità, usate questo comando::set noscrollbindSALTARE 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:]cPer andare nell'altra direzione (verso l'alto) usare :[cMettere 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::diffupdatePer 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:dpLe 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:doLe 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 sul modo 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 modo Normal viene preposta la combinazione CTRL-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_dueQuesto comincerà a modificare "file_due" in una finestra grande come l'intera finestra di Vim.Noterete 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 splitQuesto 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 gtMostrerà 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
Generato da una versione modificata di vim2html in data gio 28 mag 2020, 22.07.10, CEST