Il 0% ha trovato utile questo documento (0 voti)
9 visualizzazioni159 pagine

Vim It

Utilizzo Vim

Caricato da

Carlos F
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
9 visualizzazioni159 pagine

Vim It

Utilizzo Vim

Caricato da

Carlos F
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 159

vim

#vim
Sommario
Di 1

Capitolo 1: Iniziare con vim 2

Osservazioni 2

Versioni 3

Examples 4

Installazione 4

Installazione su Linux / BSD 4

Distribuzioni basate su Arch e Arch 4

Distribuzioni basate su Debian e Debian 4

Distribuzioni basate su Gentoo e Gentoo 4

RedHat e distribuzioni basate su RedHat 4

Fedora 4

Distribuzioni basate su Slackware e Slackware 5

OpenBSD e distribuzioni basate su OpenBSD 5

Distribuzioni di FreeBSD e FreeBSD 5

Installazione su Mac OS X 5

Installazione regolare 5

Gestore di pacchetti 5

Installazione su Windows 6

cioccolatoso 6

Costruire Vim dalla fonte 6

Uscire da Vim 6

Spiegazione: 7

Tutorial interattivi di Vim (come vimtutor) 7

Salvataggio di un file di sola lettura modificato in Vim 7

Comando Spiegazione 8

Sospendere vim 8

Nozioni di base 9

Cosa fare in caso di incidente 11

Capitolo 2: :globale 12

Sintassi 12
Osservazioni 12

Examples 12

Utilizzo di base del comando globale 12

Strattonare ogni riga corrispondente a un motivo 12

Sposta / raccogli linee contenenti informazioni chiave 13

Capitolo 3: autocomandi 14

Osservazioni 14

Examples 14

Genera automaticamente .vimrc dopo aver salvato 14

Aggiorna le viste di vimodiff se un file viene salvato in un'altra finestra 15

Capitolo 4: buffer 16

Examples 16

Gestione dei buffer 16

Buffer nascosti 16

Commutazione del buffer utilizzando parte del nome file 16

Passa rapidamente al buffer precedente o a qualsiasi buffer in base al numero 17

Capitolo 5: Chiedi di creare directory inesistenti dopo aver salvato un nuovo file 18

introduzione 18

Examples 18

Richiedi di creare le directory con: w o creale in modo invisibile con: w! 18

Capitolo 6: Codice di formattazione automatica 19

Examples 19

In modalità normale: 19

Capitolo 7: Comandi in modalità normale 20

Sintassi 20

Osservazioni 20

Examples 20

Ordinamento del testo 20

Ordinamento normale 20

Ordinamento inverso 20

Selezione senza distinzione tra maiuscole e minuscole 20


Ordinamento numerico 20

Rimuovi i duplicati dopo l'ordinamento 20

Combinazione di opzioni 21

Capitolo 8: Comandi in modalità normale (modifica) 22

Examples 22

Introduzione: nota rapida sulla modalità normale 22

Annulla e ripristina di base 22

Disfare 22

Rifare 22

Ripeti l'ultima modifica 23

Copia, taglia e incolla 23

registri 24

Proposte 24

Copia e taglio 24

incollare 25

Quindi, come posso eseguire un taglio e una pasta davvero semplice? 25

Completamento 26

Capitolo 9: Come compilare Vim 28

Examples 28

Compilare su Ubuntu 28

Capitolo 10: Configurazione di Vim 29

Examples 29

Il file vimrc 29

Quali opzioni posso usare? 29

File e directory 30

Opzioni 31

Impostazione delle opzioni booleane 31

Impostazione delle opzioni di stringa 31

Impostazione delle opzioni di numero 31

Usare un'espressione come valore 32

Mapping 32
Mappature ricorsive 32

Mappature non ricorsive 32

Esecuzione di un comando da una mappatura 32

Esecuzione di più comandi da una mappatura 33

Chiamare una funzione da una mappatura 33

Mappatura di una mappatura <Plug> 33

variabili 33

comandi 33

Esempi 33

funzioni 34

Esempio 34

Funzioni dello script 34

Usando s: funzioni dalle mappature 34

Gruppi di autocomando 35

Esempio 35

Condizionali 35

Impostazione delle opzioni 35

Evidenziazione della sintassi 36

Combinazioni di colori 36

Modifica delle combinazioni di colori 36

Installazione di combinazioni di colori 36

Attiva / disattiva l'enumerazione delle righe 37

plugin 37

Capitolo 11: Configurazioni utili che possono essere inserite in .vimrc 38

Sintassi 38

Examples 38

Sposta su / giù le linee visualizzate durante il wrapping 38

Abilita l'interazione del mouse 38

Configura il registro predefinito da utilizzare come appunti di sistema 38

Capitolo 12: Consigli e suggerimenti per aumentare la produttività 40

Sintassi 40

Osservazioni 40
Examples 40

Macro "usa e getta" veloci 40

Utilizzando la funzione di completamento del percorso all'interno di Vim 40

Attiva i numeri di riga relativi 41

Visualizzazione dei numeri di riga 42

Mappature per l'uscita dalla modalità di inserimento 42

jk 42

Blocco maiuscole 43

Linux 43

finestre 43

Mac OS 43

Come conoscere la directory e / o il percorso del file che si sta modificando 44

Cerca all'interno di un blocco funzione 44

Copia, sposta o cancella la linea trovata 45

Scrivi un file se ti dimentichi di "sudo" prima di avviare vim 46

Ricarica automaticamente vimrc al salvataggio 46

Completamento della riga di comando 46

Capitolo 13: Conversione di file di testo da DOS a UNIX con vi 48

Osservazioni 48

Examples 48

Conversione di un file di testo DOS in un file di testo UNIX 48

Utilizzo del file form di VIm 48

Capitolo 14: Correttore ortografico 50

Examples 50

Controllo ortografico 50

Imposta lista parole 50

Capitolo 15: Costruire da vim 51

Examples 51

Iniziare una costruzione 51

Capitolo 16: dentellatura 52

Examples 52

Rientra un intero file usando il motore di indentazione incorporato 52


Linee di rientro o sporgenza 52

Capitolo 17: Differenze tra Neovim e Vim 54

Examples 54

File di configurazione 54

Capitolo 18: Espressioni regolari 55

Osservazioni 55

Examples 55

parola 55

Capitolo 19: Espressioni regolari in modalità Ex 56

Examples 56

Modifica un'espressione regolare in modalità Ex 56

Capitolo 20: Estensione di Vim 59

Osservazioni 59

Examples 59

Come funzionano i plugin 59

Il principio 59

Il metodo manuale 60

Plugin per singolo file 60

impacchettare 60

VAM 60

Vundle 61

Installazione di Vundle 61

Formati di plugin supportati 61

Il futuro: pacchetti 62

patogeno 62

Installare Pathogen 62

Utilizzo di agente patogeno 62

Benefici 63

Capitolo 21: Finestre divise 64

Sintassi 64

Osservazioni 64
Examples 64

Apertura di più file in split dalla riga di comando 64

Orizzontalmente 64

Verticalmente 64

Aprire una nuova finestra divisa 64

Modifica delle dimensioni di una divisione o di una vsplit 65

Tasti di scelta rapida 65

Chiudi tutte le divisioni ma quella corrente 65

Gestione di Open Split Windows (scorciatoie da tastiera) 65

Spostati tra le divisioni 66

Apertura spaccata sana 66

Capitolo 22: Inserimento di testo 67

Examples 67

Lasciando la modalità di inserimento 67

Diversi modi per entrare nella modalità di inserimento 67

Inserisci scorciatoie della modalità 68

Esecuzione di comandi normali dalla modalità di inserimento 68

Esempio 69

Inserisci il testo in più righe contemporaneamente 69

Incolla il testo usando il comando "incolla" del terminale 69

Incollare da un registro mentre si è in modalità di inserimento 70

Comandi e scorciatoie di inserimento avanzati 70

Disattiva il rientro automatico per incollare il codice 71

Capitolo 23: Intervalli della riga di comando 73

Examples 73

Numeri di linea assoluti 73

Numeri di linea relativi 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

Capitolo 25: Lo spazio bianco 77

introduzione 77

Osservazioni 77

Examples 77

Elimina gli spazi finali in un file 77

Elimina le righe vuote in un file 77

Converti le schede in spazi e spazi in schede 78

Capitolo 26: Macro 79

Examples 79

Registrare una macro 79

Modifica di una macro vim 79

Macro ricorsive 80

Cos'è una macro? 80

Registra e riproduci azione (macro) 82

Capitolo 27: Manipolazione del testo 83

Osservazioni 83

Examples 83

Conversione di casi di testo 83

In modalità normale: 83

In modalità visiva: 83

Numeri incrementali e decrementali e caratteri alfabetici 83

Numeri incrementali e decrescenti 84

Incrementare e decrementare i caratteri alfabetici 84

Numeri di incremento e decremento quando è abilitato l'incremento / decremento alfabetico 84

Codice di formattazione 85

Utilizzo di "verbi" e "nomi" per la modifica del testo 85

Capitolo 28: Mappature chiave in Vim 87

introduzione 87
Examples 87

Mappatura di base 87

panoramica della mappa 87

mappa Operatore 87

comando di mappa 88

Esempi 88

Combinazione di tasti leader della mappa 88

Illustrazione della mappatura di base (scorciatoie utili). 89

Capitolo 29: Miglioramento della cancellazione e ripetizione con un undodir 90

Examples 90

Configurando il tuo vimrc per usare un undodir 90

Capitolo 30: Modalità - inserire, normale, visiva, ex 91

Examples 91

Le basi sulle modalità 91

Modalità normale (o modalità Comando) 91

Modalità di inserimento 91

Modalità visiva 91

Seleziona la modalità 91

Sostituisci la modalità 92

Modalità della riga di comando 92

Modalità Ex 92

Capitolo 31: Movimenti e oggetti di testo 93

Osservazioni 93

Examples 93

Modifica del contenuto di una stringa o di un elenco di parametri 93

Capitolo 32: Movimento 94

Examples 94

Ricerca 94

Saltare ai personaggi 94

Alla ricerca di stringhe 94

Movimento di base 95
Osservazioni 95

frecce 95

Movimenti di base 95

Cercando il modello 97

Navigazione verso l'inizio di una parola specifica 98

Usare i segni per muoversi 99

TLDR 99

Imposta un segno 100

Vai a un segno 100

Marchi globali 100

Segni speciali 101

Salta alla linea specifica 102

Capitolo 33: Opzioni Vim 103

Sintassi 103

Osservazioni 103

Examples 103

Impostato 103

dentellatura 103

Larghezza 103

spazi 103

Tabs 104

Indentazione automatica 104

Descrizioni delle istruzioni 104

Personaggi invisibili 104

Mostra o nascondi personaggi invisibili 104

Caratteri simbolo predefinito 105

Personalizza simboli 105

Capitolo 34: Ottieni: aiuto (usando il manuale integrato di Vim) 106

introduzione 106

Sintassi 106
Parametri 106

Examples 106

Guida introduttiva / Navigazione nei file della guida 106

Ricerca nel manuale 107

Capitolo 35: pieghevole 109

Osservazioni 109

Examples 109

Configurazione del metodo di piegatura 109

Creazione manuale di un pieghevole 109

Apertura, chiusura e commutazione di pieghe 109

Mostrando la linea contenente il cursore 110

Blocchi a C pieghevoli 110

Capitolo 36: plugin 111

Examples 111

Fugitive Vim 111

Albero NERD 111

Capitolo 37: Plugin di tipo file 112

Examples 112

Dove mettere i plugin di tipo file personalizzato? 112

Capitolo 38: Registri Vim 113

Parametri 113

Examples 113

Elimina un intervallo di linee in un registro con nome 113

Incolla il nome del file mentre si trova in modalità di inserimento usando il registro dei 114

Copia / incolla tra Vim e gli appunti di sistema 114

Aggiungi a un registro 114

