Sei sulla pagina 1di 7

[[Category:Development (Italiano)]]

[[Category:Text editors (Italiano)]]


[[de:Vim]]
[[en:Vim]]
[[es:Vim]]
[[ja:Vim]]
[[lt:Vim]]
[[ru:Vim]]
[[zh-hans:Vim]]
[[zh-hant:Vim]]
''"[http://www.vim.org/about.php 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� [[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|{{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==
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'' (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 ({{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 {{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 {{ic|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 troppo 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 {{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).

{{ic|^}} posizioner� il cursore all'inizio della linea, e {{ic|$}} alla fine di


essa.

{{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 {{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 {{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, {{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===
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.

===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 {{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.

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===
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}}.

===Modalit� visuale===
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.}}

===Trova e sostituisci===
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:

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'' {{ic|:g/}} per ricercare un pattern ed eseguire


un comando per ogni corrispondenza. La sintassi �: {{ic|[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 {{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===

# 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.
# {{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.
# {{ic|yy}} memorizzer� una linea nel buffer.
# {{ic|cc}} canceller� la linea corrente ed attiver� la modalit� inserimento.
# {{ic|*}} evidenzier� la parola corrente e {{ic|n}} la cercher�.

==Configurazione==
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 schema 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:

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 stessa 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

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 {{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

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}}.

{{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.}}

===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 [[Vim/.vimrc (Italiano)|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 {{ic|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===
# Per mostrare i numeri linea {{ic|:set number}}.
# Per andare ad una linea specifica {{ic|:<numero linea>}}.

===Sostituzioni tra linee===


Per sostituire solo tra un intervallo di certe linee:
:''n'',''n''s/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
{{ic|~/.vimrc}}:

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

Consultare anche
[http://vim.wikia.com/wiki/Restore_cursor_to_file_position_in_previous_editing_sess
ion questo articolo] del wiki di Vim.

===Spazio vuoto all'inizio della finestra di gvim===


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 � 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" {
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===
* [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://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html vi-vim trucchi
consigli e Tutorial grafici]
* [http://blog.interlinked.org/tutorials/vim_tutorial.html Vim introduzione e
tutorial]
* [http://vim.runpaint.org/ Vim Recipes] - Un manuale liberamente consultabile.

===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.

===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://www.jukie.net/~bart/conf/vimrc Bart Trojanowski]
* [https://gist.github.com/anonymous/c966c0757f62b451bffa Basic .vimrc]

===Altro===
* [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