Vim è un editor di testo open source e multipiattaforma molto apprezzato da chi ama la linea di comando. Esso infatti non è dotato di interfaccia grafica e il suo utilizzo si basa su una serie di comandi. (Vi IMproved) è nato sulla base di Vi, uno storico editor di testo dei sistemi UNIX-like. La sua evoluzione ha permesso di integrare funzionalità per la modifica del codice sorgente o dei file di configurazione, per la stesura di email e molto altro. Vim si trova preinstallato su tutte le distribuzioni Linux, quindi impariamo ad usarlo in modo abbastanza completo e scopriamo tutti i segreti per gestirlo al meglio. La caratteristica fondamentale di Vim è la sua natura modale, ovvero i normali caratteri della tastiera hanno significato sia di inserimento testo che di comandi usati per gestire l’ambiente di scrittura. Questo significa che lo possiamo utilizzare anche senza il mouse. k / j ……………………………………… muovi cursore in [alto / basso] w ……………………………………… vai all’inizio della prossima parola ( / ) ……………………………………… vai all’inizio o alla fine della riga 0 / gm / $ ……………………………………… vai all’inizio, a metà o alla fine della riga del cursore ^ ……………………………………… vai al primo carattere non spazio della riga G / 1G ……………………………………… vai all’inizio o alla fine del file nG o :n INVIO ……………………………………… vai alla riga n H ……………………………………… vai alla prima riga dello schermo L ……………………………………… vai all’ultima riga dello schermo [( / ]) ……………………………………… vai alla () non chiusa [precedente o successiva] [* ............................................. vai all'inizio di /* */ precedente CTRL e ……………………………………… muovi lo schermo una linea in alto z INVIO ……………………………………… riga corrente come prima dello schermo :n,m ……………………………………… seleziona da riga n a m i / a ……………………………………… inserisci prima o dopo del cursore :r /etc/passwd INVIO …………………… inserisci il contenuto di passwd nel documento :set ai INVIO ……………………………………… attiva l’indentazione << ................................. sposta a sinistra di un livello di indentazione rc ……………………………… sostituzione del carattere sotto al cursore con c s ……………………………………… cancella un carattere ed entra in modalità inserimento ~ ………………………………inverti maiuscolo / minuscolo e avanza il cursore x / X ……………………………………… cancella il carattere [sotto al / sopra del] cursore. J ……………………………………… unisce la riga successiva a quella corrente :rd INVIO ……………………………………… cancella le righe nell’intervallo r specificato “x …………………………… usa il registro x (a-z) per le operazioni di copia o taglia yy o Y ……………………………………… copia la riga corrente nel registro attuale fc / Fc ........................... [prosegui / torna indietro] fino a raggiungere c :set ic INVIO ……………………………………… non considera maiuscole o minuscole u ……………………………………… annulla l’effetto dell’ultimo comando :w file INVIO …………………………… salva il documento con il nome fileSommario
1. Movimenti di base del cursore
h / l ……………………………………… muovi cursore a [sinistra / destra]
b ……………………………………… vai all’inizio della parola precedente
e ……………………………………… vai alla fine della parola successiva
W, B, E ……………………………………… come w, b, e ma delimitata da spazi
{ / } ……………………………………… vai all’inizio o alla fine del paragrafo
+ ……………………… vai al primo carattere non spazio della riga successiva
- ……………………… vai al primo carattere non spazio della riga precedente
n| ……………………………………… vai alla n-esima colonna della riga corrente
% ……………………………… cerca la prossima parentesi, commento, define2. Movimenti avanzati
n% ……………………………………… posiziona alla percentuale specificata del file
nH ……………………………………… vai alla riga n dall’inizio dello schermo
M ……………………………………… vai alla riga mediana dello schermo
nL ……………………………………… vai n righe prima della fine dello schermo
[{ / ]} ……………………………………… vai alla {} non chiusa [ " o "]
]* ……………………………………… vai alla fine di /* */ successivo
CTRL y ……………………………………… muovi lo schermo una linea in basso
CTRL b ……………………………………… muovi lo schermo di una pagina in alto
CTRL f ……………………………………… muovi lo schermo di una pagina in basso
nz INVIO ……………………………………… riga n del file come prima dello schermo
z. ……………………………………… riga corrente posizionata a metà schermo
z- ……………………………………… riga corrente ultima dello schermo
nz. / nz- ……………………………………… come z. e z- per una riga n-esima generica3. Intervalli di selezione
:. ……………………………………… seleziona la riga corrente
:$ ……………………………………… seleziona la fine del file
:’c ……………………………………… utilizza il marcatore c
:% ……………………………………… seleziona tutte le righe4. Inserimento
I / A ……………………………………… inserisci all’inizio o alla fine della riga
gI ……………………………………… inserisci nella prima colonna
o / O ……………………… inserisci una nuova riga sotto o sopra quella corrente
notext ESC ……………………………………… inserisci n volte il testo text
:r! comando INVIO …………………… inserisci l’output del comando nel documento
:set sw=n INVIO …………………… imposta a n i caratteri di indentazione
>> ……………………………………… sposta a destra di un livello di indentazione
n<< / n>> ……………………………………… sposta di n livelli di indentazione5. Sostituzione
grc ……………………………………… come rc ma va in modalità inserimento
Rtext ……………………………………… sostituisce i caratteri che seguono con text
gRtext ……………………………………… come grc ma va in modalità inserimento
S o cc …………………………… cancella la riga corrente ed entra in inserimento
cw …………………………… cancella fino a fine parola ed entra in inserimento
c$ o C …………………………… cancella fino a fine riga ed entra in inserimento6. Cancellazione
nx / nX ……………………………………… come x o X ma per n caratteri
dw ……………………………………… cancella fino alla fine della parola
ndw ……………………………………… cancella n parole seguenti
d$ o D ……………………………………… cancella fino alla fine della riga
dd ……………………………………… cancella tutta la riga
ndd ……………………………………… cancella n righe seguenti
gJ ……………………………………… come J senza modificare gli spazi
nJ / ngJ ……………………………………… cancella n righe seguenti
:rd x INVIO ……………………………………… muovi le righe nell’intervallo r nel registro x7. Copia e incolla
:reg INVIO ……………………………………… mostra il contenuto di tutti i registri
:reg x INVIO ……………………………………… mostra il contenuto del registro x
p / P …………………………… incolla il contenuto del registro [prima / dopo] cursore
]p / [p .............................. come p / P ma con un livello di indentazione
gp / gP .............................. come p / P con il cursore dopo il testo incollato8. Trova e sostituisci
/stringa ……………………………………… cerca in avanti la stringa
?stringa ……………………………………… cerca indietro la stringa
n / N ……………………………………… ripeti la ricerca nella [stessa / inversa] direzione
# ……………………………………… cerca una precedente occorrenza
* ……………………………………… cerca una successiva occorrenza
g# / g* ……………………………………… anche occorrenze parziali
:set noic INVIO ……………………………………… considera maiuscole e minuscole9. Ripristina una operazione
U ………………………… riporta la linea corrente alla situazione precedente
. ……………………………………… ripeti ultima modifica10. Gestione file e uscita
:w >> file INVIO …………………………… effettua l’append del documento sul file
:n,mw file INVIO ………………………… scrivi su file le righe da n a m
:wq INVIO …………………………… esci e salva il documento