Capitolo 39: Ricerca nel buffer corrente 115

Examples 115

Ricerca di un pattern arbitrario 115

Ricerca della parola sotto il cursore 115

eseguire il comando su righe che contengono testo 116

Capitolo 40: Risorse Vim 117


Osservazioni 117

Examples 117

Imparare Vimscript nel modo più duro 117

Capitolo 41: Salvataggio 118

Examples 118

Salvataggio di un buffer in una directory inesistente 118

Capitolo 42: scorrimento 119

Examples 119

Scorrimento verso il basso 119

Scorrimento verso l'alto 119

Scorrimento relativo alla posizione del cursore 119

Capitolo 43: Solarized Vim 121

introduzione 121

Examples 121

.vimrc 121

Capitolo 44: Sostituzione 122

Sintassi 122

Parametri 122

Osservazioni 122

Esempio 122

Examples 122

Sostituzione semplice 122

Riorganizza rapidamente la parola sotto il cursore 123

Sostituzione con approvazione interattiva 123

Tastiera scorciatoia per sostituire la parola evidenziata 123

Capitolo 45: Trova e sostituisci 124

Examples 124

Comando sostitutivo 124

Sostituisci con o senza le espressioni regolari 125

Capitolo 46: Uova di Pasqua 127

Examples 127
Aiuto! 127

Quando ti senti giù 127

La risposta 127

Alla ricerca del Santo Graal 127

Ceci n'est pas une pipe 127

Quando un utente si annoia 128

Cucchiaio 128

Cavalieri che dicono Ni! 128

nunmap 128

Capitolo 47: Usando ex dalla riga di comando 130

Examples 130

Sostituzione dalla riga di comando 130

Capitolo 48: Uscire da Vim 131

Parametri 131

Osservazioni 131

Examples 131

Esci con Salva 131

Esci senza salvare 131

Esci con forza (senza salvare) 131

Esci con forza (con salvataggio) 132

Esci con forza da tutte le finestre aperte (senza salvare) 132

se sono aperti più file 132

Capitolo 49: Utilizzo di Python per lo scripting Vim 133

Sintassi 133

Examples 133

Controlla la versione di Python in Vim 133

Esegui i comandi della modalità normale Vim attraverso l'istruzione Python 133

Esecuzione di codice Python multilinea 133

Capitolo 50: Vantaggi di vim 135

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

Capitolo 52: Vim Text Objects 138

Examples 138

Seleziona una parola senza circondare lo spazio bianco 138

Seleziona una parola con lo spazio bianco circostante 138

Seleziona il testo all'interno di un tag 138

Capitolo 53: Vimscript 140

Osservazioni 140

Examples 140

Ciao mondo 140

Uso dei comandi in modalità normale in Vimscript 140

Titoli di coda 141


Di
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version
from: vim

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

Versione Data di rilascio

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.

Pertanto è generalmente consigliabile installare una build completa.

Installazione su Linux / BSD


Su quei sistemi, il trucco è semplicemente quello di installare la versione della GUI che viene
fornita con un comando gvim per l'avvio della GUI e un comando vim per l'avvio della TUI.

Distribuzioni basate su Arch e Arch

$ sudo pacman -R vim


$ sudo pacman -S gvim

Distribuzioni basate su Debian e Debian

$ sudo apt-get update


$ sudo apt-get install vim-gtk

Distribuzioni basate su Gentoo e Gentoo

$ sudo emerge --sync


$ sudo emerge app-editors/gvim

RedHat e distribuzioni basate su RedHat

$ sudo yum check-update


$ sudo yum install vim-X11

Fedora

https://riptutorial.com/it/home 4
$ sudo dnf check-update
$ sudo dnf install vim-X11

Distribuzioni basate su Slackware e Slackware

$ sudo slackpkg update


$ sudo slackpkg install-new vim-gvim

OpenBSD e distribuzioni basate su OpenBSD

$ sudo pkg_add vim-x11

Distribuzioni di FreeBSD e FreeBSD

$ sudo pkg install editors/vim

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:

• fare doppio clic sull'icona MacVim nel Finder,


• fai clic sull'icona MacVim nel Dock,
• emettere $ mvim nella shell per aprire la GUI MacVim,
• emettere $ mvim -v nella shell per aprire il TUI MacVim.

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:

$ sudo port selfupdate


$ sudo port install macvim

homebrew:

$ brew install macvim

Per rendere MacVim la console di default Vim:

$ brew install macvim --with-override-system-vim

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

> choco install vim

Costruire Vim dalla fonte


Se i metodi sopra indicati non soddisfano le tue esigenze, è comunque possibile costruire Vim da
solo , con solo le opzioni di cui hai bisogno.

Questo argomento sarà discusso nella sua sezione (attualmente in bozza).

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 annullare le modifiche e uscire da Vim:

• per forzare l'uscita e annullare le modifiche (abbreviazione di :quit! non


:q! Invio
confondere con :!q ),
• ZQ è una scorciatoia che fa lo stesso di :q! ,
• :cq Enter quit e return error (elimina tutte le modifiche in modo che il compilatore non
ricompili questo file)

Per salvare le modifiche e uscire da Vim:

• :wq Enter (abbreviazione di :write e :quit ),


• :x Invio (uguale a :wq , ma non verrà scritto se il file non è stato modificato),
• ZZ è una scorciatoia che fa lo stesso di :x (Salva spazio di lavoro e chiudi l'editor),
• :[range]wq! Invio (scrivi le righe in [intervallo])

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:

• :wq filename Immettere o;


• :x filename Invio

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!"

Tutorial interattivi di Vim (come vimtutor)

vimtutor è un tutorial interattivo che copre gli aspetti più basilari dell'editing del testo.

Su un sistema simile a UNIX, puoi iniziare il tutorial con:

$ vimtutor

Su Windows, "Vim tutor" può essere trovato nella directory "Vim 7.x" in "Tutti i programmi" nel
menu di Windows.

Vedi :help vimtutor per ulteriori dettagli.

Altre esercitazioni interattive includono quelle basate su browser:

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

Salvataggio di un file di sola lettura modificato in Vim

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.

:w !sudo tee > /dev/null %

A quale mappa puoi :w!! nel tuo .vimrc :

cmap w!! w !sudo tee > /dev/null %

Ti verrà presentata una richiesta come mostrato nell'immagine.

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

:w ............................ isn't modifying your file in this case,


............................ but sends the current buffer contents to
............................ a substituted shell command
!sudo ...................... call the shell 'sudo' command
tee .................. the output of the vi/vim write command is redirected
using the 'tee' command
> /dev/null ...... throws away the standard output, since we don't need
to pass it to other commands
% .... expands to the path of the current file

fonti:

• Blog di Adam Culp

• StackOverflow, Come funziona il trucco "scrivi con sudo" di Vim

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

In alternativa, su alcuni sistemi, in modalità Normale o Visual , l'emissione di Ctrl + Z avrà lo


stesso effetto.

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à normale è per la modifica e la navigazione del testo. In questa modalità h , j , k e l


corrispondono ai tasti cursore ← , ↓ , ↑ e → . La maggior parte dei comandi in modalità normale può
essere preceduta da un "conteggio", ad esempio 3j sposta verso il basso di 3 righe.

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! ).

Questi sono alcuni dei comandi più utili in vim:

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

(append) entra nella modalità di inserimento dopo la posizione corrente del


a
cursore

https://riptutorial.com/it/home 9
Comando Descrizione

entra in modalità inserimento dopo l'ultimo carattere stampabile della riga


A
corrente

x cancella il carattere nella posizione corrente del cursore

X cancella il carattere a sinistra nella posizione corrente del cursore

w passa alla parola successiva

b passa alla parola precedente

0 sposta all'inizio della riga

$ sposta alla fine della riga

sostituisci: inserisce la modalità di sostituzione per un carattere. Il prossimo


r
carattere digitato sostituirà il carattere sotto il cursore.

entra nella modalità di sostituzione indefinitamente. Ogni carattere digitato


R
sostituirà il carattere sotto il cursore e farà avanzare il cursore di uno.

sostituto: cancella il carattere nella posizione corrente del cursore e quindi


s
entra nella modalità di inserimento

elimina la riga corrente su cui si trova il cursore e attiva la modalità di


S
inserimento

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

cambia la linea corrente, dal cursore alla parola successiva o al carattere,


cc , cw , cl
rispettivamente

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

p ,P mettere ("incolla") dopo, o prima della posizione corrente, rispettivamente

per creare una nuova riga vuota, dopo o prima di quella corrente e accedere
o ,O
alla modalità di inserimento

:w scrivere il buffer corrente su disco

https://riptutorial.com/it/home 10
Comando Descrizione

:q! , ZQ smettere senza scrivere

:x :wq , ZZ scrivere e uscire

:help apri una finestra con il file di aiuto

:help
{subject} mostra aiuto per un argomento specifico

iniziare a registrare le azioni per registrare z , q per terminare la registrazione,


qz @z per riprodurre le azioni. z può essere qualsiasi lettera: q è spesso usato per
comodità. Ulteriori informazioni: Macro

Cosa fare in caso di incidente

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

per recuperare le modifiche non salvate.

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.

Leggi Iniziare con vim online: https://riptutorial.com/it/vim/topic/879/iniziare-con-vim

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

Cancellerà la prima parola da ogni riga che contiene il testo "Ciao".

Il comando globale supporta anche la modalità visiva e gli intervalli .

Strattonare ogni riga corrispondente a un motivo

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

un comando semplice ma molto utile:

:g/ending/m$

muove linee contenenti ending alla fine del buffer.

m significa mossa
$ significa fine del buffer, mentre 0 significa inizio del buffer.

Leggi :globale online: https://riptutorial.com/it/vim/topic/3861/-globale

https://riptutorial.com/it/home 13
Capitolo 3: autocomandi
Osservazioni
Comandi autocmd surround

autocmd è un comando additivo e probabilmente non vuoi questo comportamento di default.

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

Aggiungi questo al tuo $MYVIMRC :

" Source vim configuration file whenever it is saved


if has ('autocmd') " Remain compatible with earlier versions
augroup Reload_Vimrc " Group name. Always use a unique name!
autocmd! " Clear any preexisting autocommands from this group
autocmd! BufWritePost $MYVIMRC source % | echom "Reloaded " . $MYVIMRC | redraw
autocmd! BufWritePost $MYGVIMRC if has('gui_running') | so % | echom "Reloaded " .
$MYGVIMRC | endif | redraw
augroup END
endif " has autocmd

Caratteristiche:

• echom dice all'utente cosa è successo (e registra anche :messages ).


• $MYVIMRC e $MYGVIMRC gestiscono i nomi specifici della piattaforma per i file di configurazione,
• e corrisponde solo ai file di configurazione effettivi (ignorando le copie in altre directory o un

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

Aggiorna le viste di vimodiff se un file viene salvato in un'altra finestra

:autocmd BufWritePost * if &diff | diffupdate | endif

Leggi autocomandi online: https://riptutorial.com/it/vim/topic/4887/autocomandi

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.

Usa :ls o :buffers per elencare tutti i buffer

Buffer nascosti

Spostarsi da un buffer con modifiche non salvate causerà questo errore:

E37: No write since last change (add ! to override)

Puoi disabilitarlo aggiungendo set hidden al tuo file .vimrc. Con questa opzione le tue modifiche
rimarranno nel buffer, ma non verranno salvate su disco.

Commutazione del buffer utilizzando parte del nome file

Per selezionare facilmente un buffer per nome file, puoi usare:

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

Ciò semplifica la selezione di un buffer in base al suo numero:

:b [buffer_num]

Passa rapidamente al buffer precedente o a qualsiasi buffer in base al numero

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

Puoi vedere i numeri del buffer da :ls o da un plugin come MiniBufExplorer .

Leggi buffer online: https://riptutorial.com/it/vim/topic/2317/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:

gg vai all'inizio = poi G

Leggi Codice di formattazione automatica online: https://riptutorial.com/it/vim/topic/7931/codice-di-


formattazione-automatica

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} /]

