Vim Modeline · 4 min read · Nov 14, 2025
Come apportare modifiche specifiche ai file in Vim utilizzando Modeline
Mentre i plugin sono senza dubbio uno dei maggiori punti di forza di Vim, diverse altre funzionalità lo rendono uno dei più potenti e ricchi di funzionalità editor di testo/IDE disponibili per gli utenti Linux oggi. Una di queste funzionalità è la possibilità di apportare modifiche specifiche ai file. Questa possibilità può essere accessibile utilizzando la funzione Modeline dell’editor.
In questo articolo, discuteremo di come puoi utilizzare la funzione Modeline di Vim con esempi facili da comprendere.
Ma prima di iniziare, vale la pena menzionare che tutti gli esempi, comandi e istruzioni menzionati in questo tutorial sono stati testati su Ubuntu 16.04 - Ubuntu 22.04.
VIM Modeline
Utilizzo
Come abbiamo già accennato, la funzione Modeline di Vim ti consente di apportare modifiche specifiche ai file. Ad esempio, supponiamo che tu voglia sostituire tutte le tabulazioni utilizzate in un particolare file del tuo progetto con spazi, e assicurarti che tutti gli altri file non siano influenzati da questa modifica. Questo è un caso d’uso ideale in cui Modeline ti aiuta a fare ciò che desideri.
Quindi, ciò che puoi fare è inserire la seguente riga all’inizio o alla fine del file in questione:
# vim: set expandtab:Ci sono alte probabilità che se provi a fare l’esercizio sopra menzionato per testare il caso d’uso sulla tua macchina Linux, le cose non funzioneranno come previsto. Se è così, non preoccuparti, poiché la funzione Modeline deve essere attivata prima in alcuni casi (è disabilitata per impostazione predefinita su sistemi come Debian, Ubuntu, Gentoo e OSX per motivi di sicurezza).
Per abilitare la funzione, apri il file .vimrc (situato nella tua directory home), e poi aggiungi la seguente riga:
set modelineOra, ogni volta che inserisci una tabulazione e salvi il file (dove è stato inserito il comando expandtab della modeline), la tabulazione verrà automaticamente convertita in spazi bianchi.
Consideriamo un altro caso d’uso. Supponiamo che lo spazio di tabulazione predefinito in Vim sia impostato su 4, ma per un particolare file, desideri aumentarlo a 8. Per questo, devi aggiungere la seguente riga all’inizio o alla fine del file:
// vim: noai:ts=8:
Ora prova a inserire una tabulazione e vedrai che il numero di spazi che copre sarà 8.
Potresti aver notato che ho detto che questi comandi modeline devono essere inseriti da qualche parte vicino alla parte superiore o inferiore del file. Se ti stai chiedendo perché sia così, la ragione è che la funzione è progettata in questo modo. Le seguenti righe (prese dalla documentazione ufficiale di Vim) dovrebbero chiarire ulteriormente:
“ La modeline non può trovarsi ovunque nel file: deve essere nelle prime o ultime righe. La posizione esatta in cui vim controlla la modeline è controllata dalla variabile modelines; vedi :help modelines. Per impostazione predefinita, è impostata su 5 righe*.”
Ecco cosa dice il comando :help modelines (a cui si fa riferimento nelle righe sopra):
Se 'modeline' è attivo, 'modelines' fornisce il numero di righe che vengono controllate per i comandi set. Se 'modeline' è disattivato o 'modelines' è zero, nessuna riga viene controllata.Prova a mettere il comando modeline oltre le 5 righe predefinite (sia dal fondo che dall’alto) e noterai che gli spazi delle tabulazioni torneranno al valore predefinito di Vim - nel mio caso sono 4 spazi.
Tuttavia, puoi cambiare questo comportamento se lo desideri, utilizzando il seguente comando nel tuo file .vimrc.
set modelines=[new-value]Ad esempio, ho aumentato il valore da 5 a 10.
set modelines=10Questo significa che ora posso mettere il comando modeline ovunque tra le prime o ultime 10 righe del file.
Proseguendo, in qualsiasi momento, mentre modifichi un file, puoi inserire il seguente (con l’editor Vim in modalità comando) per vedere le impostazioni attuali relative alla modeline e dove sono state impostate l’ultima volta.
:verbose set modeline? modelines?Ad esempio, nel mio caso, il comando sopra ha prodotto il seguente output:
modeline
Ultima impostazione da ~/.vimrc
modelines=10
Ultima impostazione da ~/.vimrcEcco alcuni dei punti importanti che devi sapere sulla funzione Modeline di Vim:
- Questa funzione è abilitata per impostazione predefinita per Vim in modalità nocompatible (non compatibile con Vi), ma alcune distribuzioni note di Vim disabilitano questa opzione nel vimrc di sistema per motivi di sicurezza.
- La funzione è disabilitata per impostazione predefinita quando si modifica come root (se hai aperto il file utilizzando ‘sudo’ allora non ci sono problemi - la funzione funziona).
- Con ‘
set', la modeline termina al primo due punti che non segue una barra rovesciata. E senza ‘set', nessun testo può seguire le opzioni. Ad esempio, / vim: noai:ts=4:sw=4 / è una modeline non valida.
Preoccupazioni di Sicurezza
Purtroppo, la funzione Modeline di Vim può essere utilizzata per compromettere la sicurezza. Infatti, sono stati segnalati in passato diversi problemi di sicurezza relativi alla Modeline, tra cui l’iniezione di comandi shell, l’esecuzione di comandi arbitrari, accesso non autorizzato e altro ancora. D’accordo, la maggior parte di questi sono vecchi e sarebbero stati risolti ormai, ma dà un’idea che la funzione Modeline potrebbe essere abusata dagli hacker.
Conclusione
Modeline può essere una funzione avanzata dell’editor Vim, ma non è molto difficile da comprendere. Non c’è dubbio che ci sia una certa curva di apprendimento coinvolta, ma non è molto da chiedere dato quanto sia utile la funzione. Naturalmente, ci sono preoccupazioni di sicurezza, il che significa che dovresti valutare le tue opzioni prima di abilitare e utilizzare la funzione.
Hai mai utilizzato la funzione Modeline? Com’è stata la tua esperienza? Condividi con noi (e con l’intera comunità di HowtoForge) nei commenti qui sotto.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.