434
lImmergiamoci in un’esplorazione approfondita di Vim, il famoso editor di testo ampiamente utilizzato nei mondi Unix e Linux. Vim è noto per la sua efficienza, estensibilità e potente linguaggio di comando. È una versione migliorata dell’editor Vi originale e offre un’interfaccia modale che separa la manipolazione del contenuto dall’inserimento. Questa funzionalità consente agli utenti di eseguire comandi di modifica complessi con sequenze di tasti minime.
Questa guida approfondisce la gamma di comandi di Vim, che vanno dalla navigazione di base alle operazioni avanzate sui file, e fornisce approfondimenti sulle capacità di personalizzazione del .vimrc
file, che consente agli utenti di personalizzare l’ambiente in base alle proprie esigenze di codifica specifiche.
Iniziare con Vim
Prima di addentrarci nel nocciolo della questione, comprendiamo le nozioni di base. Vim opera in diverse modalità, ma le due che utilizzerete maggiormente sono la modalità Normale e la modalità Insert. La modalità normale è quella in cui puoi eseguire comandi per navigare e manipolare il testo, mentre la modalità Inserisci serve per digitare il testo come faresti in un normale editor di testo.
Apertura e chiusura Vim
- Per aprire Vim: Tipo
vim
nel tuo terminale e premi Invio.
- Per aprire un file con Vim: Tipo
vim filename
(sostituire filename
con il nome effettivo del file).
Una volta entrato, ecco come uscire:
- Per uscire da Vim: Premere
Esc
per assicurarti di essere in modalità Normale, quindi digita :q
e premere Invio. Se hai apportato modifiche, Vim ti avviserà. Per uscire senza salvare utilizzare :q!
.
Navigazione di base
- Muoviti su, giù, sinistra, destra: Usa il
k
, j
, h
, l
chiavi rispettivamente.
- Vai all’inizio della riga: Premere
0
.
- Vai alla fine della riga: Premere
$
.
Nozioni di base sulla modifica
- Accedi alla modalità di inserimento: Premere
i
.
- Uscire dalla modalità di inserimento: Premere
Esc
.
- Elimina un carattere: In modalità Normale, spostare il cursore sul carattere e premere
x
.
- Disfare: Premere
u
in modalità normale.
- Rifare: Premere
Ctrl + r
.
Modifica avanzata
Ora aumentiamo le nostre abilità in Vim con alcuni comandi più avanzati.
Tagliare, copiare e incollare
- Taglia (o cancella) una linea: In modalità Normale, premere
dd
.
- Copia (o strappa) una riga: Premere
yy
.
- Incolla sotto o sopra: Premere
p
per incollare sotto il cursore, oppure P
incollare sopra.
Cercare e sostituire
- Trova testo: Tipo
:/pattern
e premere Invio. Sostituire pattern
con il testo che stai cercando.
- Sostituisci il testo: Tipo
:%s/old/new/g
per sostituire tutte le occorrenze di old
con new
.
Lavorare con più file
- Apri un nuovo file in Vim: Tipo
:e filename
.
- Passare da un file all’altro: Utilizzo
:bn
(file successivo) e :bp
(file precedente).
La mia configurazione personale di Vim
Mi piace mantenere il mio Vim minimale ma potente. Ecco alcuni dei miei plugin e impostazioni preferiti:
- NerdTree per la navigazione nel file system
- Sintastico per il controllo della sintassi
set number
nel mio .vimrc
per visualizzare i numeri di riga
Padroneggiare i movimenti e le scorciatoie di Vim
I movimenti e le scorciatoie sono i punti in cui le tue abilità Vim salgono davvero di livello. Eccone alcuni:
ci(
cambiare tra parentesi: una salvezza!
ggVG
per selezionare l’intero file
:%norm
per eseguire un comando normale su tutte le linee
Finestre divise
- Divisione orizzontale:
:sp filename
- Divisione verticale:
:vsp filename
Trovo che le finestre divise siano incredibilmente utili per confrontare file o fare riferimento a un file durante la modifica di un altro.
Macro
La registrazione di una macro consente di riprodurre una serie di comandi. Premere q
seguito da una lettera per avviare la registrazione, esegui la serie di comandi, quindi premi q
di nuovo per fermarsi. Esegui la macro con @
seguito dalla lettera che hai scelto.
Vim comanda un cheat sheet di riferimento rapido
Questa tabella copre una gamma di comandi da base a intermedi, fornendo una solida base per chiunque desideri migliorare le proprie competenze Vim.
Comando |
Descrizione |
:q |
Esci da Vim. Se ci sono modifiche non salvate, Vim ti avviserà. |
:q! |
Esci senza salvare le modifiche. Utile quando è necessario uscire rapidamente e annullare le modifiche. |
:w |
Salva (scrivi) il file, ma non esci. |
:wq O :x |
Salva le modifiche ed esci. |
i |
Accedi alla modalità di inserimento per iniziare a modificare il file. |
Esc |
Uscire dalla modalità di inserimento e tornare alla modalità normale. |
dd |
Elimina (taglia) la riga corrente. |
yy |
Strappa (copia) la riga corrente. |
p |
Incolla ciò che è stato eliminato o tirato per ultimo dopo il cursore. |
u |
Annulla l’ultima azione. |
Ctrl+r |
Ripeti l’ultima azione annullata. |
gg |
Spostare il cursore sulla prima riga del file. |
G |
Spostare il cursore sull’ultima riga del file. |
:%s/old/new/g |
Sostituisci tutte le occorrenze di “vecchio” con “nuovo” nel file. |
/search_term |
Cerca “search_term” nel file. Premere n per passare all’occorrenza successiva. |
:noh |
Rimuovi l’evidenziazione dall’ultima ricerca. |
v |
Accedere alla modalità visiva per la selezione del testo. |
> |
Rientra il blocco selezionato (in modalità visiva). |
< |
Ripristina il blocco selezionato (in modalità visiva). |
:e filename |
Apri un altro file chiamato “filename” in Vim. |
Personalizzazione di Vim
Comprendere .vimrc
- Posizione: IL
.vimrc
il file si trova in genere nella directory home (~/.vimrc
su sistemi Unix/Linux). Se non esiste, puoi crearlo.
- Scopo: Viene letto ogni volta che Vim si avvia e applica le configurazioni impostate al suo interno.
Impostazioni di base
- Numerazione delle righe:
set number
Questo comando attiva la numerazione delle righe, una funzionalità utile per la navigazione nel codice.
- Evidenziazione della sintassi:
syntax on
Abilita l’evidenziazione della sintassi, rendendo il codice più facile da leggere e comprendere.
- Impostazioni del rientro:
set tabstop=4
set shiftwidth=4
set expandtab
Queste impostazioni regolano le dimensioni delle tabulazioni e garantiscono che vengano utilizzati gli spazi al posto delle tabulazioni.
- Avvolgimento della linea:
set wrap
set linebreak
Questi consentono il ritorno a capo della riga senza interrompere le parole.
Mappature chiave
Le mappature dei tasti personalizzate possono rendere il tuo flusso di lavoro molto più efficiente. Ecco un esempio:
nnoremap <C-s> :w<CR>
Questo mappa Ctrl+S per salvare il file in modalità normale (nnoremap
significa mappatura non ricorsiva in modalità normale), che può essere più intuitiva per chi è abituato agli editor di testo della GUI.
Gestione dei plugin
Se utilizzi un gestore plugin come Vundle, aggiungerai delle righe a .vimrc
per gestire i tuoi plugin. Ad esempio:
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'tpope/vim-fugitive'
call vundle#end()
Questo esempio inizializza Vundle e quindi elenca i plugin che desideri installare, inclusi quelli molto popolari vim-fugitive
.
Configurazioni avanzate
Man mano che ti senti più a tuo agio con Vim, potresti approfondire configurazioni più complesse:
- Comandi automatici:
autocmd BufWritePre * :%s/\s\+$//e
Questo comando automatico rimuove automaticamente gli spazi bianchi finali prima di salvare un file.
- Mappature delle funzioni: La creazione di funzioni personalizzate per attività specifiche e la mappatura dei tasti a queste funzioni possono aumentare significativamente la produttività.
Esempio 1: modifica in blocco di un file di configurazione
Scenario: Stai modificando un file di configurazione e devi modificare un indirizzo IP che appare più volte nel file.
Ingresso nel terminale:
- Apri il file con Vim:
vim config.txt
- Inserisci il comando per sostituire tutte le istanze del vecchio IP con quello nuovo:
:%s/192.168.1.1/10.0.0.1/g
Uscita in Vim:
- Ogni istanza di
192.168.1.1
nel file viene sostituito con 10.0.0.1
.
- Vim visualizza un messaggio simile
42 substitutions on 30 lines
.
Esempio 2: confronto di due file di codice affiancati
Scenario: Hai due versioni di uno script Python e desideri confrontarle fianco a fianco.
Ingresso nel terminale:
- Apri il primo file con Vim:
vim script_v1.py
- Dividi la finestra e apri il secondo file:
:vsp script_v2.py
Uscita in Vim:
- La finestra di Vim è divisa verticalmente.
script_v1.py
è a sinistra, e script_v2.py
è sulla destra.
- Puoi navigare in ciascuna finestra in modo indipendente.
Esempio 3: codice di refactoring
Scenario: Stai eseguendo il refactoring di una parte di codice e devi rinominare una variabile su più righe.
Ingresso nel terminale:
- Apri il file del codice:
vim main.py
- Vuoi cambiare il nome della variabile
tempVar
A temporaryVariable
. Innanzitutto, ti sposti sulla riga dove tempVar
è introdotto.
- Entra nella modalità comando e digita:
:.,+5s/tempVar/temporaryVariable/g
Uscita in Vim:
- Questo comando cambia
tempVar
A temporaryVariable
dalla riga corrente (.
) alle cinque righe successive (+5
).
- La modifica viene applicata solo all’interno di queste righe specificate, lasciando invariate le altre istanze nel documento.
Questi esempi mostrano solo una frazione delle capacità di Vim, ma rappresentano attività comuni che molti sviluppatori incontrano quotidianamente.
Conclusione
Vim si distingue non solo come editor di testo, ma come testimonianza della potenza dell’efficienza nella modifica del codice. Il suo approccio modale, l’ampio set di comandi e le opzioni di personalizzazione senza precedenti attraverso .vimrc
file offrono un ambiente ricco e adattabile per sviluppatori e utenti esperti. Come abbiamo esplorato, dalla navigazione di base e manipolazione dei file alle tecniche di modifica avanzate e alla configurazione personale, le funzionalità di Vim soddisfano un ampio spettro di esigenze, rendendolo un punto fermo nei toolkit di molti programmatori. Abbracciare Vim richiede un impegno per l’apprendimento e l’adattamento, ma il profitto in termini di produttività e controllo sull’ambiente di editing è sostanziale.