• Nota: le opzioni [n] [f] [x] [o] [b] si escludono a vicenda.

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

Se non si evidenzia il testo o si specifica un intervallo, l'intero buffer viene ordinato.

Ordinamento inverso
:sort!

Selezione senza distinzione tra maiuscole e


minuscole
:sort i

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

Leggi Comandi in modalità normale online: https://riptutorial.com/it/vim/topic/6005/comandi-in-


modalita-normale

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

Annulla e ripristina di base

Disfare

Comando : Descrizione

u u , undo Annulla la modifica più recente

5U Annullare le cinque modifiche più recenti (utilizzare qualsiasi numero)

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

Ripristina le due modifiche annullate più recenti (utilizza qualsiasi


2Ctrl-R
numero)

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.

Ognuno ha i suoi usi, ma u / : undo dovrebbe riguardare i casi più semplici.

Ripeti l'ultima modifica

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

. Ripeti l'ultima modifica

10. Ripeti l'ultima modifica 10 volte

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 .

Copia, taglia e incolla

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

aa Copia la riga corrente nel registro predefinito, in linea

Y Copia la riga corrente nel registro predefinito (sinonimo di yy )

"ayiw Copia la parola su cui si trova il cursore nel registro 'a'

20" byy Copia venti righe, a partire dal cursore, nel registro 'b'

d
{movimento} Taglia (cancella) il testo indicato dal movimento nel registro predefinito

dd Taglia la linea corrente nel registro predefinito, in linewise

Taglia dal cursore alla fine della riga nel registro predefinito (NON è un
D
sinonimo di dd )

"adiw Taglia la parola su cui si trova il cursore nel registro 'a'

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 dopo il cursore

P Incolla ciò che si trova nel registro predefinito prima del cursore

"ap Incolla il contenuto del registro 'a' dopo il cursore

"cp Incolla il contenuto del registro "c" prima del cursore

Quindi, come posso eseguire un taglio e una pasta davvero


semplice?
Se ho il seguente testo:

1 This line should be second


2 This line should be first

Posso fare il più semplice copia e incolla posizionando il mio cursore da qualche parte sulla riga 1
e digitando ddp . Ecco i risultati:

1 This line should be first


2 This line should be second

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

1 These words order out are of

Posso ripetere w per arrivare alla "o" nella parte anteriore di "order" (o b se ho appena digitato e ho
realizzato il mio errore).

Quindi "adaw per mettere" ordine "nel registro" a ".

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:

1 These words out of

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 ":

1 These words are out of

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.

1 These words are out of order

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:

This is an example sentence.

quindi vai alla riga successiva e inizia a digitare la stessa frase:

Thi

e poi premi Ctrl p che risulterà in:

This

Ora ancora in modalità di inserimento, premi Ctrl x Ctrl p e quindi la parola successiva sarà
completata con conseguente risultato:

This is

Continua a premere Ctrl x Ctrl p fino a completare l'intera riga.

Se sai che vuoi completare un'intera riga digita questo:

This is an example sentence.

https://riptutorial.com/it/home 26
quindi sul prossimo tipo di linea:

Thi

e premi x Ctrl l per completare la linea.

Se il completamento in corso è un nome file, Ctrl x Ctrl f può essere utilizzato per completare tale
directory. Genere:

~/Deskt

quindi premi Ctrl x Ctrl f e:

~/Desktop

sarà completato (se in quella posizione). Ctrl x Ctrl f può quindi essere utilizzato ripetutamente
per elencare i file nel desktop.

Leggi Comandi in modalità normale (modifica) online:


https://riptutorial.com/it/vim/topic/5250/comandi-in-modalita-normale--modifica-

https://riptutorial.com/it/home 27
Capitolo 9: Come compilare Vim
Examples
Compilare su Ubuntu

Per costruire vim dal sorgente 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.

Leggi Come compilare Vim online: https://riptutorial.com/it/vim/topic/3737/come-compilare-vim

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 .

Quali opzioni posso usare?

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

scroll number of lines to scroll for CTRL-U and CTRL-D


(local to window)
set scr=20
scrolloff number of screen lines to show around the cursor
set so=5
wrap long lines wrap
set nowrap wrap

...

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 :

• su Linux, BSD e Cygwin, $HOME è in genere /home/username/ ,


• su Mac OS X, $HOME è /Users/username/ ,
• su Windows, $HOME è in genere C:\Users\username\ .

La posizione canonica per la tua directory vimrc e la tua directory vim è alla radice della directory
$HOME :

• su sistemi simil-Unix

$HOME/.vimrc <-- the file


$HOME/.vim/ <-- the directory

• Su Windows

$HOME\_vimrc <-- the file


$HOME\vimfiles\ <-- the directory

Il layout sopra è garantito per funzionare, ora e in futuro.

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.

Se utilizzi esclusivamente 7.4, quanto segue sarà sufficiente:

• 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

e fai la tua configurazione in $HOME/.vim/vimrc o $HOME\vimfiles\vimrc .

Opzioni

Ci sono tre tipi di opzioni:

• opzioni booleane,
• opzioni di stringa,
• numero di opzioni.

Per verificare il valore di un'opzione,

• utilizzare :set option? per verificare il valore di un'opzione,


• utilizzare :verbose set option? per vedere anche dove era l'ultima volta.

Impostazione delle opzioni booleane

set booloption " Set booloption.


set nobooloption " Unset booloption.

set booloption! " Toggle booloption.

set booloption& " Reset booloption to its default value.

Impostazione delle opzioni di stringa

set stroption=baz " baz

set stroption+=buzz " baz,buzz


set stroption^=fizz " fizz,baz,buzz
set stroption-=baz " fizz,buzz

set stroption= " Unset stroption.

set stroption& " Reset stroption to its default value.

Impostazione delle opzioni di numero

set numoption=1 " 1

set numoption+=2 " 1 + 2 == 3


set numoption-=1 " 3 - 1 == 2
set numoption^=8 " 2 * 8 == 16

https://riptutorial.com/it/home 31
Usare un'espressione come valore
• utilizzando la concatenazione:

execute "set stroption=" . my_variable

• utilizzando :let :

let &stroption = my_variable

Vedi :help :set e :help :let .

Mapping

• Non inserire commenti dopo la mappatura, si romperà le cose.


• Usa :map <F6> per vedere cosa è mappato a <F6> e in quale modalità.
• Usa :verbose map <F6> per vedere anche dove è stata mappata l'ultima volta.
• :map e :map! sono troppo generici Usa :n[nore]map per i mapping in modalità normale,:
:i[nore]map per la modalità di inserimento :x[nore]map per la modalità visiva, ecc.

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 .

Mappature non ricorsive


Utilizza i mapping non ricorsivi solo se intendi utilizzare i comandi predefiniti nei tuoi mapping, che
è quasi sempre quello che desideri:

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.

Esecuzione di un comando da una mappatura

nnoremap <key> :MyCommand<CR>

https://riptutorial.com/it/home 32
Esecuzione di più comandi da una mappatura

nnoremap <key> :MyCommand <bar> MyOtherCommand <bar> SomeCommand<CR>

Chiamare una funzione da una mappatura

nnoremap <key> :call SomeFunction()<CR>

Mappatura di una mappatura <Plug>

map <key> <Plug>name_of_mapping

Vedi :help map-commands :help key-notation e :help <plug> .

vedi Key Mappings in Vim per ulteriori letture

variabili

Come la maggior parte dei linguaggi di scripting, vimscript ha variabili.

Si può definire una variabile con il comando: :let :

let variable = value

ed eliminalo con :unlet :

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

Vedi :help internal-variables .

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

command! MyCommand call SomeFunction()

https://riptutorial.com/it/home 33
command! MyOtherCommand command | Command | command

• Vedi :help user-commands .

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! MyFunction(foo, bar, ... ) abort


return a:foo . a:bar . (a:0 > 0 ? a:1 : '')
endfunction

Funzioni dello script


Se pensi di utilizzare la tua funzione solo nel file in cui è definita (o perché hai rotto una funzione
più grande in parti più piccole, o perché la userai in un comando, una mappatura, ...), puoi prefisso
con s: :, evitando di sporcare il tuo namespace globale con funzioni interne inutili:

function! s:my_private_function() " note we don't need to capitalize the first letter this
time
echo "Hi!"
endfunction

Usando s: funzioni dalle mappature

Se la funzione locale dello script verrà utilizzata in una mappatura, è necessario fare riferimento
utilizzando il prefisso <SID> speciale:

nnoremap <your-mapping-key> :call <SID>my_private_function()<CR>

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>

" This autocmd calls 'MyFunction()' everytime Vim tries to create/edit


" a buffer tied to a file in /'path/to/project/**/'.
autocmd BufNew,BufEnter /path/to/project/**/* call MyFunction()
augroup END

Vedi :help autocommand .

Condizionali

if v:version >= 704


" Do something if Vim is the right version.
endif

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

Vedi :help has-patch e :help feature-list .

Impostazione delle opzioni

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.

Ad esempio, per utilizzare gli spazi per il rientro:

:set expandtab
:set shiftwidth=4
:set softtabstop=4

Evidenziazione della sintassi

Attiva l'evidenziazione della sintassi, quando il terminale ha colori

if &t_Co > 2 || has("gui_running")


syntax on
end

Mostra spazi bianchi e tabulati finali. La visualizzazione delle schede può essere particolarmente
utile quando si cercano errori nei Makefile.

set list listchars=tab:\|_,trail:.


highlight SpecialKey ctermfg=DarkGray

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 .

Modifica delle combinazioni di colori


Il comando colorscheme cambia la colorscheme colori corrente.

Ad esempio, per impostare la combinazione di colori su "robokai":

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

Attiva / disattiva l'enumerazione delle righe

Per abilitare - digitare:

:set number o :set nu .

Per disabilitare - digitare:

:set nonumber o :set nonu .

Per abilitare l'enumerazione relativa alla posizione del cursore, digitare:

:set relativenumber .

Per disabilitare l'enumerazione relativa alla posizione del cursore, digitare:

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

C'è una buona lista di plugin su vimawesome

Leggi Configurazione di Vim online: https://riptutorial.com/it/vim/topic/2235/configurazione-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 wrap " if you haven't already set it


nmap j gj
nmap k gk

Abilita l'interazione del mouse

set mouse=a

Ciò consentirà l'interazione del mouse nell'editor di vim . Il mouse può

• cambia la posizione corrente del cursore


• seleziona il testo

Configura il registro predefinito da utilizzare come appunti di sistema

set clipboard=unnamed

Ciò rende possibile copiare / incollare tra Vim e gli appunti di sistema senza specificare alcun
registro speciale.

yy yanks la linea corrente negli appunti del sistema

p incolla il contenuto degli appunti di sistema in Vim

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

Aggiungi questo al tuo vimrc:

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

Per eseguire la macro registrata, utilizzare Q

Questo è utile per i macro che è necessario ripetere più volte di seguito ma non sarà più possibile
utilizzarli nuovamente in seguito.

Utilizzando la funzione di completamento del percorso all'interno di Vim

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.

Quando si desidera la funzionalità di completamento del percorso e si dispone di un file


/home/ubuntu/my_folder/my_file e si sta modificando un altro file facendo riferimento al percorso del
precedente:

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

e vuoi il percorso /home/ubuntu/my_folder_2

come di solito:

Entra nella modalità di inserimento

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.

Attiva i numeri di riga relativi

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:

sometimes, you see a block of


text. You want to remove
it but you
cannot directly get the
exact number of
lines to delete
so you try
10d , 5d
3d until
you
remove all the block.

Entra in modalità NORMAL: Esc

Ora esegui :set relativenumber . Una volta fatto il file verrà visualizzato come:

3 sometimes, you see a block of


2 text. You want to remove
1 it but you
0 cannot directly get the
1 exact number of
2 lines to delete
3 so you try
4 10d , 5d
5 3d until
6 you
7 remove all the block.

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.

