Difference between revisions of "Vim (Italiano)"

From ArchWiki
Jump to: navigation, search
(Esempio di {{Filename|~/.vimrc}}: traduzione terminata)
(24 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
[[Category:Development (Italiano)]]
 
[[Category:Development (Italiano)]]
 
[[Category:Text editors (Italiano)]]
 
[[Category:Text editors (Italiano)]]
{{i18n|Vim}}
+
[[en:Vim]]
{{translateme}} {{Attenzione|Questo articolo è in fase di traduzione. Seguite per ora le istruzioni della versione inglese.}}
+
[[es:Vim]]
 +
[[lt:Vim]]
 +
[[ru:Vim]]
 +
[[zh-CN:Vim]]
 +
[[zh-TW:Vim]]
 
{{Article summary start|Sommario}}
 
{{Article summary start|Sommario}}
 
{{Article summary text|Un tutorial base, ed alcuni consigli per la configurazione dell'editor di testi per console/terminale.}}
 
{{Article summary text|Un tutorial base, ed alcuni consigli per la configurazione dell'editor di testi per console/terminale.}}
Line 11: Line 15:
 
Vim è ideato per ridurre al minimo il lavoro delle dita, e non ci sarà mai bisogno di usare il mouse. Questo può sembrare sciocco, ma una volta padroneggiato vim, se ne comprenderà il motivo.
 
Vim è ideato per ridurre al minimo il lavoro delle dita, e non ci sarà mai bisogno di usare il mouse. Questo può sembrare sciocco, ma una volta padroneggiato vim, se ne comprenderà il motivo.
  
==Feature==
+
==Caratteristiche==
 
+
 
* Vim è molto potente per effettuare editing avanzati
 
* Vim è molto potente per effettuare editing avanzati
 
* Espandibile, grazie alle opzioni di configurazione
 
* Espandibile, grazie alle opzioni di configurazione
Line 19: Line 22:
  
 
==Installazione==
 
==Installazione==
* Per installare vim per la linea di comando: {{Pkg|vim}}
 
  
* Per installare la versione con la GUI (fornisce vim): {{Pkg|gvim}}
+
Si può [[pacman (Italiano)|installare]] la versione da linea di comando con il pacchetto {{Pkg|vim}}, oppure si può installare la versione con interfaccia grafica (che fornisce anche {{ic|vim}}) installando il pacchetto {{Pkg|gvim}}.
  
{{Nota|Vim non è più compilato con l'opzione X server. Per molti utenti, significa che la normale funzione di copia e incolla dagli appunti di un ambiente grafico non funzionerà. Se questa è una operazione fondamentale, considerare l'installazione di {{Pkg|gvim}} che include una versione di Vim con questo supporto. [https://bugs.archlinux.org/task/14609 (Attribution)]}}
+
{{Nota|{{Pkg|vim}} non è più compilato con l'opzione X server. Per molti utenti, significa che la normale funzione di copia e incolla dagli appunti di un ambiente grafico non funzionerà. Se non si vuole rinunciare a questa funzionalità, considerare l'installazione di {{Pkg|gvim}} che include una versione di Vim con questo supporto. Vedere {{Bug|14609}} per maggiori informazioni.}}
 +
 
 +
{{Nota|Il pacchetto vim è concepito per essere il più leggero possibile, per cui non supporta gli interpreti di Python, Lua, e Ruby. Se si richiede tale supporto, scegliere il pacchetto gvim, il quale include il binario vim. Il repository non ufficiale {{ic|herecura-stable}} fornisce qualche variante di vim / gvim:
 +
{{hc|$ pacman -Slq herecura-stable | grep vim|
 +
vim-cli
 +
vim-gvim-gtk
 +
vim-gvim-motif
 +
vim-gvim-qt
 +
vim-gvim-x11
 +
vim-rt
 +
vim-tiny
 +
}}
 +
}}
  
 
==Uso==
 
==Uso==
Questa è una panoramica base su come utilizzare vim. Alternativamente, è possibile utilizzare {{Codeline|vimtutor}} per familiarizzare con l'editor. Vim ha quattro differenti modalità:
+
Questa è una panoramica base su come utilizzare vim. Alternativamente, è possibile utilizzare {{ic|vimtutor}} per familiarizzare con l'editor. Vim ha quattro differenti modalità:
 
+
* ''Command mode'': i tasti premuti vengono interpretati come comandi.
+
* ''Insert mode'': i tasti premuti vengono inseriti nel file.
+
* ''Visual mode'': i tasti premuti selezionano, tagliano o copiano il testo.
+
* ''Ex mode'': una modalità di input per comandi addizionali (esempio salvare un file, sostituire parti di testo, ecc.).
+
  
===Editing base===
+
* ''Command mode'' (modalità comando): i tasti premuti vengono interpretati come comandi.
 +
* ''Insert mode'' (modalità inserimento): i tasti premuti vengono inseriti nel file.
 +
* ''Visual mode'' (modalità visuale): i tasti premuti selezionano, tagliano o copiano il testo.
 +
* ''Ex mode'' (modalità ex): una modalità di input per comandi addizionali (esempio salvare un file, sostituire parti di testo, ecc.).
  
 +
===Editing di base===
 
Se si avvia vim con:
 
Se si avvia vim con:
  
Line 41: Line 54:
 
si vedrà un documento vuoto (presumendo che somefile.txt non esista. Se esiste, si vedrà il suo contenuto). Non sarà possibile modificarlo immediatamente - la modalità in cui si avvia vim è la modalità comando(''Command Mode''). In questa modalità sarà possibile utilizzare i comandi vim dalla tastiera.
 
si vedrà un documento vuoto (presumendo che somefile.txt non esista. Se esiste, si vedrà il suo contenuto). Non sarà possibile modificarlo immediatamente - la modalità in cui si avvia vim è la modalità comando(''Command Mode''). In questa modalità sarà possibile utilizzare i comandi vim dalla tastiera.
  
{{Nota|Vim è un esempio dello stile Unix. Questo significa che non è vistoso, e non lascerà ferme le nostre mani. Non ha assistenti o giochi integrati. Esso però ci permetterà comunque di portare a termine il lavoro, ed anche velocemente. Anche tutti i suoi comandi sono case sensitive. A volte i comandi maiuscoli sono una versione con effetto più ampio ({{Keypress|s}} sostituisce un carattere, {{Keypress|S}} sostituisce una linea), altre volte sono comandi completamente diversi ({{Keypress|j}} sposta il cursore in basso, {{Keypress|J}} unisce due linee).}}
+
{{Nota|Vim è un esempio dello stile Unix. Questo significa che non è vistoso, e non lascerà ferme le nostre mani. Non ha assistenti o giochi integrati. Esso però ci permetterà comunque di portare a termine il lavoro, ed anche velocemente. Anche tutti i suoi comandi sono case sensitive. A volte i comandi maiuscoli sono una versione con effetto più ampio ({{ic|s}} sostituisce un carattere, {{ic|S}} sostituisce una linea), altre volte sono comandi completamente diversi ({{ic|j}} sposta il cursore in basso, {{ic|J}} unisce due linee).}}
  
Per inserire il testo (prima del cursore) usare il comando {{Keypress|i}}. {{Keypress|I}} ('''i''' maiuscola) entra in inserimento all'inizio della linea. Per aggiungere del testo dopo il cursore (quello che la maggior parte degli utenti si aspetta) premere {{Keypress|a}}. Premendo {{Keypress|A}} posizionerà il cursore per l'inserimento alla fine della linea.
+
Per inserire il testo (prima del cursore) usare il comando {{ic|i}}. {{ic|I}} ('''i''' maiuscola) entra in inserimento all'inizio della linea. Per aggiungere del testo dopo il cursore (quello che la maggior parte degli utenti si aspetta) premere {{ic|a}}. Premendo {{ic|A}} posizionerà il cursore per l'inserimento alla fine della linea.
  
Si può tornare in modalità comando, in qualsiasi momento premendo {{Keypress|Esc}}.
+
Si può tornare in modalità comando, in qualsiasi momento premendo {{ic|Esc}}.
  
 
===Spostamento===
 
===Spostamento===
 
 
In vim, è possibile spostare il cursore usando le frecce della tastiera, ma questa non è considerata la '''vim way'''. Si dovrebbe spostare la mano tropo a destra dalla normale posizione di battitura per raggiungere le frecce, e poi ritornare in posizione. Non è divertente.
 
In vim, è possibile spostare il cursore usando le frecce della tastiera, ma questa non è considerata la '''vim way'''. Si dovrebbe spostare la mano tropo a destra dalla normale posizione di battitura per raggiungere le frecce, e poi ritornare in posizione. Non è divertente.
  
In vim ci si può spostare in basso premendo {{Keypress|j}}. Si può ricordare perché la lettera "j" punta verso il basso. Per spostare il cursore in alto premendo {{Keypress|k}}. A sinistra con {{Keypress|h}} (si trova a sinistra di "j"), ed a destra con {{Keypress|l}} ('''L''' minuscolo).
+
In vim ci si può spostare in basso premendo {{ic|j}}. Si può ricordare perché la lettera "j" punta verso il basso. Per spostare il cursore in alto premendo {{ic|k}}. A sinistra con {{ic|h}} (si trova a sinistra di "j"), ed a destra con {{ic|l}} ('''L''' minuscolo).
  
{{Keypress|^}} posizionerà il cursore all'inizio della linea, e {{Keypress|$}} alla fine di essa.
+
{{ic|^}} posizionerà il cursore all'inizio della linea, e {{ic|$}} alla fine di essa.
  
{{Nota|{{Keypress|^}} e {{Keypress|$}} sono comunemente utilizzati nelle espressioni regolari per rappresentare l'inizio e la fine della linea. Le espressioni regolari sono molto potenti e comunemente usate negli ambienti *nix, quindi per ora sarà ingannevole, ma più avanti si capirà "l'idea" dietro a molti di queste combinazioni da tastiera.}}
+
{{Nota|{{ic|^}} e {{ic|$}} sono comunemente utilizzati nelle espressioni regolari per rappresentare l'inizio e la fine della linea. Le espressioni regolari sono molto potenti e comunemente usate negli ambienti *nix, quindi per ora sarà ingannevole, ma più avanti si capirà "l'idea" dietro a molti di queste combinazioni da tastiera.}}
  
Per spostarsi di una parola premere {{Keypress|w}}. {{Keypress|W}} considera come appartenenti alla parola più caratteri (ad esempio gli underscore, i trattini come parte della parola). Per tornare indietro di una parola si usa {{Keypress|b}}. Anche in questo caso {{Keypress|B}} considera come appartenenti alla parola più caratteri. Per avanzare fino alla fine di una parola {{Keypress|e}}, {{Keypress|E}}} per comprendere altri caratteri.
+
Per spostarsi di una parola premere {{ic|w}}. {{ic|W}} considera come appartenenti alla parola più caratteri (ad esempio gli underscore, i trattini come parte della parola). Per tornare indietro di una parola si usa {{ic|b}}. Anche in questo caso {{ic|B}} considera come appartenenti alla parola più caratteri. Per avanzare fino alla fine di una parola {{ic|e}}, {{ic|E}} per comprendere altri caratteri.
  
Per spostarsi all'inizio di una frase {{Keypress|(}} effettuerà lo spostamento. {{Keypress|)}} farà invece l'opposto, spostandosi alla fine della frase. Per uno spostamento maggiore {{Keypress|{}} posizionerà il cursore all'inizio del paragrafo. {{Keypress|<nowiki>}</nowiki>}} sposterà il cursore alla fine dell'intero paragrafo.
+
Per spostarsi all'inizio di una frase {{ic|(}} effettuerà lo spostamento. {{ic|)}} farà invece l'opposto, spostandosi alla fine della frase. Per uno spostamento maggiore {{ic|{}} posizionerà il cursore all'inizio del paragrafo. {{ic|<nowiki>}</nowiki>}} sposterà il cursore alla fine dell'intero paragrafo.
  
Per spostarsi all'inizio dello schermo, {{Keypress|H}} effettuerà lo spostamento. {{Keypress|M}} sposterà il cursore al centro dello schermo, ed {{Keypress|L}} alla fine della schermata. {{Keypress|g}}{{Keypress|g}} posizionerà il cursore all'inizio del file, {{Keypress|G}} invece alla sua fine. {{Keypress|CTRL}}+{{Keypress|D}} permetterà di scorrere pagina per pagina.
+
Per spostarsi all'inizio dello schermo, {{ic|H}} effettuerà lo spostamento. {{ic|M}} sposterà il cursore al centro dello schermo, ed {{ic|L}} alla fine della schermata. {{ic|gg}} posizionerà il cursore all'inizio del file, {{ic|G}} invece alla sua fine. {{ic|Ctrl+D}} permetterà di scorrere pagina per pagina.
  
 
===Ripetere i comandi===
 
===Ripetere i comandi===
 
+
Se un comando è preceduto da un numero, allora questo comando verrà eseguito un numero di volte uguale al numero premuto (ci sono delle eccezioni, ma possono avere senso, come il comando {{ic|s}}). Ad esempio premendo {{ic|3i}} ed inserendo il testo "Help! " e successivamente {{ic|Esc}} verrà inserito il testo "Help! Help! Help! “. Premendo {{ic|2<nowiki>}</nowiki>}} il cursore si sposterà in avanti di due paragrafi. Questo è utile con alcuni dei comandi di seguito.
Se un comando è preceduto da un numero, allora questo comando verrà eseguito un numero di volte uguale al numero premuto (ci sono delle eccezioni, ma possono avere senso, come il comando {{Keypress|s}}). Ad esempio premendo {{Keypress|3}}{{Keypress|i}} ed inserendo il testo "Help! " e successivamente {{Keypress|Esc}} verrà inserito il testo "Help! Help! Help! “. Premendo {{Keypress|2}}{{Keypress|<nowiki>}</nowiki>}} il cursore si sposterà in avanti di due paragrafi. Questo è utile con alcuni dei comandi di seguito.
+
  
 
===Cancellare===
 
===Cancellare===
 +
Il comando {{ic|x}} cancellerà il carattere sotto al cursore. {{ic|X}} cancellerà il carattere prima del cursore. Qui è dove la funzione dei numeri diventa interessante. {{ic|6x}} cancellerà 6 caratteri. Premere {{ic|.}} (punto) ripeterà il comando precedente. Quindi, ipotizzando di avere la parola "foobar" in diversi punti, ma dopo averci pensato, si preferisce usare la parola "foo". Spostare il cursore sopra la lettera "b", premere {{ic|3x}}, spostare il cursore sulla successiva parola "foobar" e premere {{ic|.}} (punto).
  
Il comando {{Keypress|x}} cancellerà il carattere sotto al cursore. {{Keypress|X}} cancellerà il carattere prima del cursore. Qui è dove la funzione dei numeri diventa interessante. {{Keypress|6}}{{Keypress|x}} cancellerà 6 caratteri. Premere {{Keypress|.}} (punto) ripeterà il comando precedente. Quindi, ipotizzando di avere la parola "foobar" in diversi punti, ma dopo averci pensato, si preferisce usare la parola "foo". Spostare il cursore sopra la lettera "b", premere {{Keypress|3}}{{Keypress|x}}, spostare il cursore sulla successiva parola "foobar" e premere {{Keypress|.}} (punto).
+
Il comando {{ic|d}} comunicherà a vim che si intende cancellare qualcosa. Dopo aver premuto {{ic|d}}, sarà necessario indicare cosa cancellare. Si possono utilizzare anche i comandi di movimento. {{ic|dW}} cancellerà finito alla prossima parola. {{ic|d^}} cancellerà fino all'inizio della linea. Anteporre un numero al comando di eliminazione funzionerà altrettanto: {{ic|3dW}} cancellerà fino alle tre parole successive. {{ic|D}} (maiuscolo) è una scorciatoia per cancellare fino alla fine della linea (come {{ic|d$}}). Premere {{ic|dd}} cancellerà tutta la linea.
 
+
Il comando {{Keypress|d}} comunicherà a vim che si intende cancellare qualcosa. Dopo aver premuto {{Keypress|d}}, sarà necessario indicare cosa cancellare. Si possono utilizzare anche i comandi di movimento. {{Keypress|d}}{{Keypress|W}} cancellerà finito alla prossima parola. {{Keypress|d}}{{Keypress|^}} cancellerà fino all'inizio della linea. Anteporre un numero al comando di eliminazione funzionerà altrettanto: {{Keypress|3}}{{Keypress|d}}{{Keypress|W}} cancellerà fino alle tre parole successive. {{Keypress|D}} (maiuscolo) è una scorciatoia per cancellare fino alla fine della linea (come {{Keypress|d}}{{Keypress|$}}). Premere {{Keypress|d}}{{Keypress|d}} cancellerà tutta la linea.
+
  
Per cancellare e sostituire la parola corrente, posizionare il cursore sulla parola ed eseguire il comando {{Keypress|c}}{{Keypress|w}}. Questo comando cancellerà la parola e cambierà la modalità in inserimento. Per sostituire una singola lettera usare {{Keypress|r}}.
+
Per cancellare e sostituire la parola corrente, posizionare il cursore sulla parola ed eseguire il comando {{ic|cw}}. Questo comando cancellerà la parola e cambierà la modalità in inserimento. Per sostituire una singola lettera usare {{ic|r}}.
  
 
===Annulla e ripeti===
 
===Annulla e ripeti===
Vim ha una funzione appunti integrata (anche nota come buffer). Le azioni possono essere annullate con il tasto {{Keypress|u}} e ripetute con la combinazione {{Keypress|CTRL}}+{{Keypress|r}}.
+
Vim ha una funzione appunti integrata (anche nota come buffer). Le azioni possono essere annullate con il tasto {{ic|u}} e ripetute con la combinazione {{ic|Ctrl+r}}.
  
===Visual Mode===
+
===Modalità visuale===
Premendo {{Keypress|v}} si entrerà in ''visual mode''. In  questa modalità è possibile selezionare parti di testo, una volta selezionato premendo {{Keypress|y}} verrà memorizzato nel buffer, è possibile tagliare il testo premendo {{Keypress|c}}. {{Keypress|p}} incollerà il testo memorizzato nel buffer dopo il cursore, {{Keypress|P}} prima. Il tasto {{Keypress|V}} attiverà la ''visual line mode'', analoga alla modalità precedente ma con effetto su intere linee. {{Keypress|CTRL}}+{{Keypress|v}} invece per i blocchi di testo.
+
Premendo {{ic|v}} si entrerà in ''visual mode''. In  questa modalità è possibile selezionare parti di testo, una volta selezionato premendo {{ic|y}} verrà memorizzato nel buffer, è possibile tagliare il testo premendo {{ic|c}}. {{ic|p}} incollerà il testo memorizzato nel buffer dopo il cursore, {{ic|P}} prima. Il tasto {{ic|V}} attiverà la ''visual line mode'', analoga alla modalità precedente ma con effetto su intere linee. {{ic|Ctrl+v}} invece per i blocchi di testo.
  
 
{{Nota|In qualsiasi momento si cancelli del testo, questo vine inserito nel buffer e sarà disponibile per essere incollato.}}
 
{{Nota|In qualsiasi momento si cancelli del testo, questo vine inserito nel buffer e sarà disponibile per essere incollato.}}
  
 
===Trova e sostituisci===
 
===Trova e sostituisci===
Per cercare una parola o un carattere nel file, basterà semplicemente premere {{Keypress|/}} e successivamente il/i carattere/i da cercare ed infine premere {{Keypress|ENTER}}. Per visualizzare l'occorrenza successiva della ricerca usare {{Keypress|n}}.
+
Per cercare una parola o un carattere nel file, basterà semplicemente premere {{ic|/}} e successivamente il/i carattere/i da cercare ed infine premere {{ic|ENTER}}. Per visualizzare l'occorrenza successiva della ricerca usare {{ic|n}}, mentre per la precedente usare {{ic|N}}.
  
 
+
Per cercare e sostituire usare il comando ''substitute'' {{ic|:s/}}. La sua sintassi è {{ic|[range]s///[arguments]}}. Ad esempio:
Per cercare e sostituire usare il comando ''substitute'' {{Keypress|:}}{{Keypress|s}}{{Keypress|/}}. La sua sintassi è {{Codeline|[range]s///[arguments]}}. Ad esempio:
+
  
 
  Comando        Risultato
 
  Comando        Risultato
Line 95: Line 104:
 
  :%s/xxx/yyy/g  Sostituisce xxx con yyy globalmente in tutto il file
 
  :%s/xxx/yyy/g  Sostituisce xxx con yyy globalmente in tutto il file
  
 
+
Si può usare il comando ''global'' {{ic|:g/}} per ricercare un pattern ed eseguire un comando per ogni corrispondenza. La sintassi è: {{ic|[range]:g//[cmd]}}.
Si può usare il comando ''global'' {{Keypress|:}}{{Keypress|g}}{{Keypress|/}} per ricercare un pattern ed eseguire un comando per ogni corrispondenza. La sintassi è: {{Codeline|[range]:g//[cmd]}}.
+
  
 
  Comando  Risultato
 
  Comando  Risultato
Line 103: Line 111:
  
 
===Salvare ed uscire===
 
===Salvare ed uscire===
Per salvare e/o uscire, sarà necessario usare la modalità ''Ex''. I comandi della modalità ''Ex'' sono preceduti da {{Keypress|:}}. Per salvare un file usare {{Keypress|:}}{{Keypress|w}} '''nomefile'''. Per uscire {{Keypress|:}}{{Keypress|q}}. Se invece si disidera uscire senza salvare le modifiche effettuate, usare {{Keypress|:}}{{Keypress|q}}{{Keypress|!}}. Per salvare ed uscire {{Keypress|:}}{{Keypress|x}}. Esiste anche un'altra scorciatoia per salvare ed uscire cioè la combinazione {{Keypress|Z}}{{Keypress|Z}}(maiuscole).
+
Per salvare e/o uscire, sarà necessario usare la modalità ''Ex''. I comandi della modalità ''Ex'' sono preceduti da {{ic|:}}. Per salvare un file usare {{ic|''':w''' nomefile}}. Per uscire {{ic|:q}}. Se invece si desidera uscire senza salvare le modifiche effettuate, usare {{ic|:q!}}. Per salvare ed uscire {{ic|:x}}. Esiste anche un'altra scorciatoia per salvare ed uscire cioè la combinazione {{ic|ZZ}} (maiuscole).
  
 
===Altri comandi===
 
===Altri comandi===
  
# Premendo {{Keypress|s}} verrà cancellato il carattere sotto al cursore, e verrà attivata la modalità inserimento. {{Keypress|S}} cancellerà l'intera linea ed attiverà la modalità inserimento.
+
# Premendo {{ic|s}} verrà cancellato il carattere sotto al cursore, e verrà attivata la modalità inserimento. {{ic|S}} cancellerà l'intera linea ed attiverà la modalità inserimento.
# {{Keypress|o}} creerà una nuova linea sotto alla linea corrente ed attiverà la modalità inserimento. {{Keypress|O}} invece creerà una nuova linea sopra a quella corrente ed avvierà la modalità inserimento.
+
# {{ic|o}} creerà una nuova linea sotto alla linea corrente ed attiverà la modalità inserimento. {{ic|O}} invece creerà una nuova linea sopra a quella corrente ed avvierà la modalità inserimento.
# {{Keypress|y}}{{Keypress|y}} memorizzerà una linea nel buffer.
+
# {{ic|yy}} memorizzerà una linea nel buffer.
# {{Keypress|c}}{{Keypress|c}} cancellerà la linea corrente ed attiverà la modalità inserimento.
+
# {{ic|cc}} cancellerà la linea corrente ed attiverà la modalità inserimento.
# {{Keypress|*}} evidenzierà la parola corrente e {{Keypress|n}} la cercherà.
+
# {{ic|*}} evidenzierà la parola corrente e {{ic|n}} la cercherà.
  
 
==Configurazione==
 
==Configurazione==
Il file di configurazione personale di vim si trova nella cartella home dell'utente {{Filename|~/.vimrc}}. Gli utenti esperti di vim tendono a tenere un {{Filename|~/.vimrc}} molto ben strutturato. La configurazione globale di vim è situata in {{Filename|/etc/vimrc}}. La variabile di ripiego {{Codeline|$VIM}} è definita come {{Filename|/usr/share/vim/}}. Ad esempio per creare uno schema di colori globale il file {{Filename|*.vim}} dello shema di colori dovrebbe essere salvato in {{Filename|/usr/share/vim/vimfiles/}}.
+
Il file di configurazione personale di vim si trova nella cartella home dell'utente {{ic|~/.vimrc}}. Gli utenti esperti di vim tendono a tenere un {{ic|~/.vimrc}} molto ben strutturato. La configurazione globale di vim è situata in {{ic|/etc/vimrc}}. La variabile di ripiego {{ic|$VIM}} è definita come {{ic|/usr/share/vim/}}. Ad esempio per creare uno schema di colori globale il file {{ic|*.vim}} dello shema di colori dovrebbe essere salvato in {{ic|/usr/share/vim/vimfiles/}}.
  
 
Correntemente, la configurazione globale di vim in Arch Linux è molto basilare a differenza delle configurazioni di default di vim nelle altre distribuzioni. Per ottenere i comportamenti comunemente utilizzati (come evidenziare la sintassi, il ritorno alla linea dell'ultima modifica...), utilizzare il file di configurazione d'esempio:
 
Correntemente, la configurazione globale di vim in Arch Linux è molto basilare a differenza delle configurazioni di default di vim nelle altre distribuzioni. Per ottenere i comportamenti comunemente utilizzati (come evidenziare la sintassi, il ritorno alla linea dell'ultima modifica...), utilizzare il file di configurazione d'esempio:
Line 122: Line 130:
  
 
===File di backup===
 
===File di backup===
Vim per default crea un backup di un file modificato nella stesa cartella del file chiamandolo {{Filename|nomefile~}}. Per evitare di ingombrare, alcuni utenti impostano vim per utilizzare una apposita cartella per i backup:
+
Vim per default crea un backup di un file modificato nella stesa cartella del file chiamandolo {{ic|nomefile~}}. Per evitare di ingombrare, alcuni utenti impostano vim per utilizzare una apposita cartella per i backup:
  
 
  set backupdir=~/.vim/backup,/tmp
 
  set backupdir=~/.vim/backup,/tmp
Line 132: Line 140:
 
  set noswapfile    ! (disabilita i file swap)
 
  set noswapfile    ! (disabilita i file swap)
  
===Wrap Searches===
+
===Ripetizione della ricerca===
 +
Con quest'opzione, ''trova successivo'' torna all'inizio del file quando ne raggiunge la fine. Similarmente, ''trova precedente'' va alla fine del file quando ne raggiunge l'inizio.
  
 
  set wrapscan
 
  set wrapscan
Line 139: Line 148:
  
 
  set spell
 
  set spell
Vim evidenzierà così le parole non corrette. Quando il cursore su una parola sbagliata usare {{Keypress|z}}{{Keypress|<nowiki>=</nowiki>}} per vedere le correzioni proposte.
 
  
Solo il dizionario inlese sarà installato di default, altri possono essere trovati nei [[Official Repositories (Italiano)|repository ufficiali]].
+
Con questa opzione Vim evidenzierà le parole non scritte correttamente. Muovere il cursore su una parola errata e usare {{ic|z<nowiki>=</nowiki>}} per vedere le correzioni proposte.
 +
 
 +
Solo il dizionario inglese sarà installato di default, altri possono essere trovati nei [[Official Repositories (Italiano)|repository ufficiali]]. Per ottenere una lista dei linguaggi disponibili, eseguire:
  
 
  # pacman -Ss vim-spell
 
  # pacman -Ss vim-spell
  
per ottenere una lista dei linguaggi disponibili,
+
I file dei dizionari possono essere trovati anche nell'[http://ftp.vim.org/vim/runtime/spell/ archivio FTP di Vim]. Mettere i dizionari scaricati nella cartella {{ic|~/.vim/spell}} e configurare il dizionario eseguendo: {{ic|1=:setlocal spell spelllang=LL}}.
 
+
# pacman -S vim-spell-xy
+
 
+
Dove {{codeline|xy}} è il linuaggio scelto.
+
 
+
I file dei dizionari pssono essere trovati anche sull'[http://ftp.vim.org/vim/runtime/spell/ archivio ftp di vim]. Dopo aver scaricato i file spl del linguaggio desiderato (esempio hu.cp1250.spl, hu.iso-8859-2.spl and/or hu.utf-8.spl per l'ungherese) e posizionati nella cartella {{Filename|~/.vim/spell}}, eseguire:
+
 
+
:setlocal spell spelllang=LL
+
 
+
Per attivare il controllo ortografico per il linguaggio scelto (ad esempio {{Codeline|1=:setlocal spell spelllang=hu}} per il precedente esempio).
+
 
+
{{Tip|Per abilitare il controllo ortografico soltanto per i documenti LaTeX (o TeX), aggiungere {{Codeline|autocmd FileType tex setlocal spell spelllang<nowiki>=</nowiki>en_us}} al file {{Filename|/etc/vimrc}}. Per il controllo ortografico di linguaggi diversi dall'inglese, semplicemente sostituire {{Codeline|en_us}} con il valore appropriato al proprio linguaggio.}}
+
  
===Syntax Highlighting===
+
{{Tip|
 +
* Per abilitare il controllo ortografico soltanto per i documenti LaTeX (o TeX), aggiungere {{ic|autocmd FileType tex setlocal spell spelllang<nowiki>=</nowiki>en_us}} al file {{ic|~/.vimrc}} oppure in {{ic|/etc/vimrc}}, e riavviare vim. Per il controllo ortografico di linguaggi diversi dall'inglese, semplicemente sostituire {{ic|en_us}} con il valore appropriato al proprio linguaggio.
 +
* Sarà possibile abilitare il controllo ortografico per alcuni tipi di file (ad esempio *.txt) usando il plugin FileType ed una regola personalizzata per dichiarare il tipo di file. Per abilitare il controllo ortografico per ogni file di tipo {{ic|*.txt}}, creare il file {{ic|/usr/share/vim/vimfiles/ftdetect/plaintext.vim}}, ed inserire la linea {{ic|autocmd BufRead,BufNewFile *.txt    setfiletype plaintext}} nel file. Successivamente, inserire la linea {{ic|autocmd FileType plaintext setlocal spell spelllang<nowiki>=</nowiki>en_us}} nel proprio file {{ic|~/.vimrc}} oppure in {{ic|/etc/vimrc}}, e riavviare vim.}}
  
Per abilitare la syntax highlighting (vim supporta una vasta lista di linguaggi di programmazione):
+
===Evidenziare la sintassi===
 +
Per abilitare l'opzione ed evidenziare la sintassi (''syntax highlighting'') (vim supporta una vasta lista di linguaggi di programmazione):
  
 
  filetype plugin on
 
  filetype plugin on
 
  syntax on
 
  syntax on
  
===Esempio di {{Filename|~/.vimrc}}===
+
===Esempio di ~/.vimrc===
 
+
Un esempio della [[Vim/.vimrc (Italiano)|configurazione di Vim]].
Un esempio del file {{Filename|~/.vimrc}} comprendente le opzioni comuni.
+
 
+
{{File
+
|name=~/.vimrc
+
|content=<nowiki>
+
" .vimrc
+
" Consultare: http://vimdoc.sourceforge.net/htmldoc/options.html per maggiori dettagli
+
 
+
" Per il supporto ai caratteri multi-byte (ad esempio CJK):
+
"set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,gb18030,latin1
+
     
+
set tabstop=4      " Numeri di spazi per la tabulazione nei file.
+
+
set shiftwidth=4    " Numero di spazi da utilizzare per ogni passo di (auto)indentazione.
+
+
set expandtab      " Usa il numero appropriato di spazi per il tasto <Tab>.
+
                    " Questi spazi vengono usati anche per l'indentazione con i comandi '>' e '<'
+
                    " e quando l'opzione 'autoindent' è attiva. Per inserire un tab quando
+
                    " 'expandtab' è attivo, usare CTRL-V <Tab>.
+
+
set smarttab        " Quando attiva, un <Tab> all'inizio della riga inserisce il numero di spazi
+
                    " impostati in 'shiftwidth'. 'tabstop' è usato in altri posti
+
                    " Il tasto <BS> cancellerà un valore di spazi pari a 'shiftwidth'
+
                    " all'inizio della riga.
+
+
set showcmd        " Mostra comandi (parziali) nella linea di stato.
+
 
+
set number          " Mostra i numeri delle linee.
+
 
+
set showmatch      " Quando una parentesi viene inserita, il cursore si sposta
+
                    " momentaneamente sulla sua parentesi chiusa corrispondente. Solo se
+
                    " visibile o presente nella schermata. Il tempo in cui il
+
                    " il cursore resta sulla parentesi chiusa può essere impostato con
+
                    " 'matchtime'.
+
+
set hlsearch        " Dopo una ricerca, evidenzia tutte le sue corrispondenze.
+
+
set incsearch      " Mentre si digita un comando di ricerca, mostra immediatamente
+
                    " le corrispondenze trovate.
+
+
set ignorecase      " Ignora le maiuscole durante le ricerche.
+
+
set smartcase      " Sovrasta l'opzione 'ignorecase' se il pattern di ricerca
+
                    " contiene caratteri maiuscoli.
+
+
set backspace=2    " Specifica il funzionamento in modalità inserimento di <BS>, <Del>, CTRL-W
+
                    " e CTRL-U.  I tre oggetti, separati dalle virgole, dicono a Vim di,
+
                    " cancellare lo spazio bianco all'inizio della riga, l'interruzione di
+
                    " riga e il carattere prima del punto in cui è iniziato il modalità inserimento.
+
+
set autoindent      " Copia l'indentazione della linea corrente quando se ne inizia una nuova
+
                    " (digitando <CR> in modalità inserimento oppure quando si usa "o" o "O"
+
                    " in modalità comando).
+
+
set textwidth=79    " La massima lunghezza di una riga. Una linea più lunga
+
                    " verrà interrotta dopo lo spazio per mantenere questo valore.
+
+
set formatoptions=c,q,r,t " Questa è una sequenza di lettere che indica come effettuare la
+
            " formattazione.
+
                    "
+
                    " lettera    azione legata se presente nell'opzione 'formatoptions'
+
                    " -------  -------------------------------------------------------
+
                    " c        Tronca automaticamente i commenti secondo il valore di textwidth,
+
                    "          inserendo il carattere di commento automaticamente.
+
                    " q        Permette di formattare i commenti con "gg".
+
                    " r        Inserisce automaticamente il carattere di commento
+
                    "          ala pressione di <Enter> in modalità inserimento.
+
                    " t        Tronca le righe in accordo all'opzione textwidth (non viene applicato
+
                    "          ai commenti)
+
 
+
set ruler          " Mostra il numero di linea e di colonna della posizione del cursore,
+
                    " separati da virgola.
+
+
set background=dark " Quando impostato su "dark", Vim proverà ad utilizzare colori adeguati
+
                    " ad uno sfondo scuro. Quando impostato su "light", Vim proverà
+
                    " ad usare colori adeguati ad uno sfondo chiaro.
+
                    " Non vengono accettati altri valori.
+
 
+
set mouse=a        " Abilita l'uso del mouse.
+
+
filetype plugin indent on
+
syntax on
+
</nowiki>}}
+
 
+
Altri esempi possono essere trovati [[#Risorse|più avanti]].
+
  
 
==Unire file (Vimdiff)==
 
==Unire file (Vimdiff)==
 
+
Vim include un editor di comparazione (un programma che può mostrare le differenze tra due file). Può essere avviato con {{ic|vimdiff file1 file2}}; successivamente usare:
Vim include un editor di comparazione (un programma che può mostrare le differenze tra due file). Può essere avviato con {{Codeline|vimdiff file1 file2}}; successivamente usare:
+
  
 
  ]c :        - differenza successiva
 
  ]c :        - differenza successiva
Line 268: Line 183:
  
 
==Vim Tips==
 
==Vim Tips==
 
 
Trucchi per portare a termine alcuni compiti.
 
Trucchi per portare a termine alcuni compiti.
  
 
===Numeri linea===
 
===Numeri linea===
 
+
# Per mostrare i numeri linea {{ic|:set number}}.
# Per mostrare i numeri linea {{Codeline|:set number}}.
+
# Per andare ad una linea specifica {{ic|:<numero linea>}}.
# Per andare ad una linea specifica {{Codeline|:<numero linea>}}.
+
  
 
===Sostituzioni tra linee===
 
===Sostituzioni tra linee===
 
 
Per sostituire solo tra un intervallo di certe linee:
 
Per sostituire solo tra un intervallo di certe linee:
 
 
  :''n'',''n''s/one/two/g
 
  :''n'',''n''s/one/two/g
  
 
Ad esempio, per sostituire il pattern 'one' con 'two' tra le linee 3 e 4, è possibile eseguire:
 
Ad esempio, per sostituire il pattern 'one' con 'two' tra le linee 3 e 4, è possibile eseguire:
 
 
  :3,4s/one/two/g
 
  :3,4s/one/two/g
  
 
===Ripristinare la posizione del cursore nei file===
 
===Ripristinare la posizione del cursore nei file===
Se si desidera che all'apertura di un file vim posizioni il cursore dove era situato durante l'ultima modifica del file, aggiungere la seguente linea al file {{Filename|~/.vimrc}}:
+
Se si desidera che all'apertura di un file vim posizioni il cursore dove era situato durante l'ultima modifica del file, aggiungere la seguente linea al file {{ic|~/.vimrc}}:
  
 
  if has("autocmd")
 
  if has("autocmd")
Line 298: Line 208:
 
Quando si usa un [[Window Manager (Italiano)|window manager]] configurato per ignorare le dimensioni delle finestre, gvim riempirà l'area non funzionale con il colore dell sfondo  del tema GTK.
 
Quando si usa un [[Window Manager (Italiano)|window manager]] configurato per ignorare le dimensioni delle finestre, gvim riempirà l'area non funzionale con il colore dell sfondo  del tema GTK.
  
Una soluzione consiste nel rendere più omogeneo il colore dello sfondo: semplicemente inserendo questa linea nel file {{filename|~/.gtkrc-2.0}}:
+
Una soluzione è disabilitare la barra dei menu in {{ic|.vimrc}}, questo farà apparire la finestra di gvim come dovrebbe, occupando l'intera area:
 +
 
 +
set go-=m "remove menubar
 +
 
 +
Un'altra soluzione consiste nel rendere più omogeneo il colore dello sfondo: semplicemente inserendo questa linea nel file {{ic|~/.gtkrc-2.0}}:
  
 
  style "vimfix" {
 
  style "vimfix" {
Line 305: Line 219:
 
  widget "vim-main-window.*GtkForm" style "vimfix"
 
  widget "vim-main-window.*GtkForm" style "vimfix"
  
==Risorse==
+
===Sostituire il comando vi con vim===
  
'''Ufficiali'''
+
Eseguire questi comandi:
  
* [http://www.vim.org/ Vim homepage]
+
# ln -s $(which vim) /usr/local/bin/vi
* [http://vimdoc.sourceforge.net/ Documentazione di Vim]
+
# ln -s $(which vim) /usr/local/bin/view
* [http://vim.wikia.com Vim Tips Wiki]
+
  
'''Tutorial'''
+
Leggere anche http://superuser.com/questions/27091/vim-to-replace-vi
  
 +
==Altre risorse==
 +
 +
===Ufficiali===
 +
* [http://www.vim.org/ Homepage]
 +
* [http://vimdoc.sourceforge.net/ Documentazione]
 +
* [http://vim.wikia.com Tips Wiki]
 +
 +
===Tutorial===
 
* [http://usalug.org/vi.html vi Tutorial e  Reference Guide]
 
* [http://usalug.org/vi.html vi Tutorial e  Reference Guide]
 
* [http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html vi-vim trucchi consigli e Tutorial grafici]
 
* [http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html vi-vim trucchi consigli e Tutorial grafici]
* [http://vimcasts.org/ Vimcasts] - screencasts in formato .ogg.
 
* [http://www.derekwyatt.org/vim/vim-tutorial-videos/vim-novice-tutorial-videos/ Video tutorial] - Video tutorial, tratta dagli argomenti base a quelli avanzati.
 
 
* [http://blog.interlinked.org/tutorials/vim_tutorial.html Vim introduzione e tutorial]
 
* [http://blog.interlinked.org/tutorials/vim_tutorial.html Vim introduzione e tutorial]
 +
* [http://vim.runpaint.org/ Vim Recipes] - Un manuale liberamente consultabile.
  
'''Esempi di configurazione'''
+
===Video===
 +
* [http://vimcasts.org/ Vimcasts] - Screencasts in formato .ogg.
 +
* [http://www.derekwyatt.org/vim/vim-tutorial-videos/vim-novice-tutorial-videos/ Video tutorial] - Tratta dagli argomenti base a quelli avanzati.
  
* [http://nion.modprobe.de/setup/vimrc Di nion]
+
===Esempi di configurazione===
 +
* [http://nion.modprobe.de/setup/vimrc Setup di nion]
 
* [http://amix.dk/vim/vimrc.html Una configurazione dettagliata da Amir Salihefendic]
 
* [http://amix.dk/vim/vimrc.html Una configurazione dettagliata da Amir Salihefendic]
 
* [http://www.jukie.net/~bart/conf/vimrc Bart Trojanowski]
 
* [http://www.jukie.net/~bart/conf/vimrc Bart Trojanowski]
  
'''Altro'''
+
===Altro===
 
+
* [http://www.gentoo-wiki.info/HOWTO_VIM HOWTO Vim] - Articolo del wiki di Gentoo su cui è basato questo articolo (autore sconosciuto).
* [http://www.gentoo-wiki.info/HOWTO_VIM HOWTO Vim] -- Articolo del wiki di Gentoo su cui è basato questo articolo (autore sconosciuto).
+
* [http://bytefluent.com/vivify/ Vivify] - Un editor dello schema di colori per Vim

Revision as of 11:52, 1 September 2013

Template:Article summary start Template:Article summary text Template:Article summary end

"Vim è un editor di testi avanzato che mira a fornire la potenza del de-facto editor UNIX ‘vi’, con maggiori caratteristiche e funzionalità." Vim non è un semplice editor di testo come nano o pico. Esso richiede un po' di pratica per imparare, e molto tempo per padroneggiarlo.

Vim è ideato per ridurre al minimo il lavoro delle dita, e non ci sarà mai bisogno di usare il mouse. Questo può sembrare sciocco, ma una volta padroneggiato vim, se ne comprenderà il motivo.

Caratteristiche

  • Vim è molto potente per effettuare editing avanzati
  • Espandibile, grazie alle opzioni di configurazione
  • Semplici e robuste scorciatoie da tastiera
  • Evidenziazione della sintassi

Installazione

Si può installare la versione da linea di comando con il pacchetto vim, oppure si può installare la versione con interfaccia grafica (che fornisce anche vim) installando il pacchetto gvim.

Nota: vim non è più compilato con l'opzione X server. Per molti utenti, significa che la normale funzione di copia e incolla dagli appunti di un ambiente grafico non funzionerà. Se non si vuole rinunciare a questa funzionalità, considerare l'installazione di gvim che include una versione di Vim con questo supporto. Vedere FS#14609 per maggiori informazioni.
Nota: Il pacchetto vim è concepito per essere il più leggero possibile, per cui non supporta gli interpreti di Python, Lua, e Ruby. Se si richiede tale supporto, scegliere il pacchetto gvim, il quale include il binario vim. Il repository non ufficiale herecura-stable fornisce qualche variante di vim / gvim:
$ pacman -Slq herecura-stable | grep vim
vim-cli
vim-gvim-gtk
vim-gvim-motif
vim-gvim-qt
vim-gvim-x11
vim-rt
vim-tiny

Uso

Questa è una panoramica base su come utilizzare vim. Alternativamente, è possibile utilizzare vimtutor per familiarizzare con l'editor. Vim ha quattro differenti modalità:

  • Command mode (modalità comando): i tasti premuti vengono interpretati come comandi.
  • Insert mode (modalità inserimento): i tasti premuti vengono inseriti nel file.
  • Visual mode (modalità visuale): i tasti premuti selezionano, tagliano o copiano il testo.
  • Ex mode (modalità ex): una modalità di input per comandi addizionali (esempio salvare un file, sostituire parti di testo, ecc.).

Editing di base

Se si avvia vim con:

$ vim somefile.txt

si vedrà un documento vuoto (presumendo che somefile.txt non esista. Se esiste, si vedrà il suo contenuto). Non sarà possibile modificarlo immediatamente - la modalità in cui si avvia vim è la modalità comando(Command Mode). In questa modalità sarà possibile utilizzare i comandi vim dalla tastiera.

Nota: Vim è un esempio dello stile Unix. Questo significa che non è vistoso, e non lascerà ferme le nostre mani. Non ha assistenti o giochi integrati. Esso però ci permetterà comunque di portare a termine il lavoro, ed anche velocemente. Anche tutti i suoi comandi sono case sensitive. A volte i comandi maiuscoli sono una versione con effetto più ampio (s sostituisce un carattere, S sostituisce una linea), altre volte sono comandi completamente diversi (j sposta il cursore in basso, J unisce due linee).

Per inserire il testo (prima del cursore) usare il comando i. I (i maiuscola) entra in inserimento all'inizio della linea. Per aggiungere del testo dopo il cursore (quello che la maggior parte degli utenti si aspetta) premere a. Premendo A posizionerà il cursore per l'inserimento alla fine della linea.

Si può tornare in modalità comando, in qualsiasi momento premendo Esc.

Spostamento

In vim, è possibile spostare il cursore usando le frecce della tastiera, ma questa non è considerata la vim way. Si dovrebbe spostare la mano tropo a destra dalla normale posizione di battitura per raggiungere le frecce, e poi ritornare in posizione. Non è divertente.

In vim ci si può spostare in basso premendo j. Si può ricordare perché la lettera "j" punta verso il basso. Per spostare il cursore in alto premendo k. A sinistra con h (si trova a sinistra di "j"), ed a destra con l (L minuscolo).

^ posizionerà il cursore all'inizio della linea, e $ alla fine di essa.

Nota: ^ e $ sono comunemente utilizzati nelle espressioni regolari per rappresentare l'inizio e la fine della linea. Le espressioni regolari sono molto potenti e comunemente usate negli ambienti *nix, quindi per ora sarà ingannevole, ma più avanti si capirà "l'idea" dietro a molti di queste combinazioni da tastiera.

Per spostarsi di una parola premere w. W considera come appartenenti alla parola più caratteri (ad esempio gli underscore, i trattini come parte della parola). Per tornare indietro di una parola si usa b. Anche in questo caso B considera come appartenenti alla parola più caratteri. Per avanzare fino alla fine di una parola e, E per comprendere altri caratteri.

Per spostarsi all'inizio di una frase ( effettuerà lo spostamento. ) farà invece l'opposto, spostandosi alla fine della frase. Per uno spostamento maggiore { posizionerà il cursore all'inizio del paragrafo. } sposterà il cursore alla fine dell'intero paragrafo.

Per spostarsi all'inizio dello schermo, H effettuerà lo spostamento. M sposterà il cursore al centro dello schermo, ed L alla fine della schermata. gg posizionerà il cursore all'inizio del file, G invece alla sua fine. Ctrl+D permetterà di scorrere pagina per pagina.

Ripetere i comandi

Se un comando è preceduto da un numero, allora questo comando verrà eseguito un numero di volte uguale al numero premuto (ci sono delle eccezioni, ma possono avere senso, come il comando s). Ad esempio premendo 3i ed inserendo il testo "Help! " e successivamente Esc verrà inserito il testo "Help! Help! Help! “. Premendo 2} il cursore si sposterà in avanti di due paragrafi. Questo è utile con alcuni dei comandi di seguito.

Cancellare

Il comando x cancellerà il carattere sotto al cursore. X cancellerà il carattere prima del cursore. Qui è dove la funzione dei numeri diventa interessante. 6x cancellerà 6 caratteri. Premere . (punto) ripeterà il comando precedente. Quindi, ipotizzando di avere la parola "foobar" in diversi punti, ma dopo averci pensato, si preferisce usare la parola "foo". Spostare il cursore sopra la lettera "b", premere 3x, spostare il cursore sulla successiva parola "foobar" e premere . (punto).

Il comando d comunicherà a vim che si intende cancellare qualcosa. Dopo aver premuto d, sarà necessario indicare cosa cancellare. Si possono utilizzare anche i comandi di movimento. dW cancellerà finito alla prossima parola. d^ cancellerà fino all'inizio della linea. Anteporre un numero al comando di eliminazione funzionerà altrettanto: 3dW cancellerà fino alle tre parole successive. D (maiuscolo) è una scorciatoia per cancellare fino alla fine della linea (come d$). Premere dd cancellerà tutta la linea.

Per cancellare e sostituire la parola corrente, posizionare il cursore sulla parola ed eseguire il comando cw. Questo comando cancellerà la parola e cambierà la modalità in inserimento. Per sostituire una singola lettera usare r.

Annulla e ripeti

Vim ha una funzione appunti integrata (anche nota come buffer). Le azioni possono essere annullate con il tasto u e ripetute con la combinazione Ctrl+r.

Modalità visuale

Premendo v si entrerà in visual mode. In questa modalità è possibile selezionare parti di testo, una volta selezionato premendo y verrà memorizzato nel buffer, è possibile tagliare il testo premendo c. p incollerà il testo memorizzato nel buffer dopo il cursore, P prima. Il tasto V attiverà la visual line mode, analoga alla modalità precedente ma con effetto su intere linee. Ctrl+v invece per i blocchi di testo.

Nota: In qualsiasi momento si cancelli del testo, questo vine inserito nel buffer e sarà disponibile per essere incollato.

Trova e sostituisci

Per cercare una parola o un carattere nel file, basterà semplicemente premere / e successivamente il/i carattere/i da cercare ed infine premere ENTER. Per visualizzare l'occorrenza successiva della ricerca usare n, mentre per la precedente usare N.

Per cercare e sostituire usare il comando substitute :s/. La sua sintassi è [range]s///[arguments]. Ad esempio:

Comando        Risultato
:s/xxx/yyy/    Sostituisce xxx con yyy alla prima occorrenza
:s/xxx/yyy/g   Sostituisce xxx con yyy alla prima occorrenza, globalmente, (in una intera frase)
:s/xxx/yyy/gc  Sostituisce xxx con yyy globalmente con conferma
:%s/xxx/yyy/g  Sostituisce xxx con yyy globalmente in tutto il file

Si può usare il comando global :g/ per ricercare un pattern ed eseguire un comando per ogni corrispondenza. La sintassi è: [range]:g//[cmd].

Comando  Risultato
:g/^#/d  Cancella tutte le linee che iniziano per #
:g/^$/d  Cancella tutte le linee che sono vuote

Salvare ed uscire

Per salvare e/o uscire, sarà necessario usare la modalità Ex. I comandi della modalità Ex sono preceduti da :. Per salvare un file usare :w nomefile. Per uscire :q. Se invece si desidera uscire senza salvare le modifiche effettuate, usare :q!. Per salvare ed uscire :x. Esiste anche un'altra scorciatoia per salvare ed uscire cioè la combinazione ZZ (maiuscole).

Altri comandi

  1. Premendo s verrà cancellato il carattere sotto al cursore, e verrà attivata la modalità inserimento. S cancellerà l'intera linea ed attiverà la modalità inserimento.
  2. o creerà una nuova linea sotto alla linea corrente ed attiverà la modalità inserimento. O invece creerà una nuova linea sopra a quella corrente ed avvierà la modalità inserimento.
  3. yy memorizzerà una linea nel buffer.
  4. cc cancellerà la linea corrente ed attiverà la modalità inserimento.
  5. * evidenzierà la parola corrente e n la cercherà.

Configurazione

Il file di configurazione personale di vim si trova nella cartella home dell'utente ~/.vimrc. Gli utenti esperti di vim tendono a tenere un ~/.vimrc molto ben strutturato. La configurazione globale di vim è situata in /etc/vimrc. La variabile di ripiego $VIM è definita come /usr/share/vim/. Ad esempio per creare uno schema di colori globale il file *.vim dello shema di colori dovrebbe essere salvato in /usr/share/vim/vimfiles/.

Correntemente, la configurazione globale di vim in Arch Linux è molto basilare a differenza delle configurazioni di default di vim nelle altre distribuzioni. Per ottenere i comportamenti comunemente utilizzati (come evidenziare la sintassi, il ritorno alla linea dell'ultima modifica...), utilizzare il file di configurazione d'esempio:

cp /etc/vimrc /etc/vimrc.bak
cp /usr/share/vim/vim73/vimrc_example.vim /etc/vimrc

File di backup

Vim per default crea un backup di un file modificato nella stesa cartella del file chiamandolo nomefile~. Per evitare di ingombrare, alcuni utenti impostano vim per utilizzare una apposita cartella per i backup:

set backupdir=~/.vim/backup,/tmp

Oppure è possibile disabilitare questa funzione:

set nobackup
set nowritebackup
set noswapfile    ! (disabilita i file swap)

Ripetizione della ricerca

Con quest'opzione, trova successivo torna all'inizio del file quando ne raggiunge la fine. Similarmente, trova precedente va alla fine del file quando ne raggiunge l'inizio.

set wrapscan

Controllo ortografico

set spell

Con questa opzione Vim evidenzierà le parole non scritte correttamente. Muovere il cursore su una parola errata e usare z= per vedere le correzioni proposte.

Solo il dizionario inglese sarà installato di default, altri possono essere trovati nei repository ufficiali. Per ottenere una lista dei linguaggi disponibili, eseguire:

# pacman -Ss vim-spell

I file dei dizionari possono essere trovati anche nell'archivio FTP di Vim. Mettere i dizionari scaricati nella cartella ~/.vim/spell e configurare il dizionario eseguendo: :setlocal spell spelllang=LL.

Tip:
  • Per abilitare il controllo ortografico soltanto per i documenti LaTeX (o TeX), aggiungere autocmd FileType tex setlocal spell spelllang=en_us al file ~/.vimrc oppure in /etc/vimrc, e riavviare vim. Per il controllo ortografico di linguaggi diversi dall'inglese, semplicemente sostituire en_us con il valore appropriato al proprio linguaggio.
  • Sarà possibile abilitare il controllo ortografico per alcuni tipi di file (ad esempio *.txt) usando il plugin FileType ed una regola personalizzata per dichiarare il tipo di file. Per abilitare il controllo ortografico per ogni file di tipo *.txt, creare il file /usr/share/vim/vimfiles/ftdetect/plaintext.vim, ed inserire la linea autocmd BufRead,BufNewFile *.txt setfiletype plaintext nel file. Successivamente, inserire la linea autocmd FileType plaintext setlocal spell spelllang=en_us nel proprio file ~/.vimrc oppure in /etc/vimrc, e riavviare vim.

Evidenziare la sintassi

Per abilitare l'opzione ed evidenziare la sintassi (syntax highlighting) (vim supporta una vasta lista di linguaggi di programmazione):

filetype plugin on
syntax on

Esempio di ~/.vimrc

Un esempio della configurazione di Vim.

Unire file (Vimdiff)

Vim include un editor di comparazione (un programma che può mostrare le differenze tra due file). Può essere avviato con vimdiff file1 file2; successivamente usare:

]c :        - differenza successiva
[c :        - differenza precedente
Ctrl+w +w   - cambio finestra
do          - invia modifica
dp          - ottieni modifica
zo          - mostra il testo nascosto
zc          - nasconde il testo
:diffupdate - ricontrolla i file in cerca di differenze

Vim Tips

Trucchi per portare a termine alcuni compiti.

Numeri linea

  1. Per mostrare i numeri linea :set number.
  2. Per andare ad una linea specifica :<numero linea>.

Sostituzioni tra linee

Per sostituire solo tra un intervallo di certe linee:

:n,ns/one/two/g

Ad esempio, per sostituire il pattern 'one' con 'two' tra le linee 3 e 4, è possibile eseguire:

:3,4s/one/two/g

Ripristinare la posizione del cursore nei file

Se si desidera che all'apertura di un file vim posizioni il cursore dove era situato durante l'ultima modifica del file, aggiungere la seguente linea al file ~/.vimrc:

if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
endif

Consultare anche questo articolo del wiki di Vim.

Spazio vuoto all'inizio della finestra di gvim

Quando si usa un window manager configurato per ignorare le dimensioni delle finestre, gvim riempirà l'area non funzionale con il colore dell sfondo del tema GTK.

Una soluzione è disabilitare la barra dei menu in .vimrc, questo farà apparire la finestra di gvim come dovrebbe, occupando l'intera area:

set go-=m "remove menubar

Un'altra soluzione consiste nel rendere più omogeneo il colore dello sfondo: semplicemente inserendo questa linea nel file ~/.gtkrc-2.0:

style "vimfix" {
  bg[NORMAL] = "#242424" # this matches my gvim theme 'Normal' bg color.
}
widget "vim-main-window.*GtkForm" style "vimfix"

Sostituire il comando vi con vim

Eseguire questi comandi:

# ln -s $(which vim) /usr/local/bin/vi
# ln -s $(which vim) /usr/local/bin/view

Leggere anche http://superuser.com/questions/27091/vim-to-replace-vi

Altre risorse

Ufficiali

Tutorial

Video

Esempi di configurazione

Altro

  • HOWTO Vim - Articolo del wiki di Gentoo su cui è basato questo articolo (autore sconosciuto).
  • Vivify - Un editor dello schema di colori per Vim