Puntatori utili: Pagina iniziale · Riferimenti rapidi · Indice User Manual Vim · Indice generale · FAQ in inglese
*usr_21.txt* Per Vim version 8.1. Ultima modifica: 2019 Apr 25 VIM USER MANUAL - di Bram Moolenaar Traduzione di questo capitolo: Gianluca Trimarchi Andarsene e ritornare Questo capitolo considera come alternare l'uso di altri programmi con Vim. Sia eseguendo un programma dall'interno di Vim ovvero uscendo da Vim e ritornandovi in seguito. Inoltre, tratta di come memorizzare lo stato di Vim e ripristinarlo in seguito. |21.1| Sospendere e ripristinare |21.2| Eseguire comandi della shell |21.3| Memorizzare le informazioni; viminfo |21.4| Sessioni |21.5| Viste |21.6| Modeline Capitolo seguente: |usr_22| Trovare il file da aprire Capitolo precedente: |usr_20| Immissione rapida dei comandi dalla linea di comando Indice: |usr_toc|
*21.1* Sospendere e ripristinare Come molti programmi UNIX Vim può essere sospeso premendoCTRL-Z
. Vim viene fermato e venite riportati alla shell da cui è stato avviato. Dopo potete eseguire qualsiasi altro comando finché non ne avete abbastanza. Ritornate a Vim con il comando "fg",
CTRL-Z
{qualsiasi sequenza di comandi della shell}
fg
Siete ritornati dove avevate lasciato Vim, non è cambiato nulla. Nel caso premere
CTRL-Z
non funzionasse, potete anche usare ":suspend". Non dimenticate di riportare Vim in primo piano, potreste perdere qualsiasi modifica fatta! Solo UNIX lo permette. Su altri sistemi Vim avvierà una shell per voi. Anche questa ha la funzionalità di eseguire comandi della shell. Ma è una nuova shell, non quella da cui avete avviato Vim. Quando state eseguendo la GUI non potete tornare alla shell da dove Vim è stato avviato.CTRL-Z
minimizzerà la finestra di Vim.
*21.2* Eseguire comandi della shell Per eseguire un singolo comando della shell da Vim usate ":!{comando}
". Per esempio, per vedere il contenuto di una directory:
:!ls
:!dir
Il primo è per Unix, il secondo per MS-Windows. Vim eseguirà il programma. Quando finirà vi verrà chiesto di premere
<Invio>
. Questo vi permette di visionare l'output del comando prima di ritornare al testo su cui stavate lavorando. Il "!" è anche usato altrove quando si esegue un programma. Diamo uno sguardo ad una panoramica: :!{programma}
esegue{programma}
:r !{programma}
esegue{programma}
e legge il suo output :w !{programma}
esegue{programma}
e invia il testo come suo input :[intervallo]!{programma}
filtra il testo attraverso{programma}
Notate che la presenza di un intervallo prima di "!{programma}
" fa una grossa differenza. Senza di esso il programma viene eseguito normalmente, specificando l'intervallo un certo numero di linee di testo verrà filtrato attraverso il programma. è possibile eseguire in questo modo molti programmi. Ma una shell è molto meglio. Potete avviare una nuova shell in questo modo:
:shell
è simile ad usare
CTRL-Z
per sospendere Vim. La differenza è che viene avviata una shell nuova. Quando usate la GUI, la shell starà usando la finestra di Vim per i suoi input e output. Poiché Vim non è un emulatore di terminale, non funzionerà perfettamente. Se avete problemi, provate ad impiegare l'opzione 'guipty'. Se ancora non dovesse funzionare in modo soddisfacente, avviate un nuovo terminale per eseguire la shell al suo interno. Ad es. con:
:!xterm&
*21.3* Memorizzare le informazioni; viminfo Dopo aver scritto per un po', avrete del testo entro i registri, puntatori in vari file, una storia della linea di comando piena di astuti comandi. Quando uscite da Vim tutto ciò viene perso. Ma potete conservarlo! Il file viminfo è deputato ad immagazzinare le informazioni sullo status: Storia della linea di comando e dei pattern di ricerca Testo nei registri Puntatori per vari file L'elenco dei buffer Variabili globali Ogni volta che uscite da Vim esso memorizzerà queste informazioni in un file, il file viminfo. Quando Vim viene riavviato, il file viminfo viene letto e le informazioni ripristinate. L'opzione 'viminfo' per default è impostata per ripristinare un numero limitato di informazioni. Potreste volerla impostare per memorizzare un maggior numero di informazioni. Ciò può avvenire attraverso il seguente comando:
:set viminfo=stringa
La stringa specifica cosa salvare. La sintassi di questa stringa è un carattere di opzione seguito da un argomento. Le coppie opzione/argomento sono separate da virgole. Osservate come potreste costruire la vostra stringa viminfo. Primo, l'opzione ' viene usata per specificare per quanti file salvare i puntatori (a-z). Per questa opzione prendete un bel numero pari (1000, per esempio). Adesso il vostro comando potrebbe assomigliare a questo:
:set viminfo='1000
L'opzione f controlla se memorizzare i puntatori globali (A-Z e 0-9). Se questa opzione è 0, non ne verrà memorizzato nessuno. Se è 1 o non specificate una opzione f, i puntatori verranno memorizzati. Sicuramente vorrete usare questa funzionalità, quindi adesso avrete questo:
:set viminfo='1000,f1
L'opzione < controlla quante linee vengono salvate per ciascun registro. Per default, vengono salvate tutte le linee. Se è 0, non viene salvato nulla. Per evitare di aggiungere migliaia di linee al vostro file viminfo (che potrebbero non venire mai usate e rallenterebbero l'avvio di Vim) usate un massimo di 500 linee:
:set viminfo='1000,f1,<500
Altre opzioni che potreste voler usare: : numero di linee da salvare dalla storia della linea di comando @ numero di linee da salvare dalla storia della linea di input / numero di linee da salvare dalla storia della ricerca r supporto rimovibile, per cui nessun puntatore sarà memorizzato (può esser usato più volte) ! variabili globali che iniziano con una lettera maiuscola e non contengono lettere minuscole h disattiva l'evidenziazione di 'hlsearch' quando viene avviato % l'elenco dei buffer (memorizzato solo quando Vim viene avviato senza file come argomenti) c converte il testo usando 'encoding' n il nome usato per il file viminfo (dev'essere l'ultima opzione) Guardate l'opzione 'viminfo' e |viminfo-file| per maggiori informazioni. Qualora eseguiste più copie di Vim, l'ultima a terminare memorizzerà le sue informazioni. Ciò potrebbe far sì che le informazioni memorizzate dai Vim precedenti vengano perse. Ogni dato può essere memorizzato una sola volta. RITORNARE DOVE ERAVATE QUANDO AVETE CHIUSO VIM Siete a metà della scrittura di un file ed è tempo di andarsene in vacanza. Uscite da Vim e andate a divertirvi, dimenticandovi tutto del vostro lavoro. Dopo qualche settimana avviate Vim, e scrivete:'0
E siete di nuovo lì dove avevate lasciato Vim. Ora potete continuare col vostro lavoro. Vim crea un puntatore ogni volta che uscite da Vim. L'ultimo è '0. La posizione a cui puntava '0 diventa '1. E '1 diventa '2, e così via. Il puntatore '9 andrà perso. Il comando |:marks| è utile per scoprire dove vi porteranno '0 e '9 . TORNARE INDIETRO SU QUALCHE FILE Se volete ritornare su un file che avete modificato recentemente, ma non quando siete usciti da Vim, c'è un modo per farlo, leggermente più complicato. Potete ottenere una lista di file immettendo il comando:
:oldfiles
1: ~/.viminfo
2: ~/text/resume.txt
3: /tmp/draft
Mettiamo che vogliate editare il secondo file, quello che nella lista è preceduto da "2:". Dovete scrivere:
:e #<2
Al posto di ":e" potete usare ogni comando che abbia come argomento un nome di file, la dicitura "#<2" funziona come le espressioni "%" (nome del file corrente) e "#" (nome alternativo del file). Allo stesso modo, potete anche dividere la finestra per editare il terzo file:
:split #<3
La notazione #<123 è un po' complicata da ricordare, se volete solo editare un file. Fortunatamente c'è un modo più semplice:
:browse oldfiles
1: ~/.viminfo
2: ~/text/resume.txt
3: /tmp/draft
-- More -- Questo comando vi dà la stessa lisat che otterreste con |:oldfiles|. Se volete editare "resume.txt", battete "q" per interromepre la lista. Otterrete una richiesta:Inserire numero e
Inserite "2" e premete<Invio>
(vuoto per annullare):<Invio>
per editare il secondo file. Maggior informazioni a |:oldfiles|, |v:oldfiles| e |c_#<|. SPOSTARE LE INFORMAZIONI DA UN VIM AD UN ALTRO Potete usare i comandi ":wviminfo" e ":rviminfo" per salvare e ripristinare le informazioni quando Vim è ancora in esecuzione. Per esempio è utile per scambiare i contenuti del registro tra due istanze di Vim. Nel primo Vim fate:
:wviminfo! ~/tmp/viminfo
E nel secondo Vim fate:
:rviminfo! ~/tmp/viminfo
Ovviamente, la "w" sta per "write" e la "r" per "read". Il carattere ! è usato da ":wviminfo" per forzare la riscrittura di un file già esistente. Quando è omesso, e il file esiste, le informazioni sono fuse in unico file. Il carattere ! usato per ":rviminfo" significa che verranno usate tutte le informazioni, ciò potrebbe riscrivere informazioni già esistenti. Senza il ! verranno usate solo le informazioni che non sono impostate. Questi comandi possono anche essere usati per memorizzare informazioni e riutilizzarle in seguito. Potreste creare una directory piena di file viminfo, ognuno contenente informazioni per compiti differenti.
*21.4* Sessioni Supponete di avere scritto a lungo, ed è ormai fine giornata. Volete interrompere il lavoro e riprenderlo domani dal punto in cui eravate arrivati. Potete farlo salvando la vostra sessione di lavoro e ripristinandola il giorno seguente. Una sessione di Vim contiene tutte le informazioni sui file che avete aperto. Sono incluse cose come l'elenco dei file, la disposizione delle finestre, le variabili globali, le opzioni ed altre informazioni. (Cosa esattamente viene memorizzato è controllato dall'opzione 'sessionoptions', descritta più sotto) Il seguente comando crea un file di sessione:
:mksession vimbook.vim
Se dopo volete ripristinare la sessione, potete usare questo comando:
:source vimbook.vim
Se volete avviare Vim e ripristinare una specifica sessione, potete usare il seguente comando:
vim -S vimbook.vim
Questo dice a Vim di leggere all'avvio uno specifico file. La 'S' sta per sessione (al momento potete utilizzare -S per interpretare qualsiasi script sorgente per Vim, quindi potrebbe star bene anche per "sorgente"). Le finestre che erano aperte sono ripristinate, con la stessa posizione e dimensione di prima. Le mappature dei tasti e i valori delle opzioni sono le stesse di prima. Che cosa venga esattamente ripristinato dipende dall'opzione 'sessionoptions'. Il valore di default è "blank,buffers,curdir,folds,help,options,tabpages,winsize,terminal". blank mantiene le finestre vuote buffers tutti i buffer, non solo quelli dentro ad una finestra curdir la directory corrente folds annidamenti, anche quelli creati manualmente help la finestra d'aiuto options tutte le opzioni e le mappature dei tasti tabpages tutte le linguette winsize le dimensioni delle finestre terminal include anche le finestre di terminale Cambiatela come preferite. Per esempio, per ripristinare anche la dimensione della finestra di Vim, usate:
:set sessionoptions+=resize
SESSIONE QUI, SESSIONE Là Il modo più ovvio per usare le sessioni è quando si lavora su progetti differenti. Supponete di memorizzare i vostri file di sessione nella directory "~/.vim". Al momento state lavorando sul progetto "segreto" e volete spostarvi sul progetto "noioso":
:wall
:mksession! ~/.vim/segreto.vim
:source ~/.vim/noioso.vim
La prima usa ":wall" per scrivere tutti i file modificati. Dopo, la sessione corrente viene salvata, usando ":mksession!". La precedente sessione viene sovrascritta. La prossima volta che caricherete la sessione segreta potrete continuare da dove eravate in questo momento. E finalmente caricate la nuova sessione "noioso". Se aprite delle finestre di help, dividete e chiudete varie finestre, ed alterate in generale l'aspetto delle finestre, potrete tornare all'ultima sessione salvata:
:source ~/.vim/noioso.vim
Avrete quindi un controllo completo se la prossima volta vorrete continuare da dove vi trovate adesso, salvando la configurazione corrente in una sessione o mantenendo i file di sessione come punto di partenza. Un altro modo di usare le sessioni è di creare una disposizione di finestre che vi piaccia usare e salvarla in una sessione. Potrete tornare a questa disposizione quando vorrete. Per esempio, questa è una bella disposizione da usare: +----------------------------------------+ |
VIM - main help file
| || |
Move around: Use the cursor keys, or "h
| |help================================
| |explorer
| | |dir
|~ | |dir
|~ | |file
|~ | |file
|~ | |file
|~ | |file
|~ | |~/=========
|[No File]===================| || +----------------------------------------+ Ha una finestra d'aiuto all'inizio, così che possiate leggere questo testo. La stretta finestra verticale sulla sinistra contiene un navigatore di file. è un plugin di Vim che elenca il contenuto di una directory. Da li' potete selezionare i file da aprire. Maggiori informazioni in merito nel prossimo capitolo. Createla da un Vim appena avviato con:
:help
CTRL-W
w:vertical split ~/
Potete ridimensionare un po' le finestre a seconda dei vostri gusti. Dopo salvate la sessione con:
:mksession ~/.vim/mia.vim
Ora potete avviare Vim con questa disposizione:
vim -S ~/.vim/mia.vim
Suggerimento: Per aprire un file che vedere elencato nella finestra del navigatore nella finestra vuota, muovete il cursore sul nome del file e premete "O". Un doppio clic col mouse fa la stessa cosa. UNIX E MS-WINDOWS Alcune persone devono lavorare un giorno su sistemi MS-Windows e un altro giorno su Unix. Se siete uno di loro, considerate di aggiungere "slash" e "unix" a 'sessionoptions'. I file di sessione saranno scritti in un formato che potrà esser usato su entrambi i sistemi. Questo è il comando da inserire nel vostro file vimrc:
:set sessionoptions+=unix,slash
Vim quindi userà il formato Unix, perché il Vim per MS-Windows può leggere e scrivere file Unix, ma il Vim di Unix non può leggere file di sessione nel formato MS-Windows. Similarmente, il Vim di MS-Windows comprende i nomi dei file con / per separare i nomi, ma il Vim di Unix non comprende \. SESSIONI E VIMINFO Le sessioni memorizzano molte cose, ma non la posizione dei puntatori, il contenuto dei registri e la storia della linea di comando. Per queste cose avete bisogno delle capacità di viminfo. Nella maggior parte delle situazioni vorrete usare le sessioni separatamente da viminfo. Ciò può essere usato per spostarsi su un'altra sessione, ma mantenere la storia della linea di comando. E copiare del testo nei registri in una sessione e riportarlo in un'altra sessione. Potreste preferire mantenere le informazioni con la sessione. Dovrete farlo voi stessi allora. Esempio:
:mksession! ~/.vim/segreto.vim
:wviminfo! ~/.vim/segreto.viminfo
E per ripristinarlo di nuovo:
:source ~/.vim/segreto.vim
:rviminfo! ~/.vim/segreto.viminfo
*21.5* Viste Una sessione memorizza l'aspetto dell'intero Vim. Quando volete memorizzare le proprietà di una sola finestra, usate una vista. La vista si usa quando volete lavorare su di un file in un modo specifico. Per esempio, avete il numero delle linee attivato con l'opzione 'number' e alcuni annidamenti sono definiti. Proprio come con le sessioni, potete memorizzare questa vista su un file e ripristinarla in seguito. Adesso, quando memorizzate una sessione, vengono salvate le viste di ogni finestra. Ci sono due modi principali per usare le viste. Il primo è di lasciare che sia Vim a scegliere il nome del file della vista. Potete ripristinare la vista quando in seguito aprirete lo stesso file. Per memorizzare la vista della finestra corrente:
:mkview
Vim deciderà dove memorizzare la vista. Quando in seguito aprirete lo stesso file potrete riavere la vostra vista con questo comando:
:loadview
è facile, non è vero? Ora vorreste vedere il file senza l' opzione 'number' attivata, o con tutti gli annidamenti aperti, potete impostare le opzioni per rendere la finestra così. Dopo, memorizzare questa vista con:
:mkview 1
Ovviamente, potete ricaricarla con:
:loadview 1
Ora potete cambiare tra le due viste del file usando ":loadview" con, e senza, l' argomento "1". In questo modo potete memorizzare fino a dieci viste per lo stesso file, una senza numero e nove numerate da 1 a 9. UNA VISTA CON NOME Il secondo metodo principale per usare le viste è di memorizzarle in un file con un nome di vostra scelta. Questa vista potrà essere ricaricata mentre state aprendo un altro file. Vim cambierà il file aperto utilizzando quello specificato nella vista. Potete quindi usarla per cambiare velocemente il file aperto, con tutte le opzioni impostate come quando l'avete salvato. Per esempio, per salvare la vista del file corrente:
:mkview ~/.vim/principale.vim
Potete ripristinarla con:
:source ~/.vim/principale.vim
*21.6* Modeline Quando aprite uno specifico file, potete impostare opzioni per quel particolare file. Scrivere ogni volta questi comandi è noioso. Usare una sessione o vista per aprire un file non funziona quando il file è condiviso tra più persone. La soluzione per questa situazione è aggiungere una modeline al file. è una linea di testo che dice a Vim i valori delle opzioni da usare solo in questo file. Un tipico esempio è un programma in C dove dovete far rientrare le linee con multipli di 4 spazi. Ciò richiede l'impostazione dell'opzione 'shiftwidth' a 4. Questa modeline lo farà: /* vim:set shiftwidth=4: */
Inserite questa linea tra le prime o le ultime cinque righe nel file. Quando aprirete il file,note
rete che 'shiftwidth' è stata impostata a quattro. Quando aprirete un altro file, verrà reimpostata al valore di default di otto. Per alcuni file la modeline si adegua bene ad essere inserita nell'header, sempre che possa esser inserita all'inizio. Per file di testo e altri file dove la modeline fa parte del normale contenuto, inseritela alla fine del file. L'opzione 'modelines' specifica quante linee all'inizio e alla fine del file sono ispezionate per controllare se hanno una modeline. Per ispezionare dieci linee:
:set modelines=10
L'opzione 'modeline' può esser usata per disattivare questa capacità. Fatelo quando state lavorando come root in Unix o come Administrator in MS-Windows, o quando non vi fidate dei file che state aprendo:
:set nomodeline
usate questo formato per la modeline:
qualsiasi-testo vim:set
Il "qualsiasi-testo" indica che potete inserire qualsiasi testo prima e dopo la parte che userà Vim. Ciò permette di farlo sembrare un commento, come quello che è stato fatto sopra con /* e */. La parte " vim:" è quella che permette a Vim di riconoscere la linea. Ci deve essere uno spazio vuoto prima di "vim", oppure "vim" deve stare all'inizio della linea. Usare qualcosa tipo "gvim:" non funzionerà. La parte tra i doppi punti è un comando ":set". Funziona nello stesso modo che scrivere il comando ":set", eccezion fatta per il backslash che deve essere inserito prima del doppio punto (altrimenti lo vedrebbe come fine della modeline). Un altro esempio:{option}
={value}
... : qualsiasi-testo// vim:set textwidth=72 dir=c\:\tmp: use c:\tmp here
C'è un backslash in più prima del doppio punto, così sarà incluso nel comando ":set". Il testo dopo il secondo doppio punto sarà ignorato, quindi potete inserirci un commento. Per maggiori informazioni guardate |modeline|.
Capitolo seguente: |usr_22| Trovare il file da aprire 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