Vim It
Vim It
#vim
Sommario
Di 1
Osservazioni 2
Versioni 3
Examples 4
Installazione 4
Fedora 4
Installazione su Mac OS X 5
Installazione regolare 5
Gestore di pacchetti 5
Installazione su Windows 6
cioccolatoso 6
Uscire da Vim 6
Spiegazione: 7
Comando Spiegazione 8
Sospendere vim 8
Nozioni di base 9
Capitolo 2: :globale 12
Sintassi 12
Osservazioni 12
Examples 12
Capitolo 3: autocomandi 14
Osservazioni 14
Examples 14
Capitolo 4: buffer 16
Examples 16
Buffer nascosti 16
Capitolo 5: Chiedi di creare directory inesistenti dopo aver salvato un nuovo file 18
introduzione 18
Examples 18
Examples 19
In modalità normale: 19
Sintassi 20
Osservazioni 20
Examples 20
Ordinamento normale 20
Ordinamento inverso 20
Combinazione di opzioni 21
Examples 22
Disfare 22
Rifare 22
registri 24
Proposte 24
Copia e taglio 24
incollare 25
Completamento 26
Examples 28
Compilare su Ubuntu 28
Examples 29
Il file vimrc 29
File e directory 30
Opzioni 31
Mapping 32
Mappature ricorsive 32
variabili 33
comandi 33
Esempi 33
funzioni 34
Esempio 34
Gruppi di autocomando 35
Esempio 35
Condizionali 35
Combinazioni di colori 36
plugin 37
Sintassi 38
Examples 38
Sintassi 40
Osservazioni 40
Examples 40
jk 42
Blocco maiuscole 43
Linux 43
finestre 43
Mac OS 43
Osservazioni 48
Examples 48
Examples 50
Controllo ortografico 50
Examples 51
Examples 52
Examples 54
File di configurazione 54
Osservazioni 55
Examples 55
parola 55
Examples 56
Osservazioni 59
Examples 59
Il principio 59
Il metodo manuale 60
impacchettare 60
VAM 60
Vundle 61
Installazione di Vundle 61
Il futuro: pacchetti 62
patogeno 62
Installare Pathogen 62
Benefici 63
Sintassi 64
Osservazioni 64
Examples 64
Orizzontalmente 64
Verticalmente 64
Examples 67
Esempio 69
Examples 73
Scorciatoie di linea 73
votazione 73
Ricerca 74
Line offset 74
Gamme miste 74
Capitolo 24: L'operatore punto 75
Examples 75
Uso di base 75
Imposta il rientro 75
introduzione 77
Osservazioni 77
Examples 77
Examples 79
Macro ricorsive 80
Osservazioni 83
Examples 83
In modalità normale: 83
In modalità visiva: 83
Codice di formattazione 85
introduzione 87
Examples 87
Mappatura di base 87
mappa Operatore 87
comando di mappa 88
Esempi 88
Examples 90
Examples 91
Modalità di inserimento 91
Modalità visiva 91
Seleziona la modalità 91
Sostituisci la modalità 92
Modalità Ex 92
Osservazioni 93
Examples 93
Examples 94
Ricerca 94
Saltare ai personaggi 94
Movimento di base 95
Osservazioni 95
frecce 95
Movimenti di base 95
Cercando il modello 97
TLDR 99
Sintassi 103
Osservazioni 103
Examples 103
Impostato 103
dentellatura 103
Larghezza 103
spazi 103
Tabs 104
introduzione 106
Sintassi 106
Parametri 106
Examples 106
Osservazioni 109
Examples 109
Examples 111
Examples 112
Parametri 113
Examples 113
Incolla il nome del file mentre si trova in modalità di inserimento usando il registro dei 114
Examples 115
Examples 117
Examples 118
Examples 119
introduzione 121
Examples 121
.vimrc 121
Sintassi 122
Parametri 122
Osservazioni 122
Esempio 122
Examples 122
Examples 124
Examples 127
Aiuto! 127
La risposta 127
Cucchiaio 128
nunmap 128
Examples 130
Parametri 131
Osservazioni 131
Examples 131
Sintassi 133
Examples 133
Esegui i comandi della modalità normale Vim attraverso l'istruzione Python 133
Examples 135
Personalizzazione 135
leggero 135
Capitolo 51: vglobal: esegue comandi su linee che non corrispondono a livello globale 136
introduzione 136
Examples 136
: V / modello / d 136
Examples 138
Osservazioni 140
Examples 140
It is an unofficial and free vim ebook created for educational purposes. All the content is extracted
from Stack Overflow Documentation, which is written by many hardworking individuals at Stack
Overflow. It is neither affiliated with Stack Overflow nor official vim.
The content is released under Creative Commons BY-SA, and the list of contributors to each
chapter are provided in the credits section at the end of this book. Images may be copyright of
their respective owners unless otherwise specified. All trademarks and registered trademarks are
the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor
accurate, please send your feedback and corrections to [email protected]
https://riptutorial.com/it/home 1
Capitolo 1: Iniziare con vim
Osservazioni
Vim (o "Vi IMproved") è un editor di testo multi-mode ( modale ) basato su console. È ampiamente
utilizzato e disponibile di default su tutti i sistemi Unix, Linux e Apple OS X. Vim ha una grande
comunità attiva e una vasta base di utenti. L'editor supporta tutti i linguaggi di programmazione più
diffusi e molti plug-in sono disponibili per estenderne le funzionalità.
Sviluppatori come l'editor per la sua velocità, molte opzioni di configurazione e potente editing
basato su espressioni. In modalità "comando" l'editor è controllato da comandi da tastiera, quindi
l'utente non viene distratto da una GUI o da un puntatore del mouse.
Vim è basato sul precedente editore "vi" di Unix creato negli anni settanta ed è stato in continuo
sviluppo dal 1991. Con macro e plugin l'editor offre la maggior parte delle funzionalità di un
moderno IDE. È inoltre in grado di elaborare grandi quantità di testo con il suo linguaggio di
scripting (vimscript) ed espressioni regolari.
Argomenti principali:
• installazione
• modalità di modifica
• navigazione
• editing di base
• editing avanzato
• configurazione
• plugins
• vimscript
• macro
• Comunità
• Progetti correlati
https://riptutorial.com/it/home 2
Versioni
8.0 2016/09/12
7.4 2013/08/10
7.3 2010-08-15
7.2 2008-08-09
7.1 2007-05-12
7.0 2006-05-07
6.0 2001/09/26
5.0 1998/02/19
4.0 1996/05/29
3.0 1994/08/12
2.0 1993/12/14
https://riptutorial.com/it/home 3
Versione Data di rilascio
1.14 1991/11/02
Examples
Installazione
Il Vim sulla tua macchina, se ce n'è uno, è molto probabile che sia una build "piccola" che non ha
funzionalità utili come il supporto degli appunti, l'evidenziazione della sintassi o persino la
possibilità di usare plugin.
Questo non è un problema se tutto ciò di cui hai bisogno è un modo rapido per modificare i file di
configurazione, ma presto otterrai un certo numero di muri se intendi rendere Vim il tuo editor
principale.
Fedora
https://riptutorial.com/it/home 4
$ sudo dnf check-update
$ sudo dnf install vim-X11
Installazione su Mac OS X
La strategia è simile a Mac OS X: installiamo la versione GUI per ottenere sia la GUI che il TUI.
Alla fine dovremmo essere in grado di:
Installazione regolare
Scarica e installa un'istantanea ufficiale come faresti con qualsiasi altra applicazione Mac OS X.
Inserisci lo script mvim che viene fornito in bundle con MacVim da qualche parte nel tuo $PATH .
Gestore di pacchetti
MacPorts:
homebrew:
https://riptutorial.com/it/home 5
Installazione su Windows
Non c'è Vim su sistemi Windows per impostazione predefinita. È possibile scaricare e installare
Vim dal sito Tuxproject per build più aggiornate e complete oppure è possibile scaricare e
installare Vim dal sito Vim ufficiale.
cioccolatoso
Uscire da Vim
Per uscire da Vim, per prima cosa assicurati di essere in modalità Normale premendo Esc .
• :q Invio (ti impedirà di uscire se hai modifiche non salvate - abbreviazione di: esci)
Per chiudere buffer multipli in una volta (anche in più finestre e / o schede), aggiungere la lettera a
qualsiasi comandi sopra (quelli che iniziano con : ). Ad esempio, per scrivere e chiudere tutte le
finestre puoi usare:
• o
:wqa Invio
• :xa Invio - Scrivi tutti i buffer modificati e esce da Vim. Se ci sono buffer senza nome file, che
sono di sola lettura o che non possono essere scritti per un altro motivo, Vim non si chiuderà
• :xa! Invio : consente di scrivere tutti i buffer modificati, anche quelli di sola lettura, e di uscire
da Vim. Se ci sono buffer senza un nome di file o che non possono essere scritti per un altro
https://riptutorial.com/it/home 6
motivo, Vim non si chiuderà
• :qa Invio - prova a uscire, ma interrompi se ci sono dei file non salvati;
• :qa! Invio - esci senza salvare (elimina le modifiche in qualsiasi file non salvato)
Se hai aperto Vim senza specificare un file e vuoi salvare quel file prima di uscire, riceverai E32:
No file name messaggio di E32: No file name . Puoi salvare il tuo file e uscire usando:
Spiegazione:
Il tasto : in realtà apre la modalità Comando . Il comando q è un'abbreviazione di quit , w , di write
e x , di exit (puoi anche digitare :quit :write e :exit se vuoi). I tasti di scelta rapida che non
iniziano con : come ZZ e ZQ riferiscono alle mappature dei tasti in modalità Normale . Puoi pensare
a loro come scorciatoie.
Il ! il tasto viene talvolta utilizzato alla fine di un comando per forzarne l'esecuzione, che consente
di scartare le modifiche nel caso di :q! . Posizionare il ! all'inizio del comando ha un significato
diverso. Ad esempio, si può digitare:! :!q invece di :q! e vim terminerebbe con un errore 127.
Un modo semplice per ricordare questo è pensare ! come un modo di insistere per eseguire
qualcosa. Proprio come quando scrivi: "Voglio smettere!"
vimtutor è un tutorial interattivo che copre gli aspetti più basilari dell'editing del testo.
$ vimtutor
Su Windows, "Vim tutor" può essere trovato nella directory "Vim 7.x" in "Tutti i programmi" nel
menu di Windows.
• Vim Adventures - Una versione di gioco interattiva di vimtutor disponibile sul web. Solo i
primi livelli sono gratuiti.
• Open Vim - Un terminale interattivo che ti insegna i comandi di base con feedback.
• Vim Genius - Un altro terminale interattivo che include anche lezioni intermedie e avanzate
tra cui macro e arglist.
A volte, possiamo aprire un file che non abbiamo il permesso di scrivere in Vim senza usare sudo .
https://riptutorial.com/it/home 7
Utilizzare questo comando per salvare un file di sola lettura modificato in Vim.
Premi O e il file verrà salvato. Rimane aperto in vi / vim per ulteriori modifiche o letture e puoi
uscire normalmente digitando :q! poiché il file è ancora aperto in sola lettura.
Comando Spiegazione
fonti:
Sospendere vim
Quando si utilizza vim dalla riga di comando, è possibile sospendere vim e tornare al prompt,
senza effettivamente uscire da vim . Quindi in seguito sarai in grado di riprendere la tua sessione
vim dallo stesso prompt.
In modalità normale (in caso contrario, premere esc per arrivarci), emettere uno di questi comandi:
:st entra
:sus entra
https://riptutorial.com/it/home 8
:stop enter
:suspend invio
Nota: se è impostato l' autowrite , i buffer con modifiche e nomi di file verranno scritti. Aggiungi un
! prima di entrare per evitare, ad es. :st! entrare .
Successivamente, quando si desidera tornare alla propria sessione vim , se non sono stati sospesi
altri lavori, l'emissione di quanto segue ripristinerà Vim come lavoro in primo piano.
fg entrare
Altrimenti dovrai trovare l'ID di lavoro della tua sessione di vim immettendo i jobs entrata e quindi
mettendo in primo piano i lavori corrispondenti fg %[job ID] inserisci es. fg %1 invio .
Nozioni di base
Esegui tutorial interattivi Vim quante volte è necessario per sentirsi a proprio agio con le basi.
Vim offre diverse modalità, ad es. Modalità normale , modalità inserimento e modalità riga di
comando .
La modalità di inserimento è per l'inserimento diretto del testo, in questa modalità vim è simile ad
altri più semplici editor di testo. Per entrare nella modalità di inserimento premere i in modalità
normale. Per lasciarlo, premere <ESC> (tasto Esc).
La modalità riga di comando serve per eseguire comandi più complessi come il salvataggio del
file e l'uscita da vim. Premere : per avviare la modalità della riga di comando. Per uscire da
questa modalità è anche possibile premere <ESC> . Per salvare le modifiche al file utilizzare :w (o
:write ). Per uscire da vim senza salvare le modifiche, utilizzare :q! (o :quit! ).
Comando Descrizione
(inserire) entra nella modalità di inserimento prima della posizione corrente del
i
cursore
entra nella modalità di inserimento prima del primo carattere stampabile della
I
riga corrente
https://riptutorial.com/it/home 9
Comando Descrizione
<Esc> , <Cc> esce dalla modalità di inserimento e ritorna alla modalità normale
u disfare
<Cr> rifare
dd , dw , dl , tagliare la linea corrente, dal cursore alla parola successiva o il carattere, dalla
d$ posizione corrente alla fine della riga corrente, nota: D è l'equivalente di d$
yy , yw , yl , yank ("copia") la riga corrente, dal cursore alla parola successiva o il carattere,
y$ rispettivamente la posizione corrente alla fine della riga corrente
per creare una nuova riga vuota, dopo o prima di quella corrente e accedere
o ,O
alla modalità di inserimento
https://riptutorial.com/it/home 10
Comando Descrizione
:help
{subject} mostra aiuto per un argomento specifico
Vim salva tutte le modifiche non salvate in un file di scambio , un file aggiuntivo che viene
eliminato una volta che le modifiche sono state salvate. Il nome del file di scambio è in genere il
nome del file in fase di modifica preceduto da a . e con un suffisso .swp (puoi vederlo con :sw ).
Quindi, nel caso in cui il processo Vim termini prima che tu abbia avuto la possibilità di salvare le
tue modifiche, puoi ripristinare il tuo lavoro applicando le modifiche contenute nel file di scambio al
tuo file corrente usando l'opzione della riga di comando -r . Ad esempio se myFile è il file che stavi
modificando, usa:
$ vi -r myFile
Se esiste un file di scambio, vim dovrebbe comunque richiedere comunque le opzioni di ripristino
$ vi myFile
E325: ATTENTION
Found a swap file by the name ".myFile.swp"
...
Swap file ".myFile.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
Se si sceglie (R) ecover, vengono applicate le modifiche dal file swp ma il file di swap non verrà
eliminato, quindi non dimenticare di eliminare il file swap in seguito se si è soddisfatti del ripristino.
https://riptutorial.com/it/home 11
Capitolo 2: :globale
Sintassi
• :[<range>]g[lobal]/{<pattern>}/[<command>]
• :[<range>]g[lobal]!/{<pattern>}/[<command>] (invertito)
• :[<range>]v[global]/{<pattern>}/[<command>] (invertito)
Osservazioni
Il comando "globale" di Vim viene utilizzato per applicare un comando ex a ogni riga in cui una
regex corrisponde.
Examples
Utilizzo di base del comando globale
:g/Hello/d
Cancellerà ogni riga contenente il testo "Ciao". Nota importante : questo non è il normale
comando di modalità d , questo è il comando ex :d .
È possibile utilizzare il comando globale per applicare le normali sequenze di tasti in modalità
invece di comandi ex anteponendo normal o norm al comando. Per esempio:
:g/Hello/norm dw
Il comando
:g/apples/y A
sarà yank linee contenenti la parola mele in a registro, che può essere incollato con "ap . Qualsiasi
espressione regolare può essere utilizzato.
Notare lo spazio prima di A e la maiuscola della lettera di registro. Se viene utilizzata una lettera
maiuscola come registro di scorrimento, le corrispondenze verranno aggiunte a quel registro. Se
viene utilizzata una lettera minuscola, solo l' ultima partita verrà inserita in quel registro.
https://riptutorial.com/it/home 12
Sposta / raccogli linee contenenti informazioni chiave
:g/ending/m$
m significa mossa
$ significa fine del buffer, mentre 0 significa inizio del buffer.
https://riptutorial.com/it/home 13
Capitolo 3: autocomandi
Osservazioni
Comandi autocmd surround
Ad esempio, se .vimrc tuo .vimrc alcune volte mentre lo modifichi, vim può rallentare.
Ecco la prova:
:autocmd BufWritePost * if &diff | diffupdate | endif " update diff after save
:autocmd BufWritePost * if &diff | diffupdate | endif " update diff after save
Se ora scrivi :autocmd BufWritePost * , vedrai entrambe le righe nell'output, non solo una.
Entrambi vengono giustiziati.
Per evitare questo comportamento, racchiudi tutti i tuoi autocmd come segue:
if has ('autocmd') " Remain compatible with vi which doesn't have autocmd
augroup MyDiffUpdate " A unique name for the group. DO NOT use the same name twice!
autocmd! " Clears the old autocommands for this group name
autocmd BufWritePost * if &diff | diffupdate | endif " Update diff after save
" ... etc ...
augroup END
endif
Examples
Genera automaticamente .vimrc dopo aver salvato
Caratteristiche:
https://riptutorial.com/it/home 14
fugitive://diff)
• has() impedirà un errore se si usano versioni incompatibili, come vim-tiny .
• autocmd! evita l'accumulo di più autocomandi identici se questo file è di nuovo acquistato.
(Cancella tutti i comandi nel gruppo con nome, quindi il nome del gruppo è importante).
https://riptutorial.com/it/home 15
Capitolo 4: buffer
Examples
Gestione dei buffer
È possibile utilizzare i buffer per lavorare con più file. Quando apri un file usando
:e path/to/file
si apre in un nuovo buffer (il comando significa modifica del file). Nuovo buffer che contiene una
copia temporanea del file.
È possibile passare al buffer precedente con :bp[rev] e il buffer successivo con :bn[ext] .
Puoi andare ad un buffer particolare con b{n} per andare al n ° buffer. b2 passa al secondo buffer.
Buffer nascosti
Puoi disabilitarlo aggiungendo set hidden al tuo file .vimrc. Con questa opzione le tue modifiche
rimarranno nel buffer, ma non verranno salvate su disco.
:b [part_of_filename]<Tab><Tab><Tab>...<Enter>
La prima scheda espanderà la parola in un nome file completo e le successive schede Tab
scorreranno nell'elenco delle possibili corrispondenze.
Quando sono disponibili più corrispondenze, puoi visualizzare un elenco di corrispondenze prima
dell'espansione della parola impostando questa opzione:
:set wildmode=longest:full:list,full
Questo ti consente di affinare la tua parola se l'elenco delle corrispondenze è troppo lungo, ma
per eseguire l'espansione è necessaria una pressione extra su Tab . Aggiungi l'impostazione al tuo
$MYVIMRC se vuoi mantenerlo.
https://riptutorial.com/it/home 16
Ad alcune persone piace avviare questo processo con una keymap che elenca per prima cosa i
buffer:
:nnoremap <Leader>b :set nomore <Bar> :ls <Bar> :set more <CR>:b<Space>
:b [buffer_num]
<C-^> passerà al e dal file modificato precedente. Sulla maggior parte delle tastiere <C-^> è CTRL-
6.
3<C-^> passerà al buffer numero 3. Questo è molto veloce, ma solo se si conosce il numero del
buffer.
https://riptutorial.com/it/home 17
Capitolo 5: Chiedi di creare directory
inesistenti dopo aver salvato un nuovo file
introduzione
Se si modifica un nuovo file: vim these/directories/dont/exist/newfile , non sarà in grado di
salvare il file come directory di vim sta cercando di salvare in non esiste.
Examples
Richiedi di creare le directory con: w o creale in modo invisibile con: w!
Questo codice ti chiederà di creare la directory con :w , o semplicemente farlo con :w! :
augroup vimrc-auto-mkdir
autocmd!
autocmd BufWritePre * call s:auto_mkdir(expand('<afile>:p:h'), v:cmdbang)
function! s:auto_mkdir(dir, force)
if !isdirectory(a:dir)
\ && (a:force
\ || input("'" . a:dir . "' does not exist. Create? [y/N]") =~? '^y\%[es]$')
call mkdir(iconv(a:dir, &encoding, &termencoding), 'p')
endif
endfunction
augroup END
Leggi Chiedi di creare directory inesistenti dopo aver salvato un nuovo file online:
https://riptutorial.com/it/vim/topic/9470/chiedi-di-creare-directory-inesistenti-dopo-aver-salvato-un-
nuovo-file
https://riptutorial.com/it/home 18
Capitolo 6: Codice di formattazione
automatica
Examples
In modalità normale:
In modalità normale:
https://riptutorial.com/it/home 19
Capitolo 7: Comandi in modalità normale
Sintassi
• : [range] sor [t] [!] [b] [f] [i] [n] [o] [r] [u] [x] [/ {pattern} /]
Osservazioni
Vedi l' ordinamento nel manuale di vim per la spiegazione canonica
Examples
Ordinamento del testo
Ordinamento normale
Evidenzia il testo da ordinare e il tipo:
:sort
Ordinamento inverso
:sort!
Ordinamento numerico
Ordina per il primo numero da visualizzare su ogni riga:
:sort n
https://riptutorial.com/it/home 20
Rimuovi i duplicati dopo l'ordinamento
:sort u (u sta per unique)
Combinazione di opzioni
Per ottenere un ordinamento inverso alla distinzione tra maiuscole e minuscole con i duplicati
rimossi:
:sort! iu
https://riptutorial.com/it/home 21
Capitolo 8: Comandi in modalità normale
(modifica)
Examples
Introduzione: nota rapida sulla modalità normale
In modalità normale, comandi possono essere inseriti da combinazioni di tasti diretti (digitando u
per annullare l'ultima modifica, per esempio). Questi comandi hanno spesso equivalenti in
modalità 'ex', cui si accede digitando due punti:, che vi porterà in un buffer sola riga nella parte
inferiore della finestra di Vim.
Nella modalità 'ex', dopo aver digitato i due punti si digita un nome di comando o la sua
abbreviazione seguita da Invio per eseguire il comando. Così,: undo Inserire compie la stessa
cosa che direttamente digitando u in modalità normale.
Puoi vedere che i comandi diretti saranno spesso più veloci (una volta appreso) rispetto ai
comandi "ex" per la modifica semplice, ma per completezza, laddove possibile nella
documentazione che segue, se entrambi sono disponibili per l'uso, verranno mostrati entrambi.
La maggior parte di questi comandi può anche essere preceduta da un conteggio mediante il
prefisso o l'intercalatura di un numero: digitando 3dd in modalità normale, ad esempio, vengono
eliminate tre righe (a partire dalla posizione corrente del cursore).
Disfare
Comando : Descrizione
Tieni presente che in Vim, la "modifica più recente" varia in base alla modalità in cui ti trovi. Se
inserisci la modalità di inserimento ( i ) e digiti un intero paragrafo prima di tornare alla modalità
normale ( Esc ), l' intero paragrafo è considerato il cambiamento più recente.
Rifare
Comando : Descrizione
red ,
Ctrl-R Ripristina la modifica annullata più recente
redo
https://riptutorial.com/it/home 22
Comando : Descrizione
C'è un altro modo per annullare e ripetere le modifiche in Vim che viene gestito in modo
leggermente diverso. Quando si annulla un cambiamento con la u, si attraversano il backup dei
nodi su un 'albero' delle modifiche, e premendo Ctrl-R passeggiate indietro quei nodi in ordine.
(L'albero di annullamento è un argomento separato ed è troppo complesso da trattare qui.)
Puoi anche usare U (vale a dire le lettere maiuscole) per rimuovere tutte le ultime modifiche su una
singola riga (la linea in cui sono state apportate le ultime modifiche). Questo non attraversa i nodi
dell'albero nello stesso modo in cui tu . L'utilizzo di U in realtà conta come un cambiamento stesso
- un altro nodo in avanti sull'albero - in modo che se si preme U una seconda volta
immediatamente dopo il primo, si comporterà come un comando Ripeti.
Il comando Ripeti, eseguito con il tasto punto o punto ( . ), È più utile di quanto non appaia prima.
Una volta imparato, ti troverai a usarlo spesso.
Comando : Descrizione
Quindi, per un esempio molto semplice, se apporti una modifica alla riga 1 digitando i I Esc, con il
seguente risultato:
1 I made a mistake
2 made a mistake
3 made a mistake
Il cursore si troverà nella posizione 1 della riga 1 e tutto ciò che devi fare per correggere le due
righe successive è premere j. due volte - cioè, j per spostarsi lungo una linea e . ripetere l'ultimo
cambiamento, che era l'aggiunta I . Non è necessario tornare alla modalità di inserimento due
volte per correggere tali linee.
Diventa molto più potente quando viene utilizzato per ripetere i macro .
In Vim, queste operazioni sono gestite in modo diverso da quello a cui potresti essere abituato in
quasi tutti gli altri editor moderni o word processor ( Ctrl-C , Ctrl-X , Ctrl-V ). Per capire, devi
conoscere un po 'di registri e movimenti.
https://riptutorial.com/it/home 23
Nota: questa sezione non coprirà la copia e il taglio in modalità visiva o lo yanking della portata in
quanto questi non rientrano nell'ambito della modalità normale e dell'editing di base.
registri
Vim utilizza il concetto di registri per gestire lo spostamento del testo all'interno del programma
stesso. Windows ha un unico appunto per questo scopo, che è analogo a un singolo registro in
Vim. Quando copi, taglia e incolla in Vim, ci sono modi per usare un flusso di lavoro di editing
altrettanto semplice (in cui non devi pensare ai registri), ma ci sono anche possibilità molto più
complesse.
Un registro è mirato per l'input / output di un comando mediante il prefisso del comando con " e un
nome di lettera minuscola.
Proposte
Un movimento in Vim è un comando che sposta la posizione del cursore altrove. Quando copia,
taglia e incolla in modalità normale, le possibilità di selezione del testo per il movimento sono
limitate dalla tua conoscenza dei movimenti. Alcuni saranno illustrati di seguito.
Copia e taglio
I comandi di base di copia e taglio sono basati su y ('yank', per copia) e d ('cancella', per tagliare).
Vedrai le somiglianze nella seguente tabella.
Comando : Descrizione
y
{movimento} Copia ("yank") testo indicato dal movimento nel registro predefinito
20" byy Copia venti righe, a partire dal cursore, nel registro 'b'
d
{movimento} Taglia (cancella) il testo indicato dal movimento nel registro predefinito
Taglia dal cursore alla fine della riga nel registro predefinito (NON è un
D
sinonimo di dd )
20" BDD Taglia venti righe, a partire dal cursore, nel registro 'b'
https://riptutorial.com/it/home 24
Nota: quando qualcosa viene copiato o tagliato a linewise , il comportamento di incollamento
mostrato di seguito posizionerà il testo prima o dopo la linea corrente (anziché il cursore). Gli
esempi seguono per chiarire.
incollare
Esistono diversi modi per incollare in Vim, a seconda di ciò che stai cercando di realizzare.
Comando : Descrizione
P Incolla ciò che si trova nel registro predefinito prima del cursore
Posso fare il più semplice copia e incolla posizionando il mio cursore da qualche parte sulla riga 1
e digitando ddp . Ecco i risultati:
Quello che è successo? dd 'Taglia' la prima riga (linewise) nel registro di default - che conterrà solo
una cosa alla volta, come gli appunti di Windows - e p incolla la riga dopo quella corrente, che è
appena cambiata a causa del comando dd .
Ecco un esempio non proprio semplice. Ho bisogno di spostare un paio di parole. (Questo è
inventato e non necessario, ma puoi applicare questo principio a pezzi più grandi di codice.)
Posso ripetere w per arrivare alla "o" nella parte anteriore di "order" (o b se ho appena digitato e ho
realizzato il mio errore).
https://riptutorial.com/it/home 25
Poi w per arrivare al 'a' in 'sono'.
A seguito di questo, vorrei digitare "bdaw to put" sono "nel registro" b ". Ora ho visualizzato questo:
Per essere chiari, ora 'ordina' è nel registro 'a' e 'are' è nel registro 'b', come due distinti appunti.
Per sistemare correttamente le parole, digito b per arrivare a "o" in "out", quindi "bP to put" sono
"dal registro" b "di fronte a" out ":
Ora scrivo A per arrivare alla fine della riga, seguito da Space Esc (supponendo che non ci sia
spazio dopo "of") e "ap per mettere" ordine "a cui appartiene.
Completamento
Il completamento può essere utilizzato per abbinare le parole utilizzate in un documento. Quando
si digita una parola, Ctrl pe Ctrl n corrisponderà a parole simili precedenti o successive nel
documento.
Questo può anche essere combinato con la modalità Ctrl-X per completare intere linee. Ad
esempio, scrivi qualcosa come:
Thi
This
Ora ancora in modalità di inserimento, premi Ctrl x Ctrl p e quindi la parola successiva sarà
completata con conseguente risultato:
This is
https://riptutorial.com/it/home 26
quindi sul prossimo tipo di linea:
Thi
Se il completamento in corso è un nome file, Ctrl x Ctrl f può essere utilizzato per completare tale
directory. Genere:
~/Deskt
~/Desktop
sarà completato (se in quella posizione). Ctrl x Ctrl f può quindi essere utilizzato ripetutamente
per elencare i file nel desktop.
https://riptutorial.com/it/home 27
Capitolo 9: Come compilare Vim
Examples
Compilare su Ubuntu
1. Ottieni una copia del codice sorgente scaricando dal repository Vim ufficiale su GitHub .
2. Ottieni le dipendenze eseguendo $ sudo apt-get build-dep vim-gnome o simile.
3. Vai alla directory del codice sorgente Vim: cd vim/src
4. Esegui $ ./configure . È possibile personalizzare la build (e abilitare le integrazioni
linguistiche Perl, Python, ecc.) Passando le opzioni di configurazione. Vedi src/INSTALL per
una panoramica.
5. Esegui $ make .
6. Completa l'installazione eseguendo $ sudo make install . Poiché Vim non è gestito dal
gestore pacchetti, verrà inserito in /usr/local/bin/vim , anziché in /usr/bin/vim . Quindi, per
eseguirlo, è necessario specificare il percorso completo o assicurarsi che /usr/local/bin sia
prima di /usr/bin nel PATH (di solito è).
7. (Facoltativo) Rimuovere la versione fornita da distribuzione di Vim se era già stata installata:
$ sudo apt-get remove vim vim-runtime gvim .
Per verificare l'installazione, è possibile eseguire $ which vim che dovrebbe restituire qualcosa
come /usr/local/bin/vim se l'installazione ha avuto successo.
https://riptutorial.com/it/home 28
Capitolo 10: Configurazione di Vim
Examples
Il file vimrc
Il file .vimrc (pronunciato Vim-wreck) è un file di configurazione di Vim. Mantiene i comandi che
verranno eseguiti da Vim ogni volta che inizia.
Di default il file è vuoto o inesistente; puoi usarlo per personalizzare il tuo ambiente Vim.
Per scoprire dove Vim si aspetta che il file vimrc sia archiviato, apri Vim ed esegui:
:echo $MYVIMRC
Unix: su un sistema Unix come Mac o Linux il tuo vimrc sarà chiamato .vimrc e di solito si troverà
nella tua directory home ( $HOME/.vimrc ).
Windows: su Windows sarà chiamato _vimrc e si trova nella directory home ( %HOMEPATH%/_vimrc ).
All'avvio, Vim cercherà in più posti per un file vimrc. Il primo che esiste è usato, gli altri sono
ignorati. Per un riferimento completo, consultare l'articolo della documentazione di :h $MYVIMRC .
Se non sai quali opzioni dovresti usare, potresti essere interessato al comando :options .
Questo aprirà una divisione con tutte le opzioni di Vim elencate e con il loro valore attuale
visualizzato. Ci sono 26 sezioni per visualizzare tutte le opzioni che puoi provare.
per esempio
4 displaying text
...
Su una riga di valore (ad es. set nowrap ) è possibile premere CR per commutare il valore (se si
tratta di un valore binario). Su una linea di opzioni (ad es. wrap long line wrap ritorno a wrap long
line wrap ) è possibile premere CR per accedere alla documentazione di questa opzione.
https://riptutorial.com/it/home 29
File e directory
Qualunque cosa tu faccia per personalizzare Vim, non dovrebbe MAI accadere al di fuori di $HOME :
La posizione canonica per la tua directory vimrc e la tua directory vim è alla radice della directory
$HOME :
• su sistemi simil-Unix
• Su Windows
Vim 7.4 ha permesso di mantenere il tuo bel vimrc nella tua directory di vim . È davvero una buona
idea, se non altro perché rende più facile spostare la tua configurazione.
• su sistemi simil-Unix
$HOME/.vim/vimrc
• Su Windows
$HOME\vimfiles\vimrc
Se vuoi i vantaggi di un vim/ autonomo vim/ ma usare sia la versione 7.4 che una versione
precedente, o solo una versione precedente, la soluzione più semplice e a prova di futuro è quella
di mettere questa linea e solo questa linea:
runtime vimrc
in questo file:
• su sistemi simil-Unix
$HOME/.vimrc
https://riptutorial.com/it/home 30
• Su Windows
$HOME\_vimrc
Opzioni
• opzioni booleane,
• opzioni di stringa,
• numero di opzioni.
https://riptutorial.com/it/home 31
Usare un'espressione come valore
• utilizzando la concatenazione:
• utilizzando :let :
Mapping
Mappature ricorsive
Utilizzare i mapping ricorsivi solo se si intende utilizzare altri mapping nei mapping:
nnoremap b B
nmap <key> db
In questo esempio, b è fatto per funzionare come B in modalità normale. Dato che usiamo b in una
mappatura ricorsiva , premendo <key> funzionerà come dB , non come db .
nnoremap <key> db
In questo esempio, usiamo b in una mappatura non ricorsiva, quindi premendo il tasto funzionerà
sempre come db , sia che rimappiamo b oppure no.
https://riptutorial.com/it/home 32
Esecuzione di più comandi da una mappatura
variabili
unlet variable
In Vim, le variabili possono essere esaminate anteponendo una singola lettera e due punti al loro
nome. Gli autori di plug-in utilizzano questa funzionalità per simulare le opzioni:
let g:plugin_variable = 1
comandi
• Non dimenticare il botto per consentire a Vim di sovrascrivere quel comando la prossima
volta che ricarichi il tuo vimrc.
• I comandi personalizzati devono iniziare con un carattere maiuscolo.
Esempi
https://riptutorial.com/it/home 33
command! MyOtherCommand command | Command | command
funzioni
• Non dimenticare il botto per consentire a Vim di sovrascrivere quella funzione la prossima
volta che ricarichi lo script in cui è definita la funzione.
• Le funzioni personalizzate devono iniziare con caratteri maiuscoli (funzioni globali) o con s:
(funzioni locali di script) oppure devono essere preceduti dal nome associato al plug-in di
caricamento automatico dove sono definiti (ad es. In {&rtp}/autoload/foo/bar.vim potremmo
definire foo#bar#functionname() ).
• Per poter utilizzare i parametri nella funzione, utilizzare a:parameter_name . Le funzioni
variabili possono essere definite con i puntini di sospensione ... , per accedere ai parametri
utilizzare a:000 (elenco di tutti i parametri) o a:0 (numero di parametri uguale a len(a:000) ),
a:1 prima senza nome parametri e così via.
• Le funzioni possono essere chiamate in questo modo :call MyFunction(param1, param2)
• Ogni riga di una funzione inizia implicitamente con a : quindi tutti i comandi sono comandi di
due punti
• Per evitare che la funzione continui la sua esecuzione in caso di errore, è meglio annotare la
firma della funzione con abort
Esempio
function! s:my_private_function() " note we don't need to capitalize the first letter this
time
echo "Hi!"
endfunction
Se la funzione locale dello script verrà utilizzata in una mappatura, è necessario fare riferimento
utilizzando il prefisso <SID> speciale:
https://riptutorial.com/it/home 34
Vedi :help user-functions .
Si noti, tuttavia, che dal Vim 7 è considerata una buona pratica definire abbreviazioni di mapping,
comandi e menu nei plugin (ft) e definire funzioni nei plugin di caricamento automatico, ad
eccezione delle funzioni che i plugin devono utilizzare al momento del caricamento. Ciò significa
che al giorno d'oggi la necessità di richiamare le funzioni locali degli script dalle mappature non è
così pertinente come una volta.
Gruppi di autocomando
• I gruppi di autocommand sono validi per l'organizzazione ma possono essere utili anche per
il debug. Pensali come piccoli spazi dei nomi che puoi abilitare / disabilitare a piacimento.
Esempio
augroup MyGroup
" Clear the autocmds of the current group to prevent them from piling
" up each time you reload your vimrc.
autocmd!
" These autocmds are fired after the filetype of a buffer is defined to
" 'foo'. Don't forget to use 'setlocal' (for options) and '<buffer>'
" (for mappings) to prevent your settings to leak in other buffers with
" a different filetype.
autocmd FileType foo setlocal bar=baz
autocmd FileType foo nnoremap <buffer> <key> :command<CR>
Condizionali
if has('patch666')
" Do something if Vim has the right patch-level.
endif
if has('feature')
" Do something if Vim is built with 'feature'.
endif
https://riptutorial.com/it/home 35
Comunemente useresti :set per impostare le opzioni a tuo piacimento nel tuo .vimrc . Ci sono
molte opzioni che possono essere cambiate.
:set expandtab
:set shiftwidth=4
:set softtabstop=4
Mostra spazi bianchi e tabulati finali. La visualizzazione delle schede può essere particolarmente
utile quando si cercano errori nei Makefile.
Combinazioni di colori
Vim viene fornito con diversi schemi di colori preinstallati. In Linux, le combinazioni di colori fornite
con Vim sono memorizzate in /usr/share/vim/vim74/colors/ (dove 74 è il numero della versione, i
periodi sans); MacVim li memorizza in
/Applications/MacVim.app/Contents/Resources/vim/runtime/colors .
:colorscheme robokai
Lo schema dei colori di default è creativamente nome default , quindi, per tornare esso uso
:colorscheme default
Per visualizzare tutte le combinazioni di colori attualmente installate, digitare :colorscheme seguito
da spazio e quindi tab o ctrl d .
https://riptutorial.com/it/home 36
Installazione di combinazioni di colori
Le combinazioni di colori installate dall'utente possono essere inserite in ~/.vim/colors/ . Una volta
che una colorscheme colori viene aggiunta a questa directory, verrà visualizzata come opzione per
il comando colorscheme .
Per trovare nuove combinazioni di colori, ci sono siti come i vimcolors che contengono una varietà
di combinazioni di colori. Ci sono anche strumenti come vim.ink e Vivify per aiutarti a creare i tuoi
schemi colore, oppure puoi crearli a mano.
:set relativenumber .
:set norelativenumber .
Nota: per modificare se la riga corrente mostra il numero di linea effettivo o 0 , utilizzare :set
number e :set nonumber comandi non :set nonumber mentre l'attributo relativenumber è attivo.
plugin
I plugin Vim sono addon che possono essere usati per cambiare o migliorare la funzionalità di vim.
https://riptutorial.com/it/home 37
Capitolo 11: Configurazioni utili che possono
essere inserite in .vimrc
Sintassi
• imposta il mouse = a
• impacco
• nmap j gj
• nmap k gk
Examples
Sposta su / giù le linee visualizzate durante il wrapping
Di solito, J e K muovono su e giù per le linee di file. Ma quando si esegue il wrapping, è preferibile
che si spostino verso l'alto e verso il basso sulle linee visualizzate .
set mouse=a
set clipboard=unnamed
Ciò rende possibile copiare / incollare tra Vim e gli appunti di sistema senza specificare alcun
registro speciale.
Funziona solo se l'installazione di Vim è supportata da Appunti. Eseguire il seguente comando nel
terminale per verificare se l'opzione degli appunti è disponibile: vim --version | grep clipboard
https://riptutorial.com/it/home 38
Leggi Configurazioni utili che possono essere inserite in .vimrc online:
https://riptutorial.com/it/vim/topic/6560/configurazioni-utili-che-possono-essere-inserite-in--vimrc
https://riptutorial.com/it/home 39
Capitolo 12: Consigli e suggerimenti per
aumentare la produttività
Sintassi
• : imposta relativenumber
• : imposta il numero
• : set nonum /: imposta nonu
• : pwd
Osservazioni
Questo ricaricamento automatico avverrà solo se modifichi il tuo vimrc in una versione completa di
vim che supporta autocmd .
Examples
Macro "usa e getta" veloci
nnoremap Q @q
Per iniziare a registrare la macro "usa e getta", usa qq . Per terminare la registrazione, premi q (in
modalità normale per entrambi).
Questo è utile per i macro che è necessario ripetere più volte di seguito ma non sarà più possibile
utilizzarli nuovamente in seguito.
Questo è molto comune, memorizzi il percorso di un file o di una cartella, apri Vim e prova a
scrivere ciò che hai appena memorizzato, ma non sei sicuro al 100% che sia corretto, quindi
chiudi l'editor e ricomincia da capo.
Entra nella modalità di inserimento: inserisci o fai come vuoi. Quindi, scrivi /h . Quando il cursore
è sotto h , premi Ctrl x e quindi Ctrl f in modo che l'editor lo completi a /home/ perché il pattern /h
è univoco
https://riptutorial.com/it/home 40
Ora, supponiamo di avere due cartelle dentro /home/ubuntu/ chiamate my_folder_1 my_folder_2
come di solito:
scrivi /h e premi Ctrl x e quindi Ctrl f . Ora hai /home/ Successivo aggiungi te dopo / home / e
premi Ctrl x e poi Ctrl f . Ora hai /home/ubuntu/ perché quel percorso è unico. Ora, scrivi il my after
/home/ubuntu/ e premi Ctrl x e quindi Ctrl f . L'editor completerà la tua parola fino a my_folder_ e
vedrai l'albero delle directory, quindi usa i tasti freccia per scegliere quello che desideri.
Per eliminare alcune righe di testo quando non conosci il numero esatto di righe da eliminare,
prova 10dd , 5dd , 3dd fino a rimuovere tutte le linee.
I numeri di riga relativi risolvono questo problema, supponiamo di avere un file contenente:
Ora esegui :set relativenumber . Una volta fatto il file verrà visualizzato come:
dove 0 è il numero di linea per la linea corrente e mostra anche il numero di linea reale davanti al
numero relativo, quindi ora non devi stimare il numero di linee dalla linea corrente da tagliare o
eliminare o peggio contarle una da uno.
Ora puoi eseguire il tuo solito comando come 6dd e sei sicuro del numero di linee.
https://riptutorial.com/it/home 41
Puoi anche usare la forma abbreviata dello stesso comando :set rnu per attivare numeri relativi e
:set nornu per disattivare lo stesso.
Se anche tu :set number o hai :set number già attivo, otterrai il numero di riga della linea in cui si
trova il cursore.
:set number
:set nonumber
:set nonu
:set nu!
Molti utenti di Vim trovano l' Esc troppo difficile da raggiungere e finiscono per trovare un'altra
mappatura facilmente raggiungibile dalla home row. Nota che Ctrl - [ potrebbe essere equivalente
a Esc su una tastiera inglese, ed è molto più facile da raggiungere.
j k
inoremap jk <ESC>
Questo è veramente facile da innescare; basta distruggere le prime due dita sulla fila di casa
https://riptutorial.com/it/home 42
contemporaneamente. È anche difficile innescare accidentalmente poiché "jk" non appare mai in
nessuna parola inglese, e se sei in modalità normale non fa nulla. Se non digiti troppo "blackjack",
considera anche l'aggiunta di inoremap kj <ESC> modo da non inoremap kj <ESC> preoccupare del
timing dei due tasti.
Blocco maiuscole
Linux
Su Linux, puoi usare xmodmap per fare in modo che Caps Lock faccia la stessa cosa di Esc . Metti
questo in un file:
!! No clear Lock
clear lock
!! make caps lock an escape key
keycode 0x42 = Escape
finestre
Su Windows è possibile utilizzare SharpKey o AutoHotkey .
Mac OS
Se hai macOS 10.12.1 o successivo, puoi rimappare Caps Lock in Escape usando le Preferenze
di Sistema. Seleziona Tastiera, vai alla scheda Tastiera e fai clic su Tasti di modifica.
https://riptutorial.com/it/home 43
https://riptutorial.com/it/home 44
attorno al cursore, utilizzare il seguente comando ( <ESC> - tasto escape, <CR> - tasto invio):
vi{<ESC>/\%Vfoo<CR>
ora puoi saltare tra le partite all'interno del blocco premendo n e p . Se hai abilitato l'opzione
hlsearch , questo evidenzierà tutte le corrispondenze. \%V è una parte del modello di ricerca
speciale, che indica a vim di cercare solo nell'area visivamente selezionata. Puoi anche fare una
mappatura come questa:
:vnoremap g/ <ESC>/\%V
vi{g/foo<CR>
vi{
:'<,'>g/foo/#
Molti utenti si trovano in una situazione in cui vogliono semplicemente copiare, spostare o
eliminare una riga rapidamente e tornare a dove erano.
Di solito, se vuoi spostare una riga che contiene il lot parole sotto la riga corrente devi digitare
qualcosa come:
/lot<Esc>dd<C-o>p
/lot$m
https://riptutorial.com/it/home 45
sposterebbe la linea che contiene lot sotto la linea su cui si trovava il cursore quando hai iniziato
la ricerca.
Per ricaricare automaticamente vimrc al salvataggio, aggiungi quanto segue al tuo vimrc :
if has('autocmd') " ignore this section if your vim does not support autocommands
augroup reload_vimrc
autocmd!
autocmd! BufWritePost $MYVIMRC,$MYGVIMRC nested source %
augroup END
endif
:so $MYVIMRC
nested è utile se stai usando vim-airline. Il processo di caricamento della compagnia aerea attiva
alcuni autocomandi, ma dal momento che si sta eseguendo un autocomando essi vengono saltati.
nested consente l'attivazione di autocomandi nidificati e consente alla compagnia aerea di caricarsi
correttamente.
set wildmenu
set wildmode=list:longest,full
Otterrai
https://riptutorial.com/it/home 46
:color 0x7A69_dark
https://riptutorial.com/it/home 47
Capitolo 13: Conversione di file di testo da
DOS a UNIX con vi
Osservazioni
Il carattere ^M indica un ritorno a capo in Vim ( <cm> o solo <CR> ). Vim mostra questo personaggio
quando almeno on line nel file usa le terminazioni di linea LF . In altre parole, quando Vim
considera un file che ha fileformat=unix ma alcune linee hanno ritorni a CR ( CR ), i ritorni a capo
vengono visualizzati come ^M
Un file che ha una linea singola con la fine della linea LF e diverse linee con terminazioni di linea
CRLF viene spesso creato modificando erroneamente un file creato su un sistema basato su
MSDOS. Ad esempio, creando un file con un sistema operativo MSDOS, copiandolo su un
sistema basato su UNIX e quindi anteponendo una puntura di hash-bang (ad es. #!/bin/sh )
usando strumenti sul sistema operativo basato su UNIX.
Examples
Conversione di un file di testo DOS in un file di testo UNIX
Molto spesso hai un file che è stato modificato in DOS o Windows e lo stai visualizzando sotto
UNIX. Questo può apparire come il seguente quando si visualizza il file con vi.
:1,$s/^M//g
Questo esegue il comando dalla prima riga '1' all'ultima riga '$', il comando è di sostituire 's' '^ M'
per niente '' e per questo globalmente 'g'.
Quando Vim apre un file con terminazioni di riga <CR><NL> (comune su sistemi operativi basati su
MSDOS, chiamato anche CRLF ) imposterà fileformat su dos , puoi controllare con:
:set fileformat?
fileformat=dos
https://riptutorial.com/it/home 48
O semplicemente
:set ff?
fileformat=dos
Per convertirlo in terminazioni di riga <NL> (in comune con la maggior parte dei sistemi operativi
basati su UNIX, chiamato anche LF ), è possibile modificare l'impostazione del fileformat e Vim
modificherà il buffer.
:set ff=unix
https://riptutorial.com/it/home 49
Capitolo 14: Correttore ortografico
Examples
Controllo ortografico
Per attivare il programma di controllo ortografico di vim :set spell . Per disattivarlo, esegui :set
nospell . Se vuoi sempre che il correttore ortografico sia attivo, aggiungi l' set spell al tuo vimrc. È
possibile attivare l'ortografia solo per determinati tipi di file utilizzando un comando automatico.
Una volta attivato il correttore ortografico, le parole errate verranno evidenziate. Digitare ]s per
passare alla successiva parola errata e [s per passare alla precedente. Per visualizzare un elenco
di correzioni ortografiche, posiziona il cursore su una parola errata e digita z= . Puoi digitare il
numero della parola che desideri sostituire con la parola errata e premere <enter> per sostituirlo,
oppure puoi semplicemente premere invio per lasciare la parola invariata.
Con il cursore su una parola errata, puoi anche digitare <number>z= per passare alla <number>
correzione senza visualizzare la lista. Normalmente userete 1z= se pensate che la prima ipotesi di
vim sia la parola corretta.
Per impostare l'elenco di parole che vim utilizzerà per il controllo ortografico, impostare l'opzione
spelllang . Per esempio
https://riptutorial.com/it/home 50
Capitolo 15: Costruire da vim
Examples
Iniziare una costruzione
Tutti gli [arguments] (possono essere diversi) vengono passati a makeprg proprio come se fosse
stato invocato con :!{makeprg} [arguments] .
L'output del programma invocato viene analizzato per errori in base 'errorformat' . Se vengono
rilevati errori, viene visualizzata la finestra di aggiornamento rapido per visualizzarli.
può essere utilizzato per scorrere tra gli errori visualizzati nella finestra di
:cnext :cprev
aggiornamento rapido. :cc salterà all'errore sotto il cursore.
Va notato che nei sistemi in cui gnumake è installato e configurato correttamente, non è
generalmente necessario definire &makeprg su qualsiasi cosa che non sia il suo valore predefinito
per compilare progetti mono-file. Quindi, in C, C ++, Fortran ... scrivi semplicemente :make %< per
compilare il file corrente. Secondo il file sorgente è nella directory corrente, :!./%< lo eseguirà. Le
opzioni di compilazione possono essere controllate tramite $CFLAGS , $CXXFLAGS , $LDFLAGS , ecc.
Consulta la documentazione di make relativa alle regole implicite .
https://riptutorial.com/it/home 51
Capitolo 16: dentellatura
Examples
Rientra un intero file usando il motore di indentazione incorporato
In modalità comando (Esc) inserisci :gg=G per utilizzare il motore di indentazione incorporato di
Vim.
Puoi impostare equalprg nel tuo .vimrc per usare uno strumento di formattazione automatica più
sofisticato.
Ad esempio, per usare clang-format per C / C ++ inserisci la seguente riga nel tuo file .vimrc :
Per altri tipi di file, sostituire c,cpp con il tipo di file che si desidera formattare e clang-format con lo
strumento di formattazione preferito per quel tipo di file.
Per esempio:
Per indentare il nostro outdent della riga corrente in modalità normale, premere il tasto maggiore
di > o il valore minore di < due volte di conseguenza. Per fare lo stesso su più linee basta
aggiungere un numero in anticipo 6>>
Comando Descrizione
https://riptutorial.com/it/home 52
Comando Descrizione
Comando Descrizione
>gg rientro dalla riga corrente alla prima riga nel file
In modalità visuale premendo il tasto maggiore o minore di una sola volta. Si noti che ciò provoca
un'uscita dalla modalità visiva . Quindi puoi usare . per ripetere la modifica se è necessario e u per
annullare.
https://riptutorial.com/it/home 53
Capitolo 17: Differenze tra Neovim e Vim
Examples
File di configurazione
In Vim, il tuo file di configurazione è ~/.vimrc , con ulteriori file di configurazione in ~/.vim .
In Neovim, i file di configurazione si trovano in ~/.config/nvim . Non c'è ~/.nvimrc file ~/.nvimrc .
Invece, usa ~/.config/nvim/init.vim .
Puoi importare la configurazione di Vim direttamente in Neovim usando questo comando Unix:
ln -s ~/.vimrc ~/.config/nvim/init.vim
https://riptutorial.com/it/home 54
Capitolo 18: Espressioni regolari
Osservazioni
eseguire :h pattern per vedere molte informazioni relative a espressioni regolari
Examples
parola
Vim ha operatori speciali per abbinare la parola inizio, parola, fine e così via. \< rappresenta l'inizio
di una parola e \> rappresenta la fine di una parola.
https://riptutorial.com/it/home 55
Capitolo 19: Espressioni regolari in modalità
Ex
Examples
Modifica un'espressione regolare in modalità Ex
Supponiamo che tu stia cercando un pattern Title Case in un file di testo di grandi dimensioni e
che desideri modificare un'espressione regolare errata:
https://riptutorial.com/it/home 56
https://riptutorial.com/it/home 57
https://riptutorial.com/it/vim/topic/6472/espressioni-regolari-in-modalita-ex
https://riptutorial.com/it/home 58
Capitolo 20: Estensione di Vim
Osservazioni
Un plug-in è uno script o un set di script che modifica il comportamento predefinito di Vim,
aggiungendo funzionalità non esistenti o estendendo le funzionalità esistenti.
• commentando,
• rilevamento dell'indentazione,
• completamento automatico,
• fuzzy matching,
• supporto per una lingua specifica,
• eccetera.
• omni-completamento,
• oggetti di testo e movimenti,
• strattonando e mettendo,
• riga di stato,
• cerca e sostituisci,
• commutazione buffer / window / tab page,
• piegatura,
• eccetera.
Examples
Come funzionano i plugin
Il principio
L'opzione 'runtimepath' indica a Vim dove cercare gli script di runtime. Il valore predefinito fa in
modo che Vim cerchi gli script nelle seguenti directory nell'ordine :
• su sistemi simil-UNIX
○ $HOME/.vim/
https://riptutorial.com/it/home 59
○ $VIM/vimfiles/
○ $VIMRUNTIME/
○ $VIM/vimfiles/after/
○ $HOME/.vim/after/
• Su Windows
○ $HOME/vimfiles/
○ $VIM/vimfiles/
○ $VIMRUNTIME/
○ $VIM/vimfiles/after/
○ $HOME/vimfiles/after/
Tra le directory sopra riportate, installa solo i plug-in in grassetto. Gli altri causeranno instabilità
senza una buona ragione. L'installazione di un plugin si riduce alla collocazione di ciascuno dei
suoi componenti nella directory corretta sotto $HOME/.vim/ o $HOME/vimfiles/ .
Il metodo manuale
Ciò provocherebbe il plugin all'avvio di Vim. Ora l'utente può utilizzare tutto ciò che è definito al
suo interno. Se il plugin necessita comunque di attivazione, l'utente deve eseguire il comando da
solo ogni volta che lo desidera o aggiungere il comando a .vimrc
impacchettare
Un bundle è una struttura di directory che usa il plugin. Consiste di tutti i file del plugin sotto le
sottodirectory appropriate.
Per installare un tale plugin le sottodirectory dovrebbero essere unite con le loro controparti in
$HOME/.vim/plugin . Questo approccio porta tuttavia a mescolare i file di diversi plugin nelle stesse
directory e potrebbe portare a problemi nello spazio dei nomi.
Quando si utilizza questo approccio, dovrebbe esserci almeno un file .vim directory
$HOME/.vim/bundle/autoload . Questi file verrebbero creati da vim all'avvio.
Nota: a seconda del sistema operativo dell'utente, il prefisso di tutti i percorsi potrebbe essere
$HOME/vimfiles . Per maggiori dettagli vedi Come funzionano i plugin
VAM
https://github.com/MarcWeber/vim-addon-manager
https://riptutorial.com/it/home 60
Vundle
Installazione di Vundle
(I dettagli completi sull'installazione sono disponibili nel Vundle Quick Start )
2. Configura i plugin aggiungendo quanto segue all'inizio del tuo .vimrc , aggiungendo o
rimuovendo i plugin, se necessario (i plugin nella lista sono solo a scopo illustrativo)
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
Plugin
Plugin Git non ospitato su GitHub 'git://git.wincent.com/command-t.git'
https://riptutorial.com/it/home 61
Posizione del plugin uso
Lavorare su un account condiviso, ad esempio, sul nodo head del cluster può sollevare problemi
dal punto di utilizzo del disco dalla directory .vim . Esistono un paio di pacchetti che richiedono
una notevole quantità di spazio su disco, ad esempio YCM . Quindi scegli Vundle tua Vundle plugin
Vundle , ed è molto semplice farlo impostando rtp . Inoltre, se stai pianificando l'installazione di
qualsiasi plugin vim, non fare direttamente git clone nella directory del bundle . Usa il modo
Vundle.
Il futuro: pacchetti
patogeno
vim-pathogen è un gestore runtimepath creato da Tim Pope per semplificare l'installazione di plug-
in e file di runtime nelle proprie directory private.
Installare Pathogen
1. Metti il patogeno in ~/.vim/bundle (qui con Git, ma non è obbligatorio):
Una volta avviato, Pathogen avvierà automaticamente uno sweep attraverso le cartelle in
~/.vim/bundle e caricherà il plugin da ognuno di essi.
https://riptutorial.com/it/home 62
Utilizzo di agente patogeno
1. Metti la directory di primo livello del tuo plugin in ~/.vim/bundle/ per renderla disponibile la
prossima volta che avvii Vim.
2. Esegui :Helptags per indicizzare la documentazione del nuovo plugin.
Benefici
• Ogni plugin risiede nella sua directory in ~/.vim/bundle/ .
• Il tuo .vimrc rimane pulito dalla configurazione necessaria per caricare i plugin.
Il modo in cui esegui queste tre azioni (manualmente, tramite uno strumento di automazione, con
Git / Svn / Hg / qualunque ...) dipende completamente da te.
https://riptutorial.com/it/home 63
Capitolo 21: Finestre divise
Sintassi
• :split <file>
• :vsplit <file>
• :sp <- stenografia per split
• :vsp <- stenografia per vsplit
Osservazioni
Quando viene chiamato dalla riga di comando, è possibile fornire più file nell'argomento e vim
creerà una divisione per ciascun file. Se chiamato dalla modalità ex, è possibile aprire solo un file
per invocazione del comando.
Examples
Apertura di più file in split dalla riga di comando
Orizzontalmente
Verticalmente
È possibile aprire una nuova divisione all'interno di Vim con i seguenti comandi, in modalità
normale :
Orizzontalmente:
Verticalmente:
https://riptutorial.com/it/home 64
:vsplit <file name>
:vnew
split aprirà il file in una nuova divisione nella parte superiore o sinistra dello schermo (o attuale
divisione.) :sp e :vs sono scorciatoie convenienti.
Per modificare le dimensioni della divisione attualmente attiva, utilizzare :resize <new size> .
:resize 30 esempio, il :resize 30 renderebbe la spaccatura di 30 linee alta.
Per cambiare la dimensione del vsplit attualmente attivo, usa :vertical resize <new size> .
:vertical resize 80 esempio, il :vertical resize 80 renderebbe il vsplit 80 caratteri di larghezza.
Modalità normale
Ctrl-w o
Modalità Ex
:only
o breve
:on
Dopo aver aperto una finestra divisa in vim (come dimostrato da molti esempi sotto questo tag),
probabilmente vorrai controllare le finestre velocemente. Ecco come controllare le finestre divise
usando le scorciatoie da tastiera.
• Ctrl + w ek
• Ctrl + wej
https://riptutorial.com/it/home 65
Sposta a dividere Sinistra / Destra:
• Ctrl + w eh
• Ctrl + wel
• Ctrl + w ew
• Ctrl + W , S (maiuscolo)
• Ctrl + W , v (minuscolo)
• Ctrl + w e o - oppure: on
impostalo usando
set splitbelow
set splitright
https://riptutorial.com/it/home 66
Capitolo 22: Inserimento di testo
Examples
Lasciando la modalità di inserimento
Comando Descrizione
Ad alcune persone piace usare una coppia relativamente rara di caratteri come jk come
scorciatoia per <Esc> o <C-[> che può essere difficile da raggiungere su alcune tastiere:
inoremap jk <Esc>l
Comando Descrizione
I Inserisci il testo prima del primo carattere non vuoto della riga corrente
Inserisci il testo nella stessa posizione in cui è stato lasciato l'ultima volta in
gi
modalità Inserisci
O Apri una nuova riga sopra la riga corrente e aggiungi del testo (CAPITALE O )
o Apri una nuova riga sotto la riga corrente e aggiungi del testo (minuscola o )
Elimina dalla posizione del cursore fino alla fine della riga e avvia la modalità di
C
inserimento
https://riptutorial.com/it/home 67
Comando Descrizione
Comando Descrizione
<Co>{normal mode eseguire {normal mode command} senza uscire dalla modalità di
command} inserimento
https://riptutorial.com/it/home 68
Esempio
<Co>2w salta alla seconda parola a sinistra e torna alla modalità di inserimento.
Nota: ripetere con . ripeterà le azioni solo dal ritorno alla modalità di inserimento
Ora ctrl + a posiziona il cursore all'inizio della riga e ctrl + e - alla fine della riga. Queste mappature
sono utilizzate di default in readline , quindi potrebbero essere utili per le persone che vogliono
coerenza.
Dopo aver premuto Esc , il testo verrà inserito in tutte le linee selezionate.
Ricorda che Ctrl + c non è equivalente al 100% a Esc e non funzionerà in questa situazione!
Ci sono lievi variazioni di Shift + i che puoi premere mentre sei in modalità blocco visivo:
Chiave Descrizione
Elimina le linee selezionate (dal cursore fino alla fine) e attiva la modalità di
C
inserimento
UN Aggiungi alle linee selezionate, con la colonna alla fine della prima riga
Si noti inoltre che premendo . dopo un'operazione di blocco visivo ripeterà l'operazione in cui si
trova il cursore!
https://riptutorial.com/it/home 69
particolare la cattiva indizione.
:set paste
Quindi passare alla modalità di inserimento, con i , per esempio. Notare che la modalità è ora --
INSERT (paste) -- . Ora incollare con il comando emulatore di terminale o con il mouse. Al termine,
vai in modalità comando, con Esc ed esegui:
:set nopaste
C'è un modo più semplice, quando si vuole incollare solo una volta. Metti questo nel tuo .vimrc (o
usa il plugin unimpaired.vim ):
Ora si può semplicemente premere yo per incollare il codice sotto il cursore, quindi <Esc> per
tornare alla modalità normale / nopaste.
In modalità di inserimento, puoi usare <Cr> per incollare da un registro, che viene specificato dalla
prossima sequenza di tasti. <Cr>" per esempio paste dal registro senza nome ( " ).
https://riptutorial.com/it/home 70
Comando / Shortcut Risultato
Per esempio:
function () {
echo 'foo'
echo 'bar'
echo 'baz'
}
function () {
echo 'foo'
echo 'bar'
echo 'baz'
}
In questi casi, utilizzare l'opzione paste / nopaste per disabilitare / abilitare la funzione di
indentazione automatica:
:set paste
:set nopaste
In aggiunta a questo, c'è un approccio più semplice al problema: aggiungi la seguente riga nel tuo
.vimrc:
set pastetoggle=<F3>
E se vuoi incollare come è dagli appunti. Basta premere F3 in modalità di insert e incollare.
Premere nuovamente F3 per uscire dalla modalità paste .
https://riptutorial.com/it/home 71
Leggi Inserimento di testo online: https://riptutorial.com/it/vim/topic/953/inserimento-di-testo
https://riptutorial.com/it/home 72
Capitolo 23: Intervalli della riga di comando
Examples
Numeri di linea assoluti
:23,56command
Nel seguente comando l'intervallo inizia 6 righe sopra la riga corrente e termina 3 righe sotto:
:-6,+3command
Scorciatoie di linea
I due comandi sottostanti eseguono :command su ogni file dalla riga corrente all'ultima riga:
:.,$command
:,$command
:%command
votazione
Il comando seguente esegue :command su ogni riga da quella contenente il segno di f manuale a
quella contenente il segno di t manuale:
:'f,'tcommand
https://riptutorial.com/it/home 73
Vedi :help mark-motions .
Ricerca
I seguenti comandi eseguono :command su ogni linea dal primo corrispondente from al primo
corrispondente to :
Line offset
Gli offset di linea possono essere utilizzati per regolare le linee di inizio e fine:
:/foo/-,/bar/+4command " from the line above next 'foo' to 4 lines below next 'bar'
Gamme miste
:1267,/foo/-2command
:'{,command
:'f,$command
https://riptutorial.com/it/home 74
Capitolo 24: L'operatore punto
Examples
Uso di base
file test.tx
helo, World!
helo, David!
Hello, World!
helo, David!
Hello, World!
Hello, David!
Imposta il rientro
if condition1
if condition2
# some commands here
endif
endif
sposta il cursore sulla seconda riga, quindi >> , il codice verrà indentato a destra.
Ora puoi ripetere la tua azione continuando su 3a linea, quindi premi . due volte, il risultato sarà
if condition1
if condition2
# some commands here
endif
https://riptutorial.com/it/home 75
endif
https://riptutorial.com/it/home 76
Capitolo 25: Lo spazio bianco
introduzione
Ecco come puoi ripulire gli spazi bianchi.
Osservazioni
Vedi trascrizione di vimcast 4
Examples
Elimina gli spazi finali in un file
:%s/\s\+$//e
https://riptutorial.com/it/home 77
Converti le schede in spazi e spazi in schede
:set noexpandtab
Poi
:retab!
Se abiliti di nuovo expandtab :set expandtab ed esegui :retab! comando quindi tutte le schede
diventano spazi.
Se si desidera eseguire questa operazione per il testo selezionato, selezionare prima il testo in
modalità visiva .
https://riptutorial.com/it/home 78
Capitolo 26: Macro
Examples
Registrare una macro
Iniziare a registrare una macro e salvarla in un registro (in questo esempio, useremo a , ma può
essere qualsiasi registro in cui normalmente si può copiare il testo):
qa
Quindi esegui i comandi che desideri registrare nella macro (qui, circonderemo il contenuto di una
riga con i tag <li> ):
I<li><ESC>A</li>
Quando abbiamo finito con i comandi che vogliamo registrare nella macro, interrompiamo la
registrazione:
Ora, ogni volta che vogliamo eseguire la sequenza registrata di comandi memorizzati in a ,
utilizzare:
@a
La prossima volta che vorresti ripetere l'ultima macro che hai usato puoi raddoppiare @ :
@@
E come bonus extra è bene ricordare che se metti un numero prima di un comando lo ripeterà più
volte. Quindi, ripeti la macro salvata nel registro a 20 volte con:
20@a
A volte si commette un errore con una lunga macro, ma si preferisce modificarlo piuttosto che
riscriverlo interamente. Puoi farlo usando il seguente processo:
https://riptutorial.com/it/home 79
Se la tua macro è salvata nel registro a , il comando è "ap .
3. Sposta la macro nel registro corretto spostando il cursore all'inizio della riga e utilizzando
"<register>y$ .
Macro ricorsive
I macro Vim possono anche essere ricorsivi. Questo è utile quando devi agire su ogni riga (o altro
oggetto di testo) fino alla fine del file.
Per registrare una macro ricorsiva, iniziare con un registro vuoto. (Un registro può essere svuotato
usando q<register>q .)
Prima di terminare la registrazione, richiamare la macro stessa come ultimo comando. (Questo è il
motivo per cui il registro deve essere vuoto: quindi non farà nulla, poiché la macro non esiste
ancora).
line 1
line 2
line 3
foo bar
more random text
.
.
.
line ???
In modalità normale, con il cursore sulla prima riga e un registro vuoto a , è possibile registrare
questa macro:
qaI"<Esc>A"<Esc>j@aq
Quindi con una singola invocazione di @a , tutte le righe del file si troverebbero ora tra virgolette
doppie.
Una macro è una serie di sequenze di tasti che devono essere "riprodotte" da Vim senza alcun
ritardo. Le macro possono essere memorizzate in registri o variabili, associate a chiavi o eseguite
sulla riga di comando.
https://riptutorial.com/it/home 80
Ecco una semplice macro che mette in maiuscolo la terza word su una riga:
0wwgUiw
:let @q = '0wwgUiw'
da riprodurre con:
@q
:normal 0wwgUiw
da riprodurre con:
@=myvar
<C-r>q
Questo inserisce la macro nel registro q (in questo esempio: 0wwgUiw ). Puoi usare questa uscita,
ad es. Per definire la macro nel tuo vimrc :
let @q='0wwgUiw'
https://riptutorial.com/it/home 81
In questo modo il registro q viene inizializzato con questa macro ogni volta che si avvia vim.
PASSAGGIO 2. Registrare la seguente azione: "aggiungere l'ultimo numero alla riga successiva
e incrementare il numero"
1
2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
https://riptutorial.com/it/home 82
Capitolo 27: Manipolazione del testo
Osservazioni
Per incrementare e decrementare le cose come 11:59AM , 3rd e XVIII , usare il plugin vim-speed
date
Examples
Conversione di casi di testo
In modalità normale:
• ~ inverte il caso del carattere sotto il cursore,
• gu{motion} minuscolo il testo trattato da {motion} ,
• gU{motion} il testo trattato da {motion}
In modalità visiva:
• ~ inverte il caso del testo selezionato,
• u minuscolo il testo selezionato,
• U uppercases il testo selezionato
In modalità normale, possiamo incrementare il numero più vicino sulla linea in corrispondenza o
dopo il cursore con <Ca> e decrementarlo con <Cx> . Negli esempi seguenti, la posizione del
cursore è indicata da ^ .
https://riptutorial.com/it/home 83
Numeri incrementali e decrescenti
for i in range(11):
^
for i in range(10):
^
10<Ca> incrementa di 10 :
for i in range(20):
^
Per fare in modo che incrementi e decrementi funzionino anche con le lettere, usa il comando ex
:set nrformats+=alpha o aggiungi set nrformats+=alpha al tuo .vimrc .
Esempio di incremento:
AAD
^
<Ca> incrementa in B :
ABD
^
Esempio di decremento:
ABD
^
<Cx> decrementi da D a C :
ABC
^
Si noti che abilitare l'incremento / decremento per lavorare con caratteri alfabetici significa che
bisogna stare attenti a non modificarli quando si desidera semplicemente modificare i numeri. Puoi
disattivare l'incremento / decremento alfabetico usando il comando ex :set nrformats-=alpha o
puoi semplicemente esserne consapevole e assicurarti di passare al numero prima di
https://riptutorial.com/it/home 84
incrementare o decrementare. Ecco " for i in range(11): " esempio da sopra rifatto per
funzionare mentre è impostato l'incremento / decremento alfabetico:
for i in range(11):
^
Poiché alfabetico incremento / decremento è attivo, per evitare di modificare il carattere sotto il
cursore, prima spostarsi in avanti alla prima 1 utilizzando i normali comandi di movimento modalità
f1 (cioè minuscole f seguita dal numero 1 , non deve essere confuso con un tasto funzione ):
for i in range(11):
^
Ora, dato che il cursore è sul numero, puoi decrementarlo con <Cx> . Al decremento, il cursore
viene riposizionato sull'ultima cifra del numero:
for i in range(10):
^
Codice di formattazione
In modalità normale:
gg vai in cima
= poi G
Uno dei modi per pensare ai comandi che dovrebbero essere eseguiti, per modificare un testo in
un certo modo, è come frasi intere.
Alcune di queste parole funzionano con un oggetto come d , c , y . Tali oggetti possono essere
parola, linea, frase, paragrafo, tag . Si possono usare questi in combinazione:
:normal dw " deletes the text from the position of the cursor to the end of the next word
:normal cw " deletes the text from the cursor to the end of the next word and
" enters insert mode
https://riptutorial.com/it/home 85
Inoltre si potrebbe usare un modificatore per specificare con precisione dove deve essere
eseguita l'azione:
:normal diw " delete inside word. I.e. delete the word in which is the cursor.
:normal ciw " removes the word, the cursor points at and enters insert mode
:normal ci" " removes everything between the opening and closing quotes and
" enters insert mode
:normal cap " change the current paragraph
:normal ct8 " remove everything until the next number 8 and enter insert mode
:normal cf8 " like above but remove also the number
:normal c/goal " remove everything until the word 'goal' and enter insert mode
:normal ci{ " change everything inside the curly braces
Altre risorse:
https://riptutorial.com/it/home 86
Capitolo 28: Mappature chiave in Vim
introduzione
L'aggiornamento dei mapping dei tasti Vim consente di risolvere due tipi di problemi: riassegnare i
comandi chiave alle lettere che sono più memorizzabili o accessibili e creare comandi chiave per
funzioni che non ne contengono. Qui apprenderete i vari modi per [re] mappare i comandi chiave e
il contesto a cui si applicano (cioè le modalità vim)
Examples
Mappatura di base
Ad esempio, la seguente map tipica uscirà dalla modalità di inserimento quando si preme j k nella
sequenza rapida:
:inoremap jk <Esc>
mappa Operatore
Ci sono più varianti di :map per diverse modalità.
comandi Modalità
https://riptutorial.com/it/home 87
comandi Modalità
Di solito, dovresti usare le varianti :noremap ; rende la mappatura immune al remapping e alla
ricorsione.
comando di mappa
• Puoi visualizzare tutti i mapping usando :map (o una delle varianti sopra).
• Per visualizzare la mappatura corrente per una sequenza di tasti specifica, utilizzare :map
<key> dove <key > è una sequenza di tasti
• I tasti speciali come Esc sono mappati usando la notazione speciale <> , come <Esc> . Per
l'elenco completo dei codici chiave, vedi
http://vimdoc.sourceforge.net/htmldoc/intro.html#keycodes
• :nmapclear : cancella tutte le mappe in modalità normale
• :nunmap - :nunmap una mappa in modalità normale
• È possibile configurare il tempo massimo tra le chiavi di una sequenza cambiando i timeout e
ttimeout variabili
Esempi
• : digitando jk in modalità inserimento tornerai alla modalità normale
imap jk <Esc>
• nnoremap tt :tabnew<CR> : digitando tt in modalità normale si aprirà una nuova scheda
• nnoremap <Cj> <Cw>j : digitando <Cj> in modalità normale ti farà saltare alla finestra in basso
ea sinistra
• vmap <Cc> \cc : digitando <Cc> in modalità visuale verrà eseguito \cc (comando
NERDCommenter per commentare la riga). Poiché si basa su una mappatura dei plugin,
non puoi usare :vnoremap qui!
a leggere qui
La chiave leader potrebbe essere utilizzata come un modo per creare una mappatura con
un'associazione di chiavi che può essere sostituita dall'utente finale.
Il leader è il tasto \ per impostazione predefinita. Per sovrascriverlo, l'utente finale dovrebbe
eseguire :let g:mapleader='somekey(s)' prima di definire la mappatura.
In uno scenario tipico, il mapleader è impostato in .vimrc ei plug-in utilizzano <Leader> nella parte
relativa alla combinazione di tasti dei loro mapping per renderli personalizzabili.
https://riptutorial.com/it/home 88
Questo mapperebbe l' azione di somecomplexaction alla combinazione di tasti \ + a .
È anche possibile usare <Plug>Mappings per lasciare più spazio per personalizzare i collegamenti
dei plugin.
Nella maggior parte degli editor di testo, la scorciatoia standard per salvare il documento corrente
è Ctrl + S (o Cmd + S su macOS).
Vim non ha questa caratteristica di default ma può essere mappata per semplificare le cose.
L'aggiunta delle seguenti righe nel file .vimrc farà il lavoro.
Il comando nnoremap mappa Ctrl + s per :w (scrive il contenuto corrente su file) mentre il comando
inoremap esegue il mapping di Ctrl + S per :w comando e ritorna alla modalità di inserimento ( <co>
entra nella modalità normale per un comando e ritorna alla modalità di inserimento in seguito,
senza alterare la posizione del cursore che altre soluzioni come <esc>:w<cr>a non possono
garantire).
" This is commented, as Ctrl+Z is used in terminal emulators to suspend the ongoing
program/process.
" nnoremap <c-z> :u<CR>
PS: Tuttavia, è necessario notare che Ctrl + S potrebbe non funzionare come previsto durante
l'utilizzo di ssh (o PuTTY). La soluzione a questo non è nell'ambito di questo documento, ma può
essere trovata qui .
https://riptutorial.com/it/home 89
Capitolo 29: Miglioramento della
cancellazione e ripetizione con un undodir
Examples
Configurando il tuo vimrc per usare un undodir
Da vim versione 7.3 è supportata la funzione 'persistent_undo', che rende possibile eseguire le
modifiche di annullamento / ripristino, anche dopo aver chiuso vim o riavviato il computer.
È possibile configurarlo aggiungendo quanto segue al tuo vimrc, ma prima crea una directory,
dove i tuoi undofili devono essere salvati. Puoi creare il file ovunque, ma ti consiglio di utilizzare la
directory ".vim".
Dopo averlo aggiunto al tuo vimrc e aver fatto di nuovo il vimrc, puoi usare la funzione usando i
comandi di base di annullamento / ripetizione
https://riptutorial.com/it/home 90
Capitolo 30: Modalità - inserire, normale,
visiva, ex
Examples
Le basi sulle modalità
vim è un editor modale. Ciò significa che in qualsiasi momento all'interno di una sessione di vim ,
l'utente si troverà in una delle modalità operative. Ognuno di offre un insieme di comandi,
operazioni, associazioni di tasti diversi ...
Modalità di inserimento
• Comunemente accessibile da: a , i , A , I , c , s .
• Per inserire il testo .
Modalità visiva
• Comunemente accessibile da: v (characterwise), V (linewise), <Cv> (blockwise).
• Fondamentalmente, per la selezione del testo ; sono disponibili i comandi più normali, più
quelli extra per agire sul testo selezionato.
Seleziona la modalità
• Accessibile dalla modalità di inserimento con <Cg> .
• Simile alla modalità visiva ma con comandi molto meno disponibili.
• Contrariamente alla modalità di inserimento, è possibile digitare subito.
• Utilizzato raramente.
https://riptutorial.com/it/home 91
Sostituisci la modalità
• Accessibile dalla modalità normale con R
• Permette di sovrascrivere il testo esistente.
Modalità Ex
Vedi :help Ex-mode .
https://riptutorial.com/it/home 92
Capitolo 31: Movimenti e oggetti di testo
Osservazioni
Un oggetto di testo in Vim è un altro modo per specificare un pezzo di testo su cui operare.
Possono essere usati con operatori o in modalità visiva, invece di movimenti.
Examples
Modifica del contenuto di una stringa o di un elenco di parametri
printf("Hello, world!\n");
https://riptutorial.com/it/home 93
Capitolo 32: Movimento
Examples
Ricerca
Saltare ai personaggi
f {char} : passa alla successiva occorrenza di {char} alla destra del cursore sulla stessa riga
F {char} : passa alla successiva occorrenza di {char} alla sinistra del cursore sulla stessa riga
t {char} - sposta a sinistra della prossima occorrenza di {char} alla destra del cursore sulla stessa
riga
T {char} : sposta a destra della prossima occorrenza di {char} alla sinistra del cursore sulla stessa
riga
/ searchterm Enter ti porta alla prossima partita (forward-search). Se usi ? invece di / , la ricerca
torna indietro.
https://riptutorial.com/it/home 94
Movimento di base
Osservazioni
• Ogni movimento può essere utilizzato dopo un comando operatore, quindi il comando opera
sul testo compreso dalla portata del movimento.
• Proprio come i comandi dell'operatore, i movimenti possono includere un conteggio, quindi
puoi muoverti da 2w ords, per esempio.
frecce
In Vim, i normali tasti freccia / cursore ( ← ↓ ↑ → ) funzionano come previsto. Tuttavia, per i tipografi
a tocco, è più facile usare le chiavi alternative h j k l . Su una tastiera tipica, si trovano uno
accanto all'altro sulla stessa riga e facilmente accessibili con la mano destra. La tecnica
mnemonica per ricordare quale è quella che va in questo modo:
• / l - quelli si trovano "più a sinistra / destra" tra le quattro lettere sulla tastiera, quindi sono
h
equivalenti a "andare a sinistra / destra" rispettivamente;
• j - la lettera "j" minuscola ha la coda che va "in basso" sotto le lettere tipiche, come una
piccola freccia - quindi è equivalente a "scendere";
• k - al contrario, la "k" minuscola ha il suo "ascender" che va "su" sopra le lettere tipiche,
come un piccolo puntatore - quindi equivale a "salire".
Movimenti di base
Tutti i comandi di seguito dovrebbero essere eseguiti in modalità normale .
Comando Descrizione
io ho
vai [conta] caratteri a destra
ragione
https://riptutorial.com/it/home 95
Comando Descrizione
$ o Fine vai alla fine della linea (se [conta] è dato, vai [contare - 1] linee giù)
| vai al [count] 'th carattere o vai all'inizio della riga se count non specificato
Torna indietro o avanti nella "lista dei salti" (richiede la funzione jumplist , vedi
<CO> <CI>
:help jumps )
Nota: b , e , e w considerano una parola come lettere, numeri e underscore per impostazione
https://riptutorial.com/it/home 96
predefinita (questa può essere configurata con l'impostazione iskeyword ). Ognuno di questi può
anche essere in maiuscolo, causando loro di saltare qualsiasi cosa che non sia spazio bianco.
Nota: Vim riconosce due tipi di movimento: movimento dell'operatore ( :help movement ) e salti (
:help jumplist ). I movimenti come quelli eseguiti con g ( gg , G , g, ) contano come salti, così come
le modifiche. I cambiamenti hanno il loro jumplist, che è navigabile come menzionato sopra via g,
e g; (vedi :help changelist ). I salti non sono trattati come comandi di movimento da Vim
Se la lunghezza di una linea supera la larghezza dello schermo, il testo viene avvolto (nelle
impostazioni predefinite, questo comportamento può essere configurato). Per spostarti tra le linee
come visualizzate sullo schermo, piuttosto che le linee all'interno del file, aggiungi g davanti al
solito comando. Ad esempio, gj sposta il cursore nella posizione visualizzata di una riga sotto la
sua posizione corrente, anche se si trova nella stessa riga del file.
Cercando il modello
/if
Questo cercherà l'intero file per tutte le istanze di if . Tuttavia, la nostra ricerca if è in realtà
un'espressione regolare che corrisponde ad ogni occorrenza della parola if inclusi quelli
all'interno di altre parole.
Ad esempio, la nostra ricerca direbbe che tutte le seguenti parole corrispondono alla nostra
ricerca: if , spiffy , endif , ecc.
Possiamo fare ricerche più complicate usando espressioni regolari più complicate.
/\<if\>
quindi la nostra ricerca restituirebbe solo corrispondenze esatte alla parola completa if . Il
precedente spiffy e endif non verrebbero restituiti dalla ricerca, solo if .
hello1
https://riptutorial.com/it/home 97
hello2
hello3
hello4
Se vogliamo cercare quelle righe contenenti "hello" seguite da una cifra compresa tra 1 e 3,
diremmo:
/hello[1-3]
Un altro esempio:
/(?:\d*\.)?\d+
Quando si modifica il testo, un'attività comune è quella di passare a una determinata parola sullo
schermo. In questi esempi esploriamo come possiamo navigare verso la parola updated . Per
motivi di coerenza tra gli esempi, miriamo ad atterrare sulla prima lettera della parola.
Questo approccio è veloce, utilizzando solo 3 sequenze di tasti. Lo svantaggio, tuttavia, è che non
è molto generale, poiché non è comune che la nostra linea di destinazione si trovi proprio al centro
dello schermo. Tuttavia, è un movimento utile quando si effettuano movimenti meno granulari.
Utilizzando un conteggio
3j f u ; ;
https://riptutorial.com/it/home 98
A prima vista, questo potrebbe sembrare un passo indietro rispetto al primo approccio a causa del
numero di sequenze di tasti. Ma dal momento che usiamo un conteggio qui invece che M , è più
flessibile. Siamo in grado di identificare rapidamente il conteggio corretto da utilizzare se
relativenumber è abilitato. Per passare alla parola target, usando f in combinazione con ; può
essere sorprendentemente efficace - e certamente migliore di premere ripetutamente w . Se superi
il tuo obiettivo con ; , Si può andare a ritroso con,.
Ricerca esplicita
/ Up Inserisci n n
Navigare via / può essere molto potente. Spesso possiamo saltare direttamente alla nostra parola
target digitandola. Qui scriviamo solo i primi due personaggi nella speranza che corrispondano in
modo univoco alla nostra parola. Sfortunatamente, ci sono più partite, ma possiamo passare
rapidamente alla prossima partita con n .
Ricerca implicita
/ y Spazio Immettere w
In alcuni casi, potrebbe essere più efficiente saltare vicino al nostro obiettivo piuttosto che mirare
ad andare direttamente ad esso. Qui osserviamo che c'è una lettera che si verifica raramente, y ,
proprio accanto all'obiettivo. Possiamo aggiungere uno spazio al nostro termine di ricerca per
ridurre le possibilità di colpire qualche altro personaggio y lungo la strada. Questo può anche
essere usato con grande effetto con f {char} , come nell'esempio Uso di un conteggio .
I segni sono come segnalibri; ti aiutano a trovare i posti che hai già visitato.
https://riptutorial.com/it/home 99
TLDR
Impostali in modalità normale con m{a-zA-Z} e saltali in modalità normale o visuale con '{a-zA-Z}
(virgoletta singola) o `{a-zA-Z} (apice). Le lettere minuscole sono per i segni all'interno di un buffer
e le lettere maiuscole e le cifre sono globali. Visualizza i tuoi segni attualmente impostati con
:marks , e per maggiori informazioni vedi :help mark .
Imposta un segno
L'aiuto integrato di Vim dice:
Il marchio terrà traccia di quale linea e colonna è stata posizionata. Non vi è alcuna conferma
visiva che sia stato impostato un segno o se un segno avesse un valore precedente e sia stato
sovrascritto.
Vai a un segno
L'aiuto integrato di Vim dice:
Backtick usa la posizione della colonna, mentre Single-quote non lo fa. La differenza tra
semplicemente ti consente di ignorare la posizione della colonna del tuo marchio, se lo desideri.
È possibile saltare tra segni non globali in modalità visiva oltre alla modalità normale, per
consentire la selezione del testo in base ai segni.
Marchi globali
I marchi globali (lettere maiuscole) consentono di saltare tra i file. Ciò significa che se, ad
esempio, il segno A è impostato in foo.txt , quindi da bar.txt (ovunque nel mio file system), se
salto al punto A , il mio buffer corrente verrà sostituito con foo.txt . Vim chiederà di salvare le
modifiche.
Saltare su un segno in un altro file non è considerato come un movimento, e le selezioni visive
(tra le altre cose) non funzionano come saltare ai segni all'interno di un buffer.
https://riptutorial.com/it/home 100
Per tornare al file precedente ( bar.txt in questo caso), utilizzare :b[uffer] # (ovvero :b# o
:buffer# ).
Nota:
Segni speciali
Ci sono alcuni segni che Vim imposta automaticamente (che sei in grado di sovrascrivere da solo,
ma probabilmente non ne avrà bisogno).
`[` and `]`: jump to the first or last character of the previously changed or
yanked text. {not in Vi}
`<` and `>`: jump to the first or last line (with `'`) or character (with
<code>`</code>) of the last selected Visual area in the current
buffer. For block mode it may also be the last character in the
first line (to be able to define the block). {not in Vi}.
'" `" To the cursor position when last exiting the current
buffer. Defaults to the first character of the first
line. See last-position-jump for how to use this
for each opened file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
{not in Vi}.
'. `. To the position where the last change was made. The
position is at or near where the change started.
Sometimes a command is executed as several changes,
then the position can be near the end of what the
command changed. For example when inserting a word,
the position will be on the last character.
{not in Vi}
'" `" To the cursor position when last exiting the current
buffer. Defaults to the first character of the first
line. See last-position-jump for how to use this
for each opened file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
{not in Vi}.
'^ `^ To the position where the cursor was the last time
https://riptutorial.com/it/home 101
when Insert mode was stopped. This is used by the
gi command. Not set when the :keepjumps command
modifier was used. {not in Vi}
Inoltre, i caratteri ( , ) , { e } sono segni che salgono nella stessa posizione dei loro comandi in
modalità normale, cioè '} fa la stessa cosa in modalità normale } .
Per saltare a una linea specifica con il numero dei due punti. Utilizzare per saltare alla prima riga
di un file
:1
:23
https://riptutorial.com/it/home 102
Capitolo 33: Opzioni Vim
Sintassi
• :set [no](option|shortcut)
• :set (option|shortcut)=value
• :set (option|shortcut)(?|&)
• non usare : nel file vimrc
Osservazioni
Guarda video di vimcast 1
Examples
Impostato
:set ts=4
:set shiftwidth=4
:set expandtab
:set autoindent
:set ts?
Per reimpostare il valore dell'opzione sul valore predefinito, digitare :set {option}& . Esempio:
:set ts&
dentellatura
Larghezza
Per rendere le rientranze di 4 spazi:
:set shiftwidth=4
https://riptutorial.com/it/home 103
spazi
Per utilizzare gli spazi come rientri, 4 spazi ampi:
:set expandtab
:set softtabstop=4
:set sts=4
Tabs
Per utilizzare le schede come rientri, 4 spazi di larghezza:
:set noexpandtab
:set tabstop=4
:set ts=4
Indentazione automatica
:set autoindent
Personaggi invisibili
https://riptutorial.com/it/home 104
Mostra o nascondi personaggi invisibili
Per mostrare i personaggi invisibili:
:set list
:set nolist
:set list!
^I linguetta
$ Nuova linea
Personalizza simboli
Per impostare il carattere di tabulazione su **> ** e il carattere di nuova riga su ¬
set listchars=spaces
:help listchars
https://riptutorial.com/it/home 105
Capitolo 34: Ottieni: aiuto (usando il manuale
integrato di Vim)
introduzione
Il manuale integrato di Vim è la fonte autorevole di informazioni e documentazione su ogni
funzionalità di Vim, comprese le configurazioni, le funzioni integrate e persino Vimscript. Sebbene
non sia l'interfaccia più adatta ai principianti, se sai come guardarla, puoi trovare ciò di cui hai
bisogno.
Sintassi
• :h[elp] [keyword]
Parametri
parametri Dettagli
Examples
Guida introduttiva / Navigazione nei file della guida
Da qualsiasi punto di Vim, esegui :help :help . Ciò aprirà una finestra divisa orizzontalmente con
la pagina di manuale per il comando :help . :help da solo ti porterà al sommario per il manuale
stesso.
I file della guida di Vim sono navigabili come file normali (puoi cercare parole chiave all'interno di
un file come normale, con / ), e inoltre sono collegati tra loro da tag. Vai alla destinazione di un tag
con CTRL-] .
I tag sono parole circondate da pipe | personaggi. Le versioni 7.3 e successive "nascondono" quei
caratteri del tubo ( :help conceal ) e li evidenziano.
Ad esempio, la pagina Sommario mostra quanto segue. Tutte le parole evidenziate in blu sono tag
e sono circondate da caratteri di pipa. Digitando CTRL-] con il cursore su quickref potrai quickref a
una pagina utile con un elenco di tag per le utili funzionalità di Vim.
https://riptutorial.com/it/home 106
Ricerca nel manuale
È inoltre possibile utilizzare il completamento della riga di comando di Vim con CTRL+D :
:help spli<Ctrl-D> visualizzerà un elenco di argomenti della guida corrispondenti allo spli del
modello, compresi split() e :split .
Come vedi, vim ha una nomenclatura per i suoi argomenti di aiuto. Ad esempio, le opzioni sono
quotate (vedi :h 'sw' ), i comandi iniziano con i due punti (vedi :h :split ), le funzioni terminano
con parentesi vuote (vedi :h split() ), i mapping della modalità di inserimento iniziano con i_ ,
comando i mapping di modalità iniziano con c_ , e così via, eccetto mappature in modalità normale
prive di prefisso.
Termine di
Pagina di aiuto
ricerca
:help textwidth Configurazione per lunghezza della linea / larghezza del testo
https://riptutorial.com/it/home 107
https://riptutorial.com/it/vim/topic/8837/ottieni--aiuto--usando-il-manuale-integrato-di-vim-
https://riptutorial.com/it/home 108
Capitolo 35: pieghevole
Osservazioni
La piegatura fa sì che più righe di testo vengano compresse e visualizzate come un'unica linea. È
utile per nascondere porzioni di un documento considerato non importante per l'attività corrente.
La piegatura è puramente una modifica visiva del documento: le linee piegate sono ancora
presenti, invariate.
Una piega è persistente. Una volta creata, una piega può essere aperta e chiusa senza doverla
ricreare. Quando è chiuso, le pieghe possono essere spostate sopra o strappate e messe come
se fossero un'unica linea, anche se l'operazione sottostante funzionerà su tutto il testo sotto la
piega
Examples
Configurazione del metodo di piegatura
:set foldmethod={method}imposta il metodo fold per la finestra corrente. Questo determina come
vengono manipolate le pieghe all'interno di quella finestra. Le opzioni valide per "metodo" sono:
• zf{motion} crea una piega che copre il testo che il "movimento" coprirebbe.
• {count}zF crea una piega che copre le linee di "conteggio".
• {range}fo[ld] crea una piega per le linee nell'intervallo fornito.
Tutti e tre i comandi sono validi solo quando foldmethod è impostato su manual o marker . Nel caso
del metodo precedente, le pieghe appena create vengono chiuse immediatamente.
https://riptutorial.com/it/home 109
• za commuta una piega sotto il cursore (una piega chiusa viene aperta, una piega aperta è
chiusa).
• zM chiude tutte le pieghe nel buffer.
• zR apre tutte le pieghe nel buffer.
• zm chiude un livello di piega nel buffer.
• zr apre un livello di piega nel buffer.
zvassicurerà che la linea contenente il cursore non sia piegata. Il numero minimo di pieghe
necessarie per esporre la linea del cursore verrà aperto.
Blocchi a C pieghevoli
Il cursore si trova su [1] [1] ([linea] [col]). Sposta il cursore sulla parentesi graffa del ciclo for:
/for<Enter>j cursor is [6] [2].
Ora inserisci zf% (crea una piegatura, passa alla parentesi corrispondente). Hai creato con
successo il primo piegamento.
Immettere ora :2<Enter>_ , il cursore si trova ora in [2] [1] e zf% : il corpo della funzione completa è
piegato.
https://riptutorial.com/it/home 110
Capitolo 36: plugin
Examples
Fugitive Vim
Fugitive Vim è un plugin di Tim Pope che fornisce l'accesso ai comandi git che è possibile
eseguire senza lasciare vim.
Aggiunge anche elementi alla linea di statusline come statusline esempio il ramo corrente.
Albero NERD
NERD TREE è un plugin di scrooloose che consente di esplorare il file system durante l'utilizzo di
vim. Puoi aprire file e directory tramite un sistema ad albero che puoi manipolare con la tastiera o
il mouse.
Aggiungi questo al tuo .vimrc per avviare automaticamente NERDTree all'avvio di vim:
Per chiudere automaticamente NERDTree se è l'unica finestra rimasta, aggiungi questo al tuo
.vimrc:
I dettagli completi e le istruzioni di installazione possono essere visualizzati sul loro Github .
https://riptutorial.com/it/home 111
Capitolo 37: Plugin di tipo file
Examples
Dove mettere i plugin di tipo file personalizzato?
1. $HOME/.vim/ftplugin/foo.vim . Fai attenzione a ciò che hai inserito in quel file poichè potrebbe
essere sovrascritto da $VIMRUNTIME/ftplugin/foo.vim - sotto windows, sarà invece
$HOME/vimfiles/ftplugin/foo.vim
2. $VIMRUNTIME/ftplugin/foo.vim . Come tutto sotto $VIMRUNTIME , questo file non dovrebbe essere
cambiato.
3. $HOME/.vim/after/ftplugin/foo.vim . Questo file arriva per ultimo, quindi è il posto ideale per le
tue impostazioni specifiche per il tipo di file.
https://riptutorial.com/it/home 112
Capitolo 38: Registri Vim
Parametri
Funzionalità registri
appunti "*
Examples
Elimina un intervallo di linee in un registro con nome
In Normale, digitare quanto segue per eliminare un intervallo di linee in un registro con nome
:10,20d a
Questo cancellerà le righe 10,20 nel registro "a . Possiamo verificarlo digitando
https://riptutorial.com/it/home 113
:reg
"ap
Nella modalità di inserimento, premere <Cr> e quindi % per inserire il nome file.
Ad esempio, se in modalità di inserimento vuoi incollare il modello di ricerca corrente, puoi digitare
<Cr> e quindi / .
Usa il registro quotestar per copiare / incollare tra Vim e gli appunti di sistema
Aggiungi a un registro
:global/TODO/yank A
Qui, stiamo cercando una parola chiave TODO globalmente, tirando tutte le righe nel registro a ( A
registro aggiunge tutte le linee a a registro).
Per cancellare un registro, nella modalità normale, digitare qaq . Confermare che l' a registro è
vuoto digitando :reg ed osservando che a registro è vuoto.
https://riptutorial.com/it/home 114
Capitolo 39: Ricerca nel buffer corrente
Examples
Ricerca di un pattern arbitrario
I comandi di ricerca standard di Vim sono / per la ricerca diretta e ? per ricerca all'indietro.
1. premere / ,
2. scrivi il tuo modello,
3. premere <CR> per eseguire la ricerca.
Esempi:
• Premendo n dopo una ricerca in avanti posiziona il cursore sulla prossima occorrenza, in
avanti .
• Premendo N dopo una ricerca in avanti posiziona il cursore sulla prossima occorrenza,
all'indietro .
• Premendo n dopo una ricerca all'indietro posiziona il cursore sulla prossima occorrenza,
all'indietro .
• Premendo N dopo una ricerca all'indietro posiziona il cursore sulla prossima occorrenza, in
avanti .
In modalità normale, spostare il cursore su qualsiasi parola quindi premere * per cercare in avanti
la prossima occorrenza della parola sotto il cursore, oppure premere # per cercare all'indietro.
* o # cerca la parola esatta sotto il cursore: la ricerca di big potrebbe trovare solo big e non bigger
.
Sotto il cofano, Vim usa una semplice ricerca con gli atomi dei confini di parole :
• /\<big\> per * ,
• ?\<big\> per # .
g* o g# non cercano la parola esatta sotto il cursore: la ricerca di big potrebbe trovare bigger .
https://riptutorial.com/it/home 115
Sotto il cofano, Vim usa una semplice ricerca senza gli atomi dei confini di parole :
• /\<big\> per * ,
• ?\<big\> per # .
https://riptutorial.com/it/home 116
Capitolo 40: Risorse Vim
Osservazioni
Questo argomento riguarda specchi di codice sorgente , libri , Vim-Wiki . Non si tratta di voci
sul blog, Wikipedia, Tutorial. Le risorse non dovrebbero essere basate sull'opinione pubblica.
Examples
Imparare Vimscript nel modo più duro
Un libro che spiega come funziona Vimscript, pieno di esempi. Può essere trovato su
http://learnvimscriptthehardway.stevelosh.com/
https://riptutorial.com/it/home 117
Capitolo 41: Salvataggio
Examples
Salvataggio di un buffer in una directory inesistente
:!mkdir -p %:h
:w
https://riptutorial.com/it/home 118
Capitolo 42: scorrimento
Examples
Scorrimento verso il basso
Comando Descrizione
Ctrl + D Scorri mezzo schermo verso il basso (configurabile usando l'opzione di scroll ).
z + Disegna la prima riga sotto la finestra nella parte superiore della finestra.
Comando Descrizione
z ^ Disegna la prima riga sopra la finestra nella parte inferiore della finestra.
Comando Descrizione
https://riptutorial.com/it/home 119
Leggi scorrimento online: https://riptutorial.com/it/vim/topic/3000/scorrimento
https://riptutorial.com/it/home 120
Capitolo 43: Solarized Vim
introduzione
Trascorrere la maggior parte del tempo sul terminale può essere un grosso problema per gli occhi.
Saggiamente la scelta della combinazione di colori può avvantaggiare i tuoi occhi in molti modi.
Recentemente mi sono imbattuto in Solarized ColorScheme for Vim . L'aggiunta di questo piccolo
plug-in può fare una grande differenza sull'aspetto del testo sul terminale. Mille grazie a Ethan
Schoonover per aver sviluppato questo pacchetto. I howtos sono spiegate abbastanza bene qui .
Godere!
Examples
.vimrc
Modalità luce :
syntax enable
set background=light
colorscheme solarized
Modalità oscura :
syntax enable
set background=dark
colorscheme solarized
https://riptutorial.com/it/home 121
Capitolo 44: Sostituzione
Sintassi
• s/<pattern>/<pattern>/optional-flags
• <pattern> è un Regex
Parametri
Bandiera Senso
io Corrispondenza case-sensitive.
Osservazioni
Usa set gdefault per evitare di dover specificare il flag 'g' su ogni sostituto.
Esempio
Quando gdefault è impostato, eseguendo :s/foo/bar sulla riga foo baz foo genererà bar baz bar
invece di bar baz foo .
Examples
Sostituzione semplice
:s/foo/bar Sostituisce la prima istanza di foo con la barra sulla riga corrente.
:s/foo/bar/g Sostituisci ogni istanza di pippo con barra sulla riga corrente.
https://riptutorial.com/it/home 122
Riorganizza rapidamente la parola sotto il cursore
:s/foo/bar/c Segna la prima istanza di foo sulla linea e chiede conferma per la sostituzione con la
barra
:%s/foo/bar/gc Segna consecutivamente ogni match di foo nel file e chiede conferma per la
sostituzione con barra
seleziona una parola con * , digita Shift - F6 , digita una sostituzione e premi Invio per rinominare
tutte le occorrenze in modo interattivo.
https://riptutorial.com/it/home 123
Capitolo 45: Trova e sostituisci
Examples
Comando sostitutivo
Questo comando:
:s/foo/bar/g
diventa
Se si lascia l'ultimo /g , sostituirà solo la prima occorrenza sulla linea. Per esempio,
:s/foo/bar
Questo comando:
:5,10s/foo/bar/g
Questo comando
:5,$s/foo/bar/g
Questo comando:
:%s/foo/bar/g
Se sei in modalità visuale e premi i due punti, apparirà il simbolo '<,'> . Puoi quindi farlo
https://riptutorial.com/it/home 124
:'<,'>s/foo/bar/g
Questo comando:
:%s/foo/bar/gc
:s/foo./bar/g
diventerà
Se vuoi abbinare il letterale . periodo puoi evaderlo nel campo di ricerca con una barra rovesciata
\.
:s/foo\./bar/g
diventerà
:sno/foo./bar/g
https://riptutorial.com/it/home 125
genererà un errore
https://riptutorial.com/it/home 126
Capitolo 46: Uova di Pasqua
Examples
Aiuto!
:help!
7.4
:smile
La risposta
:help 42
Douglas Adams, l'unica persona che sapeva di cosa trattava davvero questa domanda
ora è morta, sfortunatamente. Quindi ora potresti chiederti qual è il significato della
morte ...
Controllalo:
:help holy-grail
bar
https://riptutorial.com/it/home 127
| To screen column [count] in the current line.
exclusive motion. Ceci n'est pas une pipe.
Cerca :h UserGettingBored
*UserGettingBored*
UserGettingBored When the user presses the same key 42 times.
Just kidding! :-)
Cucchiaio
Invece di cercare l'aiuto della fork , puoi cercare l'aiuto del spoon :
:h spoon
fork spoon
For executing external commands fork()/exec() is used when possible, otherwise
system() is used, which is a bit slower. The output of ":version" includes ...
Controllalo:
:Ni!
nunmap
:help map-modes
https://riptutorial.com/it/home 128
:nunmap can also be used outside of a monastery.
https://riptutorial.com/it/home 129
Capitolo 47: Usando ex dalla riga di comando
Examples
Sostituzione dalla riga di comando
Se si desidera utilizzare vim in un modo simile a sed , è possibile utilizzare il flag -c per eseguire
un comando ex dalla riga di comando. Questo comando verrà eseguito automaticamente prima di
presentare il file. Ad esempio, per sostituire foo con bar :
Questo aprirà il file con tutte le istanze di foo sostituite con la bar . Se si desidera modificare il file
senza doverlo salvare manualmente, è possibile eseguire più comandi ex e fare in modo che
l'ultimo comando scriva e chiuda. Per esempio:
Nota importante:
Non è possibile eseguire più comandi ex separati da una barra | . Per esempio
https://riptutorial.com/it/home 130
Capitolo 48: Uscire da Vim
Parametri
Parametro Dettagli
w Scrivi
q Smettere
a Tutti
! Oltrepassare
Osservazioni
La modalità della riga di comando viene immessa tramite la modalità normale. Saprai di essere in
modalità riga di comando quando c'è un : nell'angolo in basso a sinistra della finestra del
terminale.
La modalità normale è la modalità predefinita di vi / vim e può essere attivata premendo ESC .
Vi / Vim ha controlli integrati per evitare la perdita di lavoro non salvato e altre utili funzioni. Per
aggirare questi controlli, usa l'override ! nel tuo comando.
In Vi / Vim è possibile avere più di un file visualizzato (in finestre diverse) allo stesso tempo.
Utilizzare a per chiudere tutte le finestre aperte.
Examples
Esci con Salva
: wq
ZZ
ZQ
https://riptutorial.com/it/home 131
Esci con forza (con salvataggio)
: wq!
:wqall
:qall!
https://riptutorial.com/it/home 132
Capitolo 49: Utilizzo di Python per lo
scripting Vim
Sintassi
• : [range] py [thon] {statement}
Examples
Controlla la versione di Python in Vim
Vim ha il suo interprete Python integrato. Quindi potrebbe usare una versione diversa
dell'interprete di default per il sistema operativo.
Per verificare con quale versione di Python Vim è stato compilato, digitare il seguente comando:
Questo importa il modulo sys e stampa la sua version , contenente la versione dell'interprete
Python attualmente in uso.
Per poter usare i comandi vim in Python, il modulo vim dovrebbe essere importato.
Dopo aver importato questo modulo, l'utente ha accesso alla funzione di command :
Questo comando dovrebbe eseguire i in modalità normale, quindi digitare Text to insert e tornare
alla modalità normale.
Ogni istruzione Python in Vim dovrebbe essere preceduta dal comando :python , per indicare a
Vim che il comando successivo non è Vimscript ma Python.
Per evitare di digitare questo comando su ogni riga, quando si esegue il codice Python multilinea,
è possibile istruire Vim a interpretare il codice tra due espressioni marker come Python.
https://riptutorial.com/it/home 133
:python << {marker_name}
a = "Hello World"
print(a)
{marker_name}
dove {marker_name} è la parola che vuoi usare per designare la fine del blocco python.
Per esempio:
stamperebbe:
https://riptutorial.com/it/home 134
Capitolo 50: Vantaggi di vim
Examples
Personalizzazione
Il vantaggio di usare vim su un semplice editor di testo come notepad o gedit è che consente
all'utente di personalizzare quasi tutto su se stesso. Se mai ti ritrovi a fare un qualche tipo di
azione più e più volte, vim ha una moltitudine di funzioni che ti aiuteranno a fare questa azione più
velocemente e più facilmente.
La maggior parte degli IDE popolari come MS Visual Studio o IntelliJ IDEA forniscono ai propri
utenti scorciatoie utili e anche una certa quantità di personalizzazione, ma sono solitamente
correlati a azioni specifiche comuni in un particolare contesto, mentre vim consente di
personalizzarli per diversi situazioni, senza conflitto tra loro. Potrebbe essere comodo sviluppare
programmi c ++ in Visual Studio e Java in IntelliJ, ma non si scriverebbe codice Python lì, e per
questo c'è un altro IDE, ovviamente, ma in vim puoi praticamente modificare qualsiasi lingua tu
voglia senza perdere la convenienza.
Ci sono ovviamente altri editor personalizzabili, e io non sono il solo a dire che vim è il migliore per
tutti. Questa è una questione di preferenza personale. Non credo che qualcuno sosterrà che
emacs consente il livello di personalizzazione inferiore a quello di vim (e alcuni direbbero
altrimenti), ma devi provarlo per te stesso, per trovare ciò che ti si addice meglio.
Alcuni dicono che non vogliono passare mesi a imparare come usare un editor, solo per poter
lavorare su di esso. Ma quelli che lo fanno, per lo più sono d'accordo, che ne è valsa la pena. Per
me personalmente non è mai stato un problema, imparare cose nuove su Vim e diventare più
efficiente è semplicemente divertente. E c'è molto da imparare.
leggero
Vim è (come GNU Nano o GNU emacs) leggero. Non ha bisogno di alcun tipo di interfaccia
grafica (come x11, wayland & co).
Ciò rende vim un migliore amico dei manutentori del sistema. Puoi usarlo usando ssh e, questo è
molto importante, su dispositivi molto piccoli che non hanno un qualche tipo di interfaccia grafica.
Programmare e mantenere server remoti è diventato sempre più importante negli ultimi anni e
usare vim (o emacs) è il modo migliore per farlo.
A differenza di molti IDE, vim offre la possibilità di lavorare con molti tipi di file fuori dalla scatola e
di scrivere i propri comandi e la sintassi hl è semplice.
E, ultimo ma non meno importante, un utente vim dovrebbe essere in grado di usare vi, che è
preinstallato sulla maggior parte dei sistemi UNIX.
https://riptutorial.com/it/home 135
Capitolo 51: vglobal: esegue comandi su
linee che non corrispondono a livello globale
introduzione
: vglobal o: v è l'opposto di: globale o: g che opera su linee che non corrispondono al modello
specificato (inverso).
Examples
: V / modello / d
Esempio:
Aprire example.txt utilizzando vim e digitare :v/TODO/d in modalità Ex . Questo cancellerà tutte le
linee che non contengono il modello TODO .
https://riptutorial.com/it/home 136
Leggi vglobal: esegue comandi su linee che non corrispondono a livello globale online:
https://riptutorial.com/it/vim/topic/9867/vglobal--esegue-comandi-su-linee-che-non-corrispondono-
a-livello-globale
https://riptutorial.com/it/home 137
Capitolo 52: Vim Text Objects
Examples
Seleziona una parola senza circondare lo spazio bianco
Supponiamo di voler selezionare una parola senza circondare spazi bianchi, utilizzare l'oggetto
testo iw per la parola interna usando la modalità visiva:
Supponiamo di voler selezionare una parola con uno spazio bianco circostante, utilizzare l'oggetto
testo aw per circa una parola usando la modalità visiva:
Possiamo selezionare un testo all'interno di un html o xml tag utilizzando Visual selezione v e il
testo oggetto it .
https://riptutorial.com/it/home 138
Tutti gli altri oggetti di testo possono essere utilizzati anche per operare sul testo all'interno del tag
https://riptutorial.com/it/home 139
Capitolo 53: Vimscript
Osservazioni
I comandi in un file Vimscript vengono eseguiti in command mode per impostazione predefinita.
Pertanto, tutte le direttive in command mode non a command mode devono essere precedute da prefisso.
Examples
Ciao mondo
Quando si tenta di stampare qualcosa per il debug in vimScript, si è tentati di fare semplicemente
quanto segue.
Tuttavia, nel contesto di un complesso plug-in, ci sono spesso molte altre cose che accadono
subito dopo aver tentato di stampare il tuo messaggio, quindi è importante aggiungere il sleep
dopo il tuo messaggio in modo che tu possa effettivamente vederlo prima che scompaia.
Poiché un file Vimscript è una raccolta di azioni in modalità Comando, l'utente deve specificare
che le azioni desiderate devono essere eseguite in modalità normale.
normal GV5k
Qui G indica a vim di cambiare la posizione del cursore sull'ultima riga, la V per andare alla
modalità visuale lineare e il 5k per andare 5 righe in alto.
normal ABoris
dove A pone l'editor in modalità di inserimento alla fine della riga e il resto è il testo da inserire.
https://riptutorial.com/it/home 140
Titoli di coda
S.
Capitoli Contributors
No
Chiedi di creare
directory inesistenti
5 Tom Hale
dopo aver salvato un
nuovo file
Codice di
6 formattazione Philip Kirkbride
automatica
Comandi in modalità
7 Tom Hale
normale
Comandi in modalità
8 A. Raza, rodericktech, romainl, The Nightman
normale (modifica)
Configurazioni utili
11 Cows quack, maniacmic, Tomh
che possono essere
https://riptutorial.com/it/home 141
inserite in .vimrc
Conversione di file di
13 testo da DOS a grochmal, LazyBrush
UNIX con vi
Correttore
14 andipla, Johnathan Andersen, lwassink
ortografico
Differenze tra
17 still_dreaming_1, tbodt
Neovim e Vim
Espressioni regolari
19 UNagaswamy
in modalità Ex
https://riptutorial.com/it/home 142
Manipolazione del Chris Nager, Christopher Bottoms, LittleByBlue, Nikola
27
testo Geneshki, Philip Kirkbride, romainl, till, Tom Hale, zarak
Mappature chiave in Christian Rondeau, Ingo Karkat, KerDam, Luc Hermitte, madD7,
28
Vim New Alexandria, Nikola Geneshki, RamenChef, romainl
Miglioramento della
cancellazione e
29 GiftZwergrapper
ripetizione con un
undodir
Modalità - inserire,
30 rgoliveira, romainl
normale, visiva, ex
Movimenti e oggetti
31 tbodt
di testo
Ottieni: aiuto
34 (usando il manuale Aidan Miles, Luc Hermitte
integrato di Vim)
41 Salvataggio abidibo
https://riptutorial.com/it/home 143
Aaron Thoma, Andrea Romagnoli, Christian Rondeau,
cmlaverdiere, Daniel Käfer, Gerard Roche, LittleByBlue,
46 Uova di Pasqua
Mateusz Piotrowski, Mattias, mcarton, nobe4, NonlinearFruit,
sudo bangbang, tbodt, Tejus Prasad
vglobal: esegue
comandi su linee che
51 UNagaswamy
non corrispondono a
livello globale
https://riptutorial.com/it/home 144