Vim tutorial · 3 min read · Nov 16, 2025

Come accedere alla shell o eseguire comandi esterni da Vim

Vim, come potresti già sapere, è un editor potente e ricco di funzionalità. Qui su HowtoForge, abbiamo scritto diversi tutorial su Vim, coprendo il suo utilizzo di base, i plugin e alcune altre funzionalità utili. Ma data la miriade di funzionalità che Vim offre, troviamo sempre qualcosa di utile da condividere con i nostri lettori.

In questo tutorial, ci concentreremo su come puoi eseguire comandi esterni e accedere alla shell della riga di comando dall’interno della finestra dell’editor.

Eseguire comandi esterni in Vim

A volte potresti voler eseguire comandi esterni dalla finestra dell’editor Vim. Ad esempio, considera una situazione in cui hai aperto un file in Vim, hai apportato alcune modifiche e poi, mentre cerchi di salvare quelle modifiche, Vim restituisce un errore che dice che non hai sufficienti permessi.

Ora, uscire dalla sessione corrente di vim e riaprire il file con privilegi sufficienti significherebbe perdere tutte le modifiche che hai fatto, quindi, sarai d’accordo, non sarebbe un’opzione nella maggior parte dei casi. Sono situazioni come queste in cui la possibilità di eseguire comandi esterni dall’interno dell’editor si rivela utile.

Torneremo all’uso sopra menzionato più tardi (), ma per ora, comprendiamo come puoi eseguire comandi di base da vim.

Supponiamo che mentre stai modificando un file, tu voglia sapere il numero di righe, parole e caratteri che il file contiene. Per fare ciò, in modalità comando di Vim, basta inserire due punti (:) seguiti da un punto esclamativo (!) e infine il comando (‘wc’ in questo caso) seguito dal nome del file (usa % per il file corrente).

:! wc %

Ecco un esempio:

File con il comando sopra menzionato pronto per essere eseguito:

Comando pronto per essere eseguito in VIM

ecco l’output nel terminale:

Dopo aver visto l’output, premi il tasto Invio e tornerai alla tua sessione Vim.

Questa funzionalità può rivelarsi davvero utile in situazioni in cui, ad esempio, stai scrivendo un codice o uno script e vuoi sapere rapidamente se il codice/script contiene errori di sintassi o di compilazione.

Proseguendo, nel caso in cui sia necessario aggiungere l’output al file, usa il comando ‘:read !’. Ecco un esempio:

:read ! wc %

Il comando ‘read’ inserisce l’output del comando esterno su una nuova riga sotto la riga corrente nel file che stai modificando. Se vuoi, puoi anche specificare un numero di riga particolare: l’output verrà aggiunto dopo quella riga specifica.

Ad esempio, il seguente comando aggiungerà l’output di ‘wc’ dopo la seconda riga del file.

:2read ! wc %

Nota: Usa ‘$’ per inserire dopo l’ultima riga e ‘0’ per inserire prima della prima riga.

Ora, tornando all’uso che abbiamo discusso all’inizio (), ecco il comando che ti aiuterà a salvare il file senza doverlo chiudere prima (il che significa nessuna perdita di modifiche non salvate) e poi aprirlo con, ad esempio, sudo.

:w ! sudo tee %

Accedere alla Shell in Vim

Oltre a eseguire comandi singoli, puoi anche trovarti in una shell appena avviata dall’interno di Vim. Per questo, tutto ciò che devi fare è eseguire il seguente comando dall’editor:

:shell

oppure

:sh

e digita ‘exit’ quando hai finito con il lavoro nella shell: questo ti riporterà nella sessione Vim da dove eri partito inizialmente.

La falla da tenere a mente

Sebbene la possibilità di accedere a una shell abbia sicuramente i suoi usi nel mondo reale, può anche essere utilizzata come tecnica di escalation dei privilegi. Come abbiamo spiegato in uno dei nostri tutorial precedenti (su sudoedit), anche se fornisci a un utente l’accesso sudo per modificare solo un file tramite Vim, potrebbero avviare una nuova shell dall’interno dell’editor utilizzando questa tecnica e quindi essere in grado di fare qualsiasi cosa come ‘root’ o superutente.

La possibilità di eseguire comandi esterni dall’interno di Vim è una funzionalità importante che può rivelarsi utile in molte situazioni (alcune delle quali abbiamo menzionato in questo tutorial). La curva di apprendimento per questa funzionalità non è ripida, quindi sia i principianti che gli utenti esperti possono trarne vantaggio.

Hai utilizzato questa funzionalità per un po’ di tempo? Hai qualcosa da condividere? Ti preghiamo di lasciare i tuoi pensieri nei commenti qui sotto. Forse sei interessato anche al comando tee di Linux.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.