3 sometimes, you see a block of


2 text. You want to remove
1 it but you
4 cannot directly get the
1 exact number of
2 lines to delete
3 so you try
4 10d , 5d
5 3d until
6 you
7 remove all the block.

Visualizzazione dei numeri di riga

Per visualizzare i numeri di riga dalla visualizzazione predefinita, immettere

:set number

Per nascondere i numeri di riga

:set nonumber

C'è anche una scorciatoia per sopra. nu è uguale al number .

:set nonu

Per nascondere i numeri di riga, possiamo anche usare

:set nu!

Mappature per l'uscita dalla modalità di inserimento

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

Quindi esegui il xmodmap file . Rimappa Caps Lock su Esc .

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

Dopo questo il comando di cui sopra è abbreviato al seguente:

vi{g/foo<CR>

Un altro trucco utile è stampare tutte le linee contenenti il modello:

vi{
:'<,'>g/foo/#

L'intervallo '<,'> viene inserito automaticamente.

Vedi :help range e :help :g .

Copia, sposta o cancella la linea trovata

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

Ma per aumentare la produttività puoi usare questa scorciatoia in questi casi:

" It's recommended to turn on incremental search when doing so


set incsearch

" copy the found line


cnoremap $t <CR>:t''<CR>
" move the found line
cnoremap $m <CR>:m''<CR>
" delete the found line
cnoremap $d <CR>:d<CR>``

Quindi una ricerca come questa:

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

Scrivi un file se ti dimentichi di "sudo" prima di avviare vim

Questo comando salverà il file aperto con diritti sudo

:w !sudo tee % >/dev/null

Puoi anche mappare w!! scrivere un file come root

:cnoremap w!! w !sudo tee % >/dev/null

Ricarica automaticamente vimrc al salvataggio

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

e poi per l'ultima volta, digita:

:so $MYVIMRC

La prossima volta che salvi il tuo vimrc , verrà automaticamente ricaricato.

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.

Completamento della riga di comando

imposta wildmenu per attivare i suggerimenti di completamento per la riga di comando.


Esegui il seguente

set wildmenu
set wildmode=list:longest,full

Ora se lo dici :color scheda :color ,

Otterrai

256-jungle Benokai BlackSea C64 CandyPaper Chasing_Logic ChocolateLiquor

https://riptutorial.com/it/home 46
:color 0x7A69_dark

Leggi Consigli e suggerimenti per aumentare la produttività online:


https://riptutorial.com/it/vim/topic/3382/consigli-e-suggerimenti-per-aumentare-la-produttivita

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.

First line of file^M


Next Line^M
And another^M

Se si desidera rimuovere ^ M, è possibile eliminare manualmente ciascuna ^ M. In alternativa, in vi


dopo aver premuto Esc è possibile immettere quanto segue al prompt della modalità di comando:

:1,$s/^M//g

Dove ^ M viene inserito con Ctrl e v insieme e quindi Ctrl e m insieme.

Questo esegue il comando dalla prima riga '1' all'ultima riga '$', il comando è di sostituire 's' '^ M'
per niente '' e per questo globalmente 'g'.

Utilizzo del file form di VIm

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

Leggi Conversione di file di testo da DOS a UNIX con vi online:


https://riptutorial.com/it/vim/topic/3827/conversione-di-file-di-testo-da-dos-a-unix-con-vi

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.

Imposta lista parole

Per impostare l'elenco di parole che vim utilizzerà per il controllo ortografico, impostare l'opzione
spelllang . Per esempio

:set spelllang=en # set to English, usually this is the default


:set spelllang=en_us # set to U.S. English
:set spelllang=en_uk # set to U.K. English spellings
:set spelllang=es # set to Spanish

Se vuoi impostare lo spelllang e attivare il controllo ortografico in un comando, puoi fare:

:setlocal spell spelllang=en

Leggi Correttore ortografico online: https://riptutorial.com/it/vim/topic/3653/correttore-ortografico

https://riptutorial.com/it/home 50
Capitolo 15: Costruire da vim
Examples
Iniziare una costruzione

:mak[e][!] [arguments] avvierà il programma a cui fa riferimento l'opzione makeprg . Per


impostazione predefinita, makeprg è impostato su "make", ma può essere configurato per
richiamare qualsiasi programma appropriato.

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 .

Leggi Costruire da vim online: https://riptutorial.com/it/vim/topic/3321/costruire-da-vim

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.

Comando Parte Descrizione

gg inizio del file

= indent (quando equalprg è vuoto)

sol fine del file

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 :

autocmd FileType c,cpp setlocal equalprg=clang-format

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:

" Use xmllint for indenting XML files. Commented out.


"autocmd FileType xml setlocal equalprg=xmllint\ --format\ --recover\ -\ 2>/dev/null
" Tidy gives more formatting options than xmllint
autocmd FileType xml setlocal equalprg=tidy\ --indent-spaces\ 4\ --indent-attributes\ yes\ --
sort-attributes\ alpha\ --drop-empty-paras\ no\ --vertical-space\ yes\ --wrap\ 80\ -i\ -xml\
2>/dev/null

Linee di rientro o sporgenza

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

>> rientro linea corrente

<< linea attuale outdent

https://riptutorial.com/it/home 52
Comando Descrizione

6>> indentare le prossime 6 righe

Puoi anche indentare utilizzando i movimenti . Ecco alcuni esempi utili.

Comando Descrizione

>gg rientro dalla riga corrente alla prima riga nel file

>G rientro dalla riga corrente all'ultima riga nel file

>{ trattino precedente paragrafo

>} indentare il prossimo paragrafo

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.

Leggi dentellatura online: https://riptutorial.com/it/vim/topic/6324/dentellatura

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

Leggi Differenze tra Neovim e Vim online: https://riptutorial.com/it/vim/topic/7848/differenze-tra-


neovim-e-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.

La ricerca di /\<foo\> nel seguente testo restituirà solo l'ultimo pippo.

calcio non è stupido foo

Leggi Espressioni regolari online: https://riptutorial.com/it/vim/topic/6533/espressioni-regolari

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:

1. Per prima cosa, vai in modalità Ex digitando q:


2. Ora vedrai tutti i comandi che hai digitato in modalità commandline di commandline , premi j per
passare all'espressione regolare che desideri modificare ( /\v[AZ]\w+\s[AZ]\w+ )
3. Al termine, premere ESC per passare alla modalità normale
4. Quindi premere Enter per eseguire il patten di ricerca

Ecco una schermata che mostra la ricerca di un Title Case

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.

Spesso aggiunte "funzionalità non esistenti" includono:

• commentando,
• rilevamento dell'indentazione,
• completamento automatico,
• fuzzy matching,
• supporto per una lingua specifica,
• eccetera.

Le "funzionalità esistenti" estese spesso includono:

• 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

Un plug-in può presentarsi come un singolo file contenente 30 righe di vimscript o 20 MB di


vimscript / python / ruby / qualunque sia suddiviso in più file in una dozzina di directory che
dipende da un numero di strumenti esterni.

Il primo è ovviamente facile da installare e gestire, ma quest'ultimo potrebbe mettere in


discussione una bella sfida.

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

Plugin per singolo file


Metti il file sotto $HOME/.vim/plugin o $HOME/vimfiles/plugin

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.

Un altro approccio consiste nel copiare l'intera directory in $HOME/.vim/bundle .

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

Vundle è un gestore di plugin per Vim.

Installazione di Vundle
(I dettagli completi sull'installazione sono disponibili nel Vundle Quick Start )

1. Installa Git e clona Vundle in ~/.vim/bundle/Vundle.vim .

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)

set nocompatible " be iMproved, required


filetype off " required

" set the runtime path to include Vundle and initialize


set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required


Plugin 'VundleVim/Vundle.vim'

" 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

"place non-Plugin stuff after this line

3. Installa i plugin: avviando Vim ed eseguendo :PluginInstall .

Formati di plugin supportati


Di seguito sono riportati esempi di formati diversi supportati. Mantenere i comandi del plugin tra
vundle#begin e vundle#end .

Posizione del plugin uso

plugin su GitHub Plugin 'tpope/vim-fugitive'

plugin da http://vim-scripts.org/vim/scripts.html Plugin 'L9'

Plugin
Plugin Git non ospitato su GitHub 'git://git.wincent.com/command-t.git'

git repos sulla tua macchina locale (cioè quando Plugin


'file:///home/gmarik/path/to/plugin'

https://riptutorial.com/it/home 61
Posizione del plugin uso

lavori sul tuo plugin)

Lo script sparkim vim è in una sottodirectory di


Plugin 'rstacruz/sparkup', {'rtp':
questo repository chiamato vim. Passa il percorso 'vim/'}
per impostare correttamente il runtimepath.

Installa L9 ed evita un conflitto di denominazione se


Plugin 'ascenator/L9', {'name':
hai già installato una versione diversa da qualche 'newL9'}
altra parte.

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

Vedi :help packages .

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):

git clone https://github.com/tpope/vim-pathogen.git

2. Aggiungi le seguenti righe all'inizio del tuo .vimrc :

" enable vim-pathogen


runtime bundle/vim-pathogen/autoload/pathogen.vim
execute pathogen#infect()

• la direttiva runtime specifica il percorso dello script autoload di vim-pathogen ;


• execute pathogen#infect() avvia.

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.

Lo sforzo necessario per "gestire" un plugin è quindi ridotto a:

• metti la sua directory di primo livello sotto ~/.vim/bundle/ per installarlo ,


• sostituisci la sua directory di primo livello per aggiornarlo ,
• elimina la sua directory di primo livello per disinstallarla .

Il modo in cui esegui queste tre azioni (manualmente, tramite uno strumento di automazione, con
Git / Svn / Hg / qualunque ...) dipende completamente da te.

Leggi Estensione di Vim online: https://riptutorial.com/it/vim/topic/3659/estensione-di-vim

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

vim -o file1.txt file2.txt

Verticalmente

vim -O file1.txt file2.txt

Opzionalmente è possibile specificare il numero di divisioni da aprire. L'esempio seguente apre


due split orizzontali e carica file3.txt in un buffer:

vim -o2 file1.txt file2.txt file3.txt

Aprire una nuova finestra divisa

È possibile aprire una nuova divisione all'interno di Vim con i seguenti comandi, in modalità
normale :

Orizzontalmente:

:split <file name>


:new

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.

il nuovo aprirà una divisione vuota

Modifica delle dimensioni di una divisione o di una vsplit

A volte potresti voler cambiare la dimensione di una divisione o di una vsplit.

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.

Tasti di scelta rapida


• Ctrl + w e + aumentano le dimensioni della finestra splitta
• Ctrl + w e - diminuisce la dimensione della finestra splitta
• Ctrl + w e = imposta una dimensione uguale alle finestre divise

Chiudi tutte le divisioni ma quella corrente

Modalità normale
Ctrl-w o

Modalità Ex

:only

o breve

:on

Gestione di Open Split Windows (scorciatoie da tastiera)

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.

Sposta in divisione sopra / sotto:

• Ctrl + w ek
• Ctrl + wej

https://riptutorial.com/it/home 65
Sposta a dividere Sinistra / Destra:

• Ctrl + w eh
• Ctrl + wel

Sposta in divisione Sopra / Sotto (a capo):

• Ctrl + w ew

Crea una nuova finestra vuota:

• Ctrl + w e n - oppure: nuovo

Crea nuova divisione orizzontale / verticale:

• Ctrl + W , S (maiuscolo)
• Ctrl + W , v (minuscolo)

Rendi la divisione attualmente attiva quella sullo schermo:

• Ctrl + w e o - oppure: on

Spostati tra le divisioni

Per passare alla divisione a sinistra, utilizzare <Cw><Ch>


Per passare alla divisione sotto, utilizzare <Cw><Cj>
Per passare alla divisione a destra, utilizzare <Cw><Ck>
Per passare alla divisione sopra, utilizzare <Cw><Cl>

Apertura spaccata sana

È un'esperienza migliore aprire split sotto e destra

impostalo usando

set splitbelow
set splitright

Leggi Finestre divise online: https://riptutorial.com/it/vim/topic/1705/finestre-divise

https://riptutorial.com/it/home 66
Capitolo 22: Inserimento di testo
Examples
Lasciando la modalità di inserimento

Comando Descrizione

<Esc> Lascia la modalità di inserimento, attiva gli autocomandi e le abbreviazioni

<C-[> Esatto anche di <Esc>

<Cc> Lascia la modalità di inserimento, non attiva gli autocommands

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

Diversi modi per entrare nella modalità di inserimento

Comando Descrizione

a Aggiungi testo seguendo la posizione corrente del cursore

A Aggiungi testo alla fine della riga corrente

i Inserisci il testo prima della posizione corrente del cursore

I Inserisci il testo prima del primo carattere non vuoto della riga corrente

gI Inserisci il testo nella prima colonna della linea del cursore

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 )

s o cl Elimina il carattere sotto il cursore e passa alla modalità di inserimento

S o cc Elimina l'intera riga e passa alla modalità di inserimento

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

c{motion} Elimina {motion} e avvia la modalità di inserimento (vedi Movimento base )

Inserisci scorciatoie della modalità

Comando Descrizione

<Cw> Elimina la parola prima del cursore

<Ct> Rientro della linea corrente con una shiftwidth

<Cd> Linea corrente nonindirata con una shiftwidth

reindent la linea, (sposta il cursore sulla posizione di rientro


<Cf>
automatico)

<Ca> Inserisci il testo inserito in precedenza

<Ce> Inserisci il carattere qui sotto

<Ch> Elimina un carattere indietro

<Cy> Inserisci il carattere sopra

<Cr>{register} Inserisci il contenuto di {register}

<Co>{normal mode eseguire {normal mode command} senza uscire dalla modalità di
command} inserimento

Prossima opzione di completamento automatico per la parola


<Cn>
corrente

Opzione di completamento automatico precedente per la parola


<Cp>
corrente

<Cv> Inserisci un carattere con il suo valore ASCII in decimale

<Cv>x Inserisci un carattere con il suo valore ASCII in esadecimale

<Cv>u Inserisci un carattere con il suo valore unicode in esadecimale

<Ck> Inserisci un digramma

Esecuzione di comandi normali dalla modalità di inserimento

In modalità inserimento, premere <Co> per abbandonare temporaneamente la modalità di


inserimento ed eseguire un comando normale una tantum.

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

Ciò consente alcune mappature utili, ad es

inoremap <C-f> <Right>


inoremap <C-b> <Left>
inoremap <C-a> <C-o>^
inoremap <C-e> <C-o>$

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.

Inserisci il testo in più righe contemporaneamente

Premi Ctrl + v per entrare in modalità blocco visivo.

Usa ↑ / ↓ / j / k per selezionare più linee.

Premi Maiusc + i e inizia a digitare ciò che desideri.

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

c os Elimina il blocco selezionato e attiva la modalità di inserimento

Elimina le linee selezionate (dal cursore fino alla fine) e attiva la modalità di
C
inserimento

R Elimina le linee selezionate e attiva la modalità di 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!

Incolla il testo usando il comando "incolla" del terminale

Se si utilizza il comando incolla dal programma di emulazione di terminale, Vim interpreterà il


flusso di caratteri come se fossero stati digitati. Ciò causerà tutti i tipi di effetti indesiderati, in

https://riptutorial.com/it/home 69
particolare la cattiva indizione.

Per risolvere il problema, dalla modalità di comando:

: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 ):

function! s:setup_paste() abort


set paste
augroup unimpaired_paste
autocmd!
autocmd InsertLeave *
\ set nopaste |
\ autocmd! unimpaired_paste
augroup end
endfunction

nnoremap <silent> yo :call <SID>setup_paste()<CR>o


nnoremap <silent> yO :call <SID>setup_paste()<CR>O

Ora si può semplicemente premere yo per incollare il codice sotto il cursore, quindi <Esc> per
tornare alla modalità normale / nopaste.

Incollare da un registro mentre si è in modalità di inserimento

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 ( " ).

Vedi :help registers .

Comandi e scorciatoie di inserimento avanzati

Ecco un rapido riferimento per l'inserimento avanzato, la formattazione e il filtraggio di comandi /


scorciatoie.

Comando / Shortcut Risultato

g +? +m Eseguire la codifica rot13, in movimento m

n + ctrl + a + n al numero sotto il cursore

n + ctrl + x - n al numero sotto il cursore

https://riptutorial.com/it/home 70
Comando / Shortcut Risultato

g + q +m Formatta linee di movimento m in larghezza fissa

: r ce w Linee centrali nell'intervallo da r a larghezza w

:rii Sinistra allinea le righe nell'intervallo r con la rientazione i

: r ri w A destra allinea le linee nell'intervallo da r a larghezza w

! mc Filtra le linee di movimento m attraverso il comando c

n !! c Filtra n linee attraverso il comando c

:r!c Filtra le linee r attraverso il comando c

Disattiva il rientro automatico per incollare il codice

Quando si incolla il testo attraverso un emulatore di terminale, la funzione di indentazione


automatica può distruggere il rientro del testo incollato.

Per esempio:

function () {
echo 'foo'
echo 'bar'
echo 'baz'
}

sarà incollato come:

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

Il seguente comando esegue :command on lines 23 to 56 :

:23,56command

NB: gli intervalli sono inclusi di default.

Numeri di linea relativi

Nel seguente comando l'intervallo inizia 6 righe sopra la riga corrente e termina 3 righe sotto:

:-6,+3command

Scorciatoie di linea

• . rappresenta la linea corrente ma può anche essere omessa interamente.


• $ rappresenta l'ultima riga .
• % rappresenta l'intero buffer , è una scorciatoia per 1,$ .

I due comandi sottostanti eseguono :command su ogni file dalla riga corrente all'ultima riga:

:.,$command
:,$command

Il comando seguente esegue :command sull'intero buffer:

:%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

Possono essere usati anche marchi automatici:

:'<,'>command " covers the visual selection


:'{,'}command " covers the current paragraph
:'[,']command " covers the last changed text

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 :

:/from/,/to/command " from next 'from' to next 'to'


:?from?,/to/command " from previous 'from' to next 'to'
:?from?,?to?command " from previous 'from' to previous 'to'

Vedi :help search-commands .

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'

Vedi :help search-offset .

Gamme miste

È possibile combinare tutto quanto sopra in gamme espressive:

:1267,/foo/-2command
:'{,command
:'f,$command

Sii creativo e non dimenticare di leggere :help cmdline-ranges .

Leggi Intervalli della riga di comando online: https://riptutorial.com/it/vim/topic/3383/intervalli-della-


riga-di-comando

https://riptutorial.com/it/home 74
Capitolo 24: L'operatore punto
Examples
Uso di base

L'operatore punto ripete l'ultima azione eseguita, ad esempio:

file test.tx

helo, World!
helo, David!

(cursore su [1] [1])


Ora esegui un cwHello<Esc> (Cambia parola helo in Hello )
Ora il buffer si presenta così:

Hello, World!
helo, David!

(cursore su [1] [5])


Dopo aver digitato j_ il cursore si trova su [2] [1].

Ora inserisci il . e l'ultima azione viene eseguita di nuovo:

Hello, World!
Hello, David!

(cursore su [2] [5])

Imposta il rientro

Questo è molto utile quando si imposta il rientro del codice

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

Leggi L'operatore punto online: https://riptutorial.com/it/vim/topic/3665/l-operatore-punto

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

È possibile eliminare gli spazi finali con il seguente comando.

:%s/\s\+$//e

Questo comando è spiegato come segue:

• entra in modalità Comando con :


• fai questo con l'intero file con % (l'impostazione predefinita sarebbe per la riga corrente)
• azione sostitutiva s
• / inizio del modello di ricerca
• \s carattere degli spazi bianchi
• \+ segno di escape +, uno o più spazi devono essere abbinati
• prima della fine della linea $
• / fine del modello di ricerca, inizio del modello di sostituzione
• / fine del modello di sostituzione. Fondamentalmente, sostituire con niente.
• e sopprime i messaggi di errore se non viene trovata alcuna corrispondenza

Elimina le righe vuote in un file

È possibile eliminare tutte le righe vuote in un file con il seguente comando:: g / ^ $ / d

Questo comando è spiegato come segue:

• entra in modalità Comando con :


• g è un comando globale che dovrebbe verificarsi sull'intero file
• / inizio del modello di ricerca
• il modello di ricerca di una riga vuota è ^g
• / fine del modello di ricerca
• Il comando Ex d cancella una linea

https://riptutorial.com/it/home 77
Converti le schede in spazi e spazi in schede

Puoi convertire le schede in spazi procedendo come segue:

Per prima cosa controlla che expandtab sia spento

:set noexpandtab

Poi

:retab!

che sostituisce gli spazi di una certa lunghezza con le schede

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 .

Leggi Lo spazio bianco online: https://riptutorial.com/it/vim/topic/8288/lo-spazio-bianco

https://riptutorial.com/it/home 78
Capitolo 26: Macro
Examples
Registrare una macro

Un modo per creare una macro è registrarlo .

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

e vim ripeterà la sequenza registrata.

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

Modifica di una macro vim

A volte si commette un errore con una lunga macro, ma si preferisce modificarlo piuttosto che
riscriverlo interamente. Puoi farlo usando il seguente processo:

1. Metti la macro su una riga vuota con "<register>p .

https://riptutorial.com/it/home 79
Se la tua macro è salvata nel registro a , il comando è "ap .

2. Modifica la macro secondo necessità.

3. Sposta la macro nel registro corretto spostando il cursore all'inizio della riga e utilizzando
"<register>y$ .

È possibile riutilizzare il registro originale o utilizzarne un altro. Se si desidera utilizzare il


registro b , il comando è "by$ . O utilizzando "<register>d$ (elimina la linea inutilizzata)

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

Scegli un punto di partenza coerente su ogni linea per iniziare e finire.

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

Esempio, dato il testo:

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.

Cos'è una macro?

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

Quella macro potrebbe essere registrata nel registro q :

qq start recording into register q


0wwgUiw
q stop recording

o salvato direttamente nel registro q :

:let @q = '0wwgUiw'

da riprodurre con:

@q

Ma potrebbe anche essere digitato direttamente nella riga di comando:

:normal 0wwgUiw

per la riproduzione istantanea tramite il comando :normal .

O inserire una variabile:

:let myvar = '0wwgUiw'

da riprodurre con:

@=myvar

O salvato come una mappatura:

nnoremap <key> 0wwgUiw

da riprodurre premendo <key> .

Se si desidera memorizzare una macro per riutilizzarla in un secondo momento, è possibile


digitare in modalità di inserimento:

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

Registra e riproduci azione (macro)

con il comando q potremmo semplificare un sacco di noioso lavoro in vim.

esempio 1. genera una sequenza di array (da 1 a 20).

PASSAGGIO 1. premere i per accedere alla modalità di inserimento, immettere 1

PASSAGGIO 2. Registrare la seguente azione: "aggiungere l'ultimo numero alla riga successiva
e incrementare il numero"

1. digitare esc per uscire dalla modalità di input


2. digitare qa per accedere alla modalità di registrazione, utilizzando il buffer a
3. digitare yy e p per copiare la riga corrente e incollarla come riga successiva
4. digita ctrl + a per incrementare il numero
5. digitare di nuovo q per terminare la registrazione

1
2

PASSAGGIO 3. Riproduci l' azione 18 volte.

digitare 18@a per ripetere l'azione 3 e l'azione 4 nel passaggio 2.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Leggi Macro online: https://riptutorial.com/it/vim/topic/1447/macro

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}

Esempio ( ^ indica la posizione del cursore):

Lorem ipsum dolor sit amet.


^
Lorem ipSum dolor sit amet. ~
Lorem IPSUM DOLOR sit amet. gU2w
Lorem IPsum DOLOR sit amet. gue

In modalità visiva:
• ~ inverte il caso del testo selezionato,
• u minuscolo il testo selezionato,
• U uppercases il testo selezionato

Esempio ( ^^^ contrassegna la selezione visiva):

Lorem ipsum dolor sit amet.


^^^^^^^^^^^^^
Lorem ipSUM DOLOR SIT amet. ~
Lorem ipSUM DOLOR SIT amet. U
Lorem ipsum dolor sit amet. u

Numeri incrementali e decrementali e caratteri alfabetici

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):
^

<Cx> decrementa il numero:

for i in range(10):
^

10<Ca> incrementa di 10 :

for i in range(20):
^

Incrementare e decrementare i caratteri alfabetici

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
^

Numeri di incremento e decremento quando è abilitato l'incremento /


decremento alfabetico

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:

Diciamo che vuoi diminuire da 11 a 10 e l'incremento / decremento alfabetico è attivo.

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

Utilizzo di "verbi" e "nomi" per la modifica del testo

Uno dei modi per pensare ai comandi che dovrebbero essere eseguiti, per modificare un testo in
un certo modo, è come frasi intere.

Un comando è un'azione eseguita su un oggetto. Quindi ha un verbo:

:normal i " insert


:normal a " append
:normal c " overwrite
:normal y " yank (copy)
:normal d " delete

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:

Impara a parlare vim: verbi, nomi e modificatori!

Learning Vim nel 2014: Vim come lingua

Modifica di VimSpeak usando Speech Grammar

Leggi Manipolazione del testo online: https://riptutorial.com/it/vim/topic/1707/manipolazione-del-


testo

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

panoramica della mappa


Una sequenza di tasti può essere rimappata su un'altra sequenza di tasti usando una delle
varianti di map .

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à

:map :noremap :unmap Modalità normale, visiva e operatore in attesa

:map! , :noremap! , :unmap! Inserisci e modalità riga di comando

:nmap :nnoremap :nunmap Modalità normale

:imap :inoremap :iunmap Modalità Inserisci e sostituisci

:vmap :vnoremap :vunmap Modalità visiva e selezione

:xmap :xnoremap :xunmap Modalità visiva

:smap :snoremap :sunmap Seleziona la modalità

:cmap :cnoremap :cunmap Modalità della riga di comando

https://riptutorial.com/it/home 87
comandi Modalità

:omap :onoremap :ounmap Operatore in attesa

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

Combinazione di tasti leader della mappa

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.

Nel plugin, definiremmo i mapping con:

:nnoremap <Leader>a somecomplexaction

https://riptutorial.com/it/home 88
Questo mapperebbe l' azione di somecomplexaction alla combinazione di tasti \ + a .

L'azione senza il leader non cambia.

È anche possibile usare <Plug>Mappings per lasciare più spazio per personalizzare i collegamenti
dei plugin.

Illustrazione della mappatura di base (scorciatoie utili).

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.

nnoremap <c-s> :w<CR>


inoremap <c-s> <c-o>:w<CR>

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

Allo stesso modo,

" This is commented, as Ctrl+Z is used in terminal emulators to suspend the ongoing
program/process.
" nnoremap <c-z> :u<CR>

" Thus, Ctrl+Z can be used in Insert mode


inoremap <c-z> <c-o>:u<CR>

" Enable Ctrl+C for copying selected text in Visual mode


vnoremap <c-c> <c-o>:y<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 .

Leggi Mappature chiave in Vim online: https://riptutorial.com/it/vim/topic/3535/mappature-chiave-


in-vim

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

if has('persistent_undo') "check if your vim version supports


set undodir=$HOME/.vim/undo "directory where the undo files will be stored
set undofile "turn on the feature
endif

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

Leggi Miglioramento della cancellazione e ripetizione con un undodir online:


https://riptutorial.com/it/vim/topic/7875/miglioramento-della-cancellazione-e-ripetizione-con-un-
undodir

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à normale (o modalità Comando)


• Inizia la modalità vim .
• Da altre modalità, solitamente accessibili da Esc .
• Ha la maggior parte dei comandi di navigazione e di manipolazione del testo.

Vedi :help normal-mode .

Modalità di inserimento
• Comunemente accessibile da: a , i , A , I , c , s .
• Per inserire il testo .

Vedi :help insert-mode .

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.

Vedi :help visual-mode .

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.

Vedi :help select-mode .

https://riptutorial.com/it/home 91
Sostituisci la modalità
• Accessibile dalla modalità normale con R
• Permette di sovrascrivere il testo esistente.

Vedi :help replace-mode .

Modalità della riga di comando


Vedi :help command-line-mode .

Modalità Ex
Vedi :help Ex-mode .

Leggi Modalità - inserire, normale, visiva, ex online:


https://riptutorial.com/it/vim/topic/2231/modalita---inserire--normale--visiva--ex

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

Diciamo che hai questa linea di codice:

printf("Hello, world!\n");

Ora dì che vuoi cambiare il testo in "Programma in uscita".

Comando Buffer Mnemonico

ci" printf("¦"); c hange i n " .

Program exiting.\n<esc> printf("Program exiting.\n");

Leggi Movimenti e oggetti di testo online: https://riptutorial.com/it/vim/topic/4107/movimenti-e-


oggetti-di-testo

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

Salta avanti / indietro tra i 'risultati' via ; e,.

Inoltre è possibile cercare parole intere tramite /<searchterm> Invio .

Alla ricerca di stringhe


* - passa alla successiva occorrenza della parola sotto il cursore

# - per passare alla ricorrenza precedente della parola sotto il cursore

/ searchterm Enter ti porta alla prossima partita (forward-search). Se usi ? invece di / , la ricerca
torna indietro.

Salta tra le partite via n (successiva) e N (precedente).

Per visualizzare / modificare le ricerche precedenti, digitare / e premere il tasto freccia su .

Utili sono anche queste impostazioni: (nota :se è uguale a :set )

• , evidenzia tutte le corrispondenze di ricerca; usa :noh per disattivare


:se hls
temporaneamente la ricerca / evidenziare il segno ( :set noh o :set nohls disattiva.)
• :se is o :set incs ricerca incrementale, il cursore salta automaticamente alla corrispondenza
successiva. ( :se nois si spegne.)
• :se ic IgnoreCase, disattiva la distinzione tra maiuscole e minuscole. ( :se noic si
riaccende.)
• :se scs SmartCaSe, può essere utilizzato quando è impostato IgnoreCase; rende
intelligente il caso (in)! eg /the cercherà the , The , ThE , ecc mentre /The only cercherà The .

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

h o sinistra vai [conta] caratteri a sinistra

j o giù vai [conta] caratteri sotto

k o su vai [conta] caratteri sopra

io ho
vai [conta] caratteri a destra
ragione

gg vai alla prima riga, o [conta] 'la linea, se data

H vai alla prima riga nella schermata visibile

M vai alla linea di mezzo nella schermata visibile

L vai all'ultima riga nella schermata visibile

https://riptutorial.com/it/home 95
Comando Descrizione

sol vai all'ultima riga, o [conta] 'la linea, se data

Casa o0 vai al primo personaggio della linea

^ vai al primo carattere non vuoto della linea

+ scendere di una riga verso il primo carattere non vuoto

- vai su una riga al primo carattere non vuoto

$ 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

f {char} vai a [contare] 'l'occorrenza di {char} a destra incluso

F {char} vai a [contare] 'l'occorrenza di {char} a sinistra compresa

t {char} andare a [count] 'th occorrenza di {char} per il diritto esclusivo

T {char} vai a [contare] 'l'occorrenza di {char} a sinistra in esclusiva

; ripetere le ultime ore f , t , F o T [contare]

, ripetere le ultime f , t , F o T , nella direzione opposta, [contare] volte

w vai all'inizio della prossima parola

B vai all'inizio della parola precedente

e vai alla fine della prossima parola

ge andare alla fine della parola precedente

% vai alle coppie corrispondenti, ad esempio (), [], {} , /* */ o #if, #ifdef,


#else, #elif, #endif

{} paragrafo precedente / successivo

[{ ]} inizio / fine del blocco

'{char} Vai al segno (segna con m {char} )

<CB> <CF> pagina precedente / successiva

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

Quando ci si sposta su o giù lungo le linee, il cursore mantiene la colonna come ci si


aspetterebbe. Se la nuova riga è troppo corta, il cursore si sposta alla fine della nuova riga. Se la
colonna è oltre la fine della riga, il cursore viene visualizzato alla fine della riga. Il numero di
colonna iniziale è ancora conservato fino a quando non viene intrapresa un'azione per alterarlo
(come la modifica del testo o lo spostamento esplicito di una colonna).

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

Vim supporta l'uso di espressioni regolari durante la ricerca in un file.

Il carattere per indicare che si desidera eseguire una ricerca è / .

La ricerca più semplice che puoi eseguire è la seguente

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

Se la nostra ricerca era:

/\<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 .

Possiamo anche usare le gamme. Dato un file:

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+

troverebbe tutti i numeri interi e decimali nel file.

Navigazione verso l'inizio di una parola specifica

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.

Salto a metà schermo


M$B

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 .

Usare i segni per muoversi

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:

m{a-zA-Z} Set mark {a-zA-Z} at cursor position (does not move


the cursor, this is not a motion command).

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:

Jumping to a mark can be done in two ways:


1. With ` (backtick): The cursor is positioned at the specified location
and the motion is exclusive.
2. With ' (single quote): The cursor is positioned on the first non-blank
character in the line of the specified location and
the motion is linewise.

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

Ad esempio (parafrasato dall'aiuto di Vim):

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

Inoltre, dall'aiuto integrato di Vim:

'' `` To the position before the latest jump, or where the


last "m'" or "m`" command was given. Not set when the
:keepjumps command modifier was used.
Also see restore-position.

'" `" 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 } .

Salta alla linea specifica

Per saltare a una linea specifica con il numero dei due punti. Utilizzare per saltare alla prima riga
di un file

:1

Per saltare alla riga 23

:23

Leggi Movimento online: https://riptutorial.com/it/vim/topic/1117/movimento

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

Vedi trascrizione di vimcast 1

Examples
Impostato

Per impostare le opzioni - usa :set istruzioni. Esempio:

:set ts=4
:set shiftwidth=4
:set expandtab
:set autoindent

Per visualizzare il valore corrente dell'opzione - digitare :set {option}? . Esempio:

: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

softtabstop e sts sono equivalenti:

:set sts=4

Tabs
Per utilizzare le schede come rientri, 4 spazi di larghezza:

:set noexpandtab
:set tabstop=4

tabstop e ts sono equivalenti:

:set ts=4

Indentazione automatica
:set autoindent

Descrizioni delle istruzioni


istruzione Descrizione Predefinito

tabstop larghezza del carattere tab 8

fa sì che gli spazi siano utilizzati al posto del carattere di


expandtab via
tabulazione

softabstop accordare lo spazio bianco 0

shiftwidth determina la quantità di spazio bianco in modalità normale 8

Personaggi invisibili

https://riptutorial.com/it/home 104
Mostra o nascondi personaggi invisibili
Per mostrare i personaggi invisibili:

:set list

Per nascondere i personaggi invisibili:

:set nolist

Per alternare tra mostrare e nascondere i personaggi invisibili:

:set list!

Caratteri simbolo predefinito


Simbolo Personaggio

^I linguetta

$ Nuova linea

Personalizza simboli
Per impostare il carattere di tabulazione su **> ** e il carattere di nuova riga su ¬

set listchars=tab:>\ ,eol:¬

Per impostare gli spazi su _

set listchars=spaces

Per vedere un elenco di opzioni di carattere

:help listchars

Leggi Opzioni Vim online: https://riptutorial.com/it/vim/topic/2407/opzioni-vim

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.

Inizia la ricerca eseguendo :help ,: :help [subject] , o :help :help .

Sintassi
• :h[elp] [keyword]

Parametri

parametri Dettagli

Configurazione, nome della funzione o qualsiasi altra parola chiave con


significato per Vim. Parole chiave con due punti principali : cerca i comandi Vim;
keyword
es . :help :split produce il comando window-splitting e :help split la funzione
Vimscript split() .

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

:help [subject]cerca di trovare la corrispondenza "migliore" per l'argomento che fornisci.


L'argomento "può includere caratteri jolly come * , ? E [az] (qualsiasi lettera).

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

Per cercare i comandi basati su Ctrl , come Ctrl-V , digita:


:help ^V con un carattere di accento letterale o, più specificamente,
:help i_^V per ottenere aiuto su Ctrl-V in modalità inserimento.

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

:normal comando :normal , per eseguire comandi in modalità normale


:help normal
dalla riga di comando

:help cursor Comando Vimscript per muovere il cursore

:help buffers Lavorare con i buffer; lo stesso di :help windows

:help :buffer Il comando :buffer

:help :vs Scissione verticale

Leggi Ottieni: aiuto (usando il manuale integrato di Vim) online:

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:

• manual (le pieghe vengono create e distrutte manualmente dall'utente)


• indent (le pieghe vengono create per linee di rientranza uguale)
• marker (i marcatori di sottostringa sono usati per indicare l'inizio e la fine di una piega)
• syntax (gli elementi di evidenziazione della sintassi definiscono le pieghe)
• expr (un'espressione Vimscript viene valutata per riga per definire il suo livello di piega)
• diff (la modifica del testo non è cambiata in una vista diff è piegata)

L'impostazione predefinita è manual .

Creazione manuale di un pieghevole

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

Apertura, chiusura e commutazione di pieghe

• zo apre una piega sotto il cursore.


• zO apre tutte le pieghe sotto il cursore, in modo ricorsivo.
• zc chiude una piega sotto il cursore.
• zC chiude tutte le pieghe sotto il cursore, in modo ricorsivo.

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.

Mostrando la linea contenente il cursore

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

Questo è il nostro buffer:

void write_buffer(size_t size, char ** buffer)


{
char * buf = *buffer;
size_t iter;
for(iter = 0; iter < size; iter++)
{
putc(*(buf + iter));
}
}

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.

Puoi aprire tutte le piegature appena create usando zO e richiuderle usando zC .

Leggi pieghevole online: https://riptutorial.com/it/vim/topic/3791/pieghevole

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.

Alcuni comandi comuni includono:

:Gedit : modifica un file nell'indice e lo scrive per mettere in scena le modifiche


:Gstatus - equivalente di git status
:Gblame - :Gblame la divisione verticale dell'output da git blame
:Gmove - per git mv
:Gremove - per git rm
:Git - esegui qualsiasi comando

Aggiunge anche elementi alla linea di statusline come statusline esempio il ramo corrente.

Si prega di consultare il loro GitHub per ulteriori dettagli e istruzioni di installazione.

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:

autocmd vimenter * NERDTree

Per chiudere automaticamente NERDTree se è l'unica finestra rimasta, aggiungi questo al tuo
.vimrc:

autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q


| endif

Si consiglia di associare una combinazione di tasti al comando NERDTreeToggle. Aggiungi


questo al tuo .vimrc (questo esempio usa Ctrl + N)

map <C-n> :NERDTreeToggle<CR>

I dettagli completi e le istruzioni di installazione possono essere visualizzati sul loro Github .

Leggi plugin online: https://riptutorial.com/it/vim/topic/9976/plugin

https://riptutorial.com/it/home 111
Capitolo 37: Plugin di tipo file
Examples
Dove mettere i plugin di tipo file personalizzato?

I plug-in foo per foo filetype sono forniti in questo ordine:

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.

Leggi Plugin di tipo file online: https://riptutorial.com/it/vim/topic/7734/plugin-di-tipo-file

https://riptutorial.com/it/home 112
Capitolo 38: Registri Vim
Parametri

Funzionalità registri

registro predefinito ""

registri storici "[1-9]

registro yank "0

"[az], "[AZ] come "[az] ma


registri nominati
aggiunge

richiama il modello di ricerca corrente "/

piccole eliminazioni (diw, cit, ...) "-

registri di espressione per la matematica semplice "=

registro buco nero per eliminare grossi pezzi di testo


"_
cancellato da mem

ultimo comando ":

ultimo testo inserito ".

nome del file "%

appunti "*

testo selezionato "+

testo eliminato "~

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

Questo mostrerà il testo che è stato cancellato nel registro "a .

Per incollare il contenuto in "a , digita semplicemente

"ap

Incolla il nome del file mentre si trova in modalità di inserimento usando il


registro dei nomi dei file

Nella modalità di inserimento, premere <Cr> e quindi % per inserire il nome file.

Questa tecnica è applicabile a tutti i registri.

Ad esempio, se in modalità di inserimento vuoi incollare il modello di ricerca corrente, puoi digitare
<Cr> e quindi / .

Copia / incolla tra Vim e gli appunti di sistema

Usa il registro quotestar per copiare / incollare tra Vim e gli appunti di sistema

"*yy copia la riga corrente negli appunti del sistema

"*p incolla il contenuto degli appunti di sistema in Vim

Aggiungi a un registro

Stringa tutte le linee contenenti TODO in un registro usando l'operazione append

: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).

NOTA: in generale, è buona norma cancellare un registro prima di eseguire l'operazione di


aggiunta.

Per cancellare un registro, nella modalità normale, digitare qaq . Confermare che l' a registro è
vuoto digitando :reg ed osservando che a registro è vuoto.

Leggi Registri Vim online: https://riptutorial.com/it/vim/topic/4278/registri-vim

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.

Per avviare una ricerca dalla modalità normale:

1. premere / ,
2. scrivi il tuo modello,
3. premere <CR> per eseguire la ricerca.

Esempi:

/foobar<CR> search forward for foobar


?foo\/bar<CR> search backward for foo/bar

n e N possono essere usati per saltare alla prossima e precedente occorrenza:

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

Ricerca della parola sotto il cursore

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

eseguire il comando su righe che contengono testo

Il comando :global ha già il suo argomento: il comando globale

Leggi Ricerca nel buffer corrente online: https://riptutorial.com/it/vim/topic/3269/ricerca-nel-buffer-


corrente

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/

Leggi Risorse Vim online: https://riptutorial.com/it/vim/topic/6383/risorse-vim

https://riptutorial.com/it/home 117
Capitolo 41: Salvataggio
Examples
Salvataggio di un buffer in una directory inesistente

:!mkdir -p %:h

per creare le directory mancanti, quindi

:w

Leggi Salvataggio online: https://riptutorial.com/it/vim/topic/6440/salvataggio

https://riptutorial.com/it/home 118
Capitolo 42: scorrimento
Examples
Scorrimento verso il basso

Comando Descrizione

Ctrl + E Scorri una riga verso il basso.

Ctrl + D Scorri mezzo schermo verso il basso (configurabile usando l'opzione di scroll ).

Ctrl + F Scorri a tutto schermo verso il basso.

z + Disegna la prima riga sotto la finestra nella parte superiore della finestra.

Scorrimento verso l'alto

Comando Descrizione

Ctrl + Y Scorri una riga verso l'alto.

Ctrl + U Scorri fino a metà schermo (configurabile usando l'opzione di scroll ).

Ctrl + B Scorri fino a schermo intero.

z ^ Disegna la prima riga sopra la finestra nella parte inferiore della finestra.

Scorrimento relativo alla posizione del cursore

Comando Descrizione

Ridisegna la riga corrente nella parte superiore della finestra e posiziona il


z
cursore sul primo carattere non vuoto sulla linea.

zt Come z ma lascia il cursore nella stessa colonna.

Ridisegna la linea corrente al centro della finestra e posiziona il cursore sul


z.
primo carattere non vuoto sulla linea.

zz Come z ma lascia il cursore nella stessa colonna.

Ridisegna la linea corrente nella parte inferiore della finestra e posiziona il


Z-
cursore sul primo carattere non vuoto sulla linea.

zb Come z- ma lascia il cursore nella stessa colonna.

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

Solarized ha due opzioni: la modalità luce e buio.

Modalità luce :

syntax enable
set background=light
colorscheme solarized

Modalità oscura :

syntax enable
set background=dark
colorscheme solarized

Leggi Solarized Vim online: https://riptutorial.com/it/vim/topic/9500/solarized-vim

https://riptutorial.com/it/home 121
Capitolo 44: Sostituzione
Sintassi
• s/<pattern>/<pattern>/optional-flags
• <pattern> è un Regex

Parametri

Bandiera Senso

& Mantieni le bandiere del sostituto precedente.

c Richiedi conferma per ogni sostituzione.

e Non segnalare errori.

g Sostituisci tutte le occorrenze nella riga.

io Corrispondenza senza distinzione tra maiuscole e minuscole.

io Corrispondenza case-sensitive.

n Segnala il numero di partite, in realtà non sostituire.

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.

:%s/foo/bar/g Sostituisci foo con la barra in tutto il file.

https://riptutorial.com/it/home 122
Riorganizza rapidamente la parola sotto il cursore

1. * sulla parola che vuoi sostituire.

2. :%s//replacement/g , lasciando vuoto il pattern di ricerca .

Sostituzione con approvazione interattiva

: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

Tastiera scorciatoia per sostituire la parola evidenziata

Ad esempio, con la seguente nmap :

nmap <expr> <S-F6> ':%s/' . @/ . '//gc<LEFT><LEFT><LEFT>'

seleziona una parola con * , digita Shift - F6 , digita una sostituzione e premi Invio per rinominare
tutte le occorrenze in modo interattivo.

Leggi Sostituzione online: https://riptutorial.com/it/vim/topic/3384/sostituzione

https://riptutorial.com/it/home 123
Capitolo 45: Trova e sostituisci
Examples
Comando sostitutivo

Questo comando:

:s/foo/bar/g

sostituisce ogni occorrenza di foo con bar sulla riga corrente.

fool around with a foodie

diventa

barl around with a bardie

Se si lascia l'ultimo /g , sostituirà solo la prima occorrenza sulla linea. Per esempio,

:s/foo/bar

Sulla linea precedente diventerebbe

barl around with a foodie

Questo comando:

:5,10s/foo/bar/g

esegue la stessa sostituzione nelle righe da 5 a 10.

Questo comando

:5,$s/foo/bar/g

esegue la stessa sostituzione dalla riga 5 alla fine del file.

Questo comando:

:%s/foo/bar/g

esegue la stessa sostituzione sull'intero buffer.

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

e la sostituzione avviene all'interno della selezione della modalità visiva.

Questo comando:

:%s/foo/bar/gc

è equivalente al comando precedente ma richiede conferma su ogni occorrenza grazie al flag /c


(per "conferma").

Vedi :help :s e :help :s_flags .

Vedi anche questa sezione sugli intervalli della riga di comando .

Sostituisci con o senza le espressioni regolari

Questo comando sostitutivo può utilizzare le espressioni regolari e corrisponderà a qualsiasi


istanza di foo seguita da qualsiasi carattere (uno) dal periodo . in Regular Expressions
corrisponde a qualsiasi carattere, quindi il seguente comando corrisponderà a tutte le istanze di
foo seguite da qualsiasi carattere nella riga corrente.

:s/foo./bar/g

1 fooing fooes fool foobar foosup

diventerà

1 barng bars bar barar barup

Se vuoi abbinare il letterale . periodo puoi evaderlo nel campo di ricerca con una barra rovesciata
\.

:s/foo\./bar/g

1 fooing fooes foo.l foo.bar foosup

diventerà

1 fooing fooes barl barbar foosup

Oppure disabilitare tutti i pattern matching seguendo il comando s con no .

:sno/foo./bar/g

1 fooing fooes foo.l foo.bar foosup

https://riptutorial.com/it/home 125
genererà un errore

E486: Pattern not found

Leggi Trova e sostituisci online: https://riptutorial.com/it/vim/topic/3533/trova-e-sostituisci

https://riptutorial.com/it/home 126
Capitolo 46: Uova di Pasqua
Examples
Aiuto!

Per l'utente in difficoltà, vim fornisce parole di saggezza.

:help!

Quando ti senti giù

Problema: gli utenti Vim non sono sempre felici.

Soluzione: renderli felici.

7.4

:smile

Nota: richiede la versione della patch ≥ 7.4.1005

La risposta

Vim conosce la risposta:

:help 42

Vim aprirà il documento usr_42.txt dal manuale e mostrerà il seguente testo:

Qual è il significato della vita, dell'universo e di tutto? 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 ...

Alla ricerca del Santo Graal

Controllalo:

:help holy-grail

Ceci n'est pas une pipe

Se cerchi la sezione di aiuto di | o bar :: :h bar puoi vedere:

bar

https://riptutorial.com/it/home 127
| To screen column [count] in the current line.
exclusive motion. Ceci n'est pas une pipe.

Questo è un riferimento al dipinto La trahison des images di René Magritte.

Quando un utente si annoia

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

Cavalieri che dicono Ni!

Controllalo:

:Ni!

Monty Python e il Santo Graal

nunmap
:help map-modes

https://riptutorial.com/it/home 128
:nunmap can also be used outside of a monastery.

Leggi Uova di Pasqua online: https://riptutorial.com/it/vim/topic/4656/uova-di-pasqua

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 :

vim file.txt -c "s/foo/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:

vim file.txt -c "s/foo/bar" -c "wq"

Nota importante:

Non è possibile eseguire più comandi ex separati da una barra | . Per esempio

vim file.txt -c "s/foobar | wq"

Non è corretto; tuttavia, può essere fatto se si utilizza ex .

ex -c ":%s/this/that/g | wq" file.txt

Leggi Usando ex dalla riga di comando online: https://riptutorial.com/it/vim/topic/6819/usando-ex-


dalla-riga-di-comando

https://riptutorial.com/it/home 130
Capitolo 48: Uscire da Vim
Parametri

Parametro Dettagli

: Entra in modalità riga di comando

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

Esci senza salvare


: q!

Esci con forza (senza salvare)


: q!

ZQ

https://riptutorial.com/it/home 131
Esci con forza (con salvataggio)
: wq!

Esci con forza da tutte le finestre aperte (senza salvare)


: qa!

se sono aperti più file

:wqall

Uscita da più file con il salvataggio dei contenuti

:qall!

Uscita da più file senza salvare i contenuti

Leggi Uscire da Vim online: https://riptutorial.com/it/vim/topic/5074/uscire-da-vim

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:

:python import sys; print(sys.version)

Questo importa il modulo sys e stampa la sua version , contenente la versione dell'interprete
Python attualmente in uso.

Esegui i comandi della modalità normale Vim attraverso l'istruzione Python

Per poter usare i comandi vim in Python, il modulo vim dovrebbe essere importato.

:python import vim

Dopo aver importato questo modulo, l'utente ha accesso alla funzione di command :

:python vim.command("normal iText to insert")

Questo comando dovrebbe eseguire i in modalità normale, quindi digitare Text to insert e tornare
alla modalità normale.

Esecuzione di codice Python multilinea

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.

Per ottenere ciò, utilizzare:

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:

:python << endpython


surname = "Doe"
forename = "Jane"
print("Hello, %s %s" % (forename, surname))
endpython

stamperebbe:

Hello, Jane Doe

Leggi Utilizzo di Python per lo scripting Vim online: https://riptutorial.com/it/vim/topic/5604/utilizzo-


di-python-per-lo-scripting-vim

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.

Leggi Vantaggi di vim online: https://riptutorial.com/it/vim/topic/9653/vantaggi-di-vim

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:

> cat example.txt


TODO: complete this
NOT this
NOT that
TODO: Complete that

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:

1. Arrivato alla modalità normale premendo ESC

2. Digita viw all'inizio di una parola

3. Questo selezionerà la parola interiore

Seleziona una parola con lo spazio bianco circostante

Supponiamo di voler selezionare una parola con uno spazio bianco circostante, utilizzare l'oggetto
testo aw per circa una parola usando la modalità visiva:

1. Arrivato alla modalità normale premendo ESC

2. vaw all'inizio di una parola

3. Questo selezionerà la parola con lo spazio bianco

Seleziona il testo all'interno di un tag

Possiamo selezionare un testo all'interno di un html o xml tag utilizzando Visual selezione v e il
testo oggetto it .

1. Passare alla modalità normale premendo ESC


2. Digitare vit da qualsiasi punto all'interno della sezione html o xml
3. Questo selezionerà visivamente tutto il testo all'interno del tag

https://riptutorial.com/it/home 138
Tutti gli altri oggetti di testo possono essere utilizzati anche per operare sul testo all'interno del tag

1. cit : cancella il testo all'interno del tag e posizionalo in modalità di insert


2. dit : cancella il testo all'interno del tag e resta in modalità normal
3. cat - elimina attorno al tag e posiziona in modalità di insert
4. dat - cancella il testo attorno al tag e rimane in modalità normal

Leggi Vim Text Objects online: https://riptutorial.com/it/vim/topic/4050/vim-text-objects

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.

echo "Hello World!"

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.

echo "Hello World!"


sleep 5

Uso dei comandi in modalità normale in Vimscript

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.

Pertanto l'esecuzione di un comando in modalità normale come i , a , d ecc. In Vimscript viene


eseguita anticipando il comando con normal :

Andando in fondo al file e selezionando le ultime 5 righe:

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.

Inserendo il tuo nome alla fine della riga:

normal ABoris

dove A pone l'editor in modalità di inserimento alla fine della riga e il resto è il testo da inserire.

Leggi Vimscript online: https://riptutorial.com/it/vim/topic/5136/vimscript

https://riptutorial.com/it/home 140
Titoli di coda
S.
Capitoli Contributors
No

A. Raza, akavel, Ashok, carrdelling, Christian Rondeau,


Community, Cows quack, Daniel, Daniel Käfer, Daniel
Margosian, Deborah V, depperm, ericdwang, ExistMe,
GiftZwergrapper, gmoshkin, HerrSerker, James, Js Lim,
KerDam, LittleByBlue, liuyang1, LotoLo, Marek Skiba, Mattias,
1 Iniziare con vim Miljen Mikic, mnoronha, Nasreddine, Nhan, Nick Weseman,
pktangyue, redBit Device, Romain Vincent, romainl, ropata,
Rory O'Kane, Sardathrion, sascha, SeekAndDestroy, sjas, sudo
bangbang, Sumner Evans, tbodt, Tejus Prasad, TheMole, timss,
Tom Gijselinck, Tom Lord, user2314737, user45891, Vin,
Vishnu Kumar, vvnraman, Wieland, Wojciech Kazior, zarak, Zaz

2 :globale cmlaverdiere, DJMcMayhem, LittleByBlue, tbodt, Vin

3 autocomandi joeytwiddle, tbodt, Tom Hale

4 buffer Chris Jones, eli, joeytwiddle, sudo bangbang

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)

9 Come compilare Vim Ingo Karkat, Josh Petrie, romainl

Aaron Thoma, bn., Christian Rondeau, Cometsong, Cows


Configurazione di quack, Daniel, Johnathan Andersen, KerDam, Luc Hermitte,
10
Vim lwassink, mezzode, nobe4, romainl, SnoringFrog, sudo
bangbang, Sumner Evans, timss, Wojciech Kazior, Yosh

Configurazioni utili
11 Cows quack, maniacmic, Tomh
che possono essere

https://riptutorial.com/it/home 141
inserite in .vimrc

Consigli e Abdelaziz Dabebi, adelarsq, Chris Midgley, depperm, GanitK,


suggerimenti per gath, gmoshkin, Hotschke, KerDam, LittleByBlue, LotoLo, mash,
12
aumentare la naveen.panwar, RamenChef, rjmill, romainl, Simone Bronzini,
produttività souparno majumder, Stryker, sudo bangbang, tbodt, Tom Hale

Conversione di file di
13 testo da DOS a grochmal, LazyBrush
UNIX con vi

Correttore
14 andipla, Johnathan Andersen, lwassink
ortografico

15 Costruire da vim grochmal, Josh Petrie, LittleByBlue, Luc Hermitte

16 dentellatura dallyingllama, Daniel, RamenChef, toto21

Differenze tra
17 still_dreaming_1, tbodt
Neovim e Vim

18 Espressioni regolari 4444, sudo bangbang

Espressioni regolari
19 UNagaswamy
in modalità Ex

baptistemm, LittleByBlue, Nikola Geneshki, romainl,


20 Estensione di Vim
satyanarayan rao, Sumner Evans, void

beardc, Boysenb3rry, Downgoat, Goluxas, grenangen,


21 Finestre divise HerrSerker, Johnathan Andersen, KerDam, madD7, Sachin
Divekar, sudo bangbang, timss, Victor Schröder, zarak

Batsu, Boysenb3rry, Christopher Bottoms, cmlaverdiere, codefly


, DJMcMayhem, Eric Bouchut, GiftZwergrapper, gmoshkin,
Johnathan Andersen, Kent, lazysoundsystem, Mahmood, omul,
22 Inserimento di testo
Promarbler, RamenChef, rodrigo, romainl, satyanarayan rao,
Scroff, SnoringFrog, sudo bangbang, Sundeep, timss, Tom Lord
, UNagaswamy, Xavier Nicollet

Intervalli della riga di


23 RamenChef, romainl
comando

24 L'operatore punto Js Lim, LittleByBlue

25 Lo spazio bianco dallyingllama

Johan, Johnathan Andersen, lazysoundsystem, LittleByBlue,


26 Macro Oliver Wespi, rjmill, romainl, TheMole, Victor Schröder, vielmetti
, Wenzhong

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

Aidan Miles, akavel, Boysenb3rry, Caek, Chris H, Cows quack,


depperm, fedorqui, Georgi Dimitrov, gmoshkin, JacobLeach,
32 Movimento
jamessan, KerDam, Madis Pukkonen, Noam Hacker, rgoliveira,
sjas, SnoringFrog, Sundeep, timss, Tyler, Vin, Wazam, zarak

33 Opzioni Vim dallyingllama, LittleByBlue, mezzode, Wojciech Kazior, Yosh

Ottieni: aiuto
34 (usando il manuale Aidan Miles, Luc Hermitte
integrato di Vim)

35 pieghevole Josh Petrie, LittleByBlue, sudo bangbang

36 plugin Nick Weseman

37 Plugin di tipo file Luc Hermitte, romainl

38 Registri Vim maniacmic, romainl, UNagaswamy

Ricerca nel buffer


39 Abdelaziz Dabebi, DJMcMayhem, LittleByBlue, romainl
corrente

40 Risorse Vim Nikola Geneshki

41 Salvataggio abidibo

42 scorrimento Delapouite, evuez

43 Solarized Vim Luc Hermitte, Nick Weseman, satyanarayan rao

44 Sostituzione cmlaverdiere, LittleByBlue, Nikola Geneshki, Timur

DJMcMayhem, Kara, naveen.panwar, ncmathsadist, romainl,


45 Trova e sostituisci
sudo bangbang, zzz

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

Usando ex dalla riga


47 DJMcMayhem, Matt Clark
di comando

Arulpandiyan Vadivel, asclepix, AWippler, Nick Weseman,


48 Uscire da Vim
Yosef Nasr

Utilizzo di Python per


49 Nikola Geneshki
lo scripting Vim

50 Vantaggi di vim gmoshkin, LittleByBlue

vglobal: esegue
comandi su linee che
51 UNagaswamy
non corrispondono a
livello globale

52 Vim Text Objects UNagaswamy

53 Vimscript merlin2011, Nikola Geneshki

https://riptutorial.com/it/home 144

Potrebbero piacerti anche