Vim · 5 min read · Jan 21, 2026

Modalità compatibili e non compatibili in Vim

Fino ad ora, nei nostri tutorial incentrati su Vim, abbiamo discusso della funzionalità Modeline dell’editor e di come il set di funzionalità di Vim possa essere ampliato utilizzando i plugin. Tuttavia, come sappiamo tutti, Vim offre una miriade di funzionalità integrate; quindi, per approfondire la discussione, in questo tutorial discuteremo delle modalità disponibili in cui l’editor può essere avviato.

Ma prima di fare ciò, si prega di notare che tutti gli esempi, comandi e istruzioni menzionati in questo tutorial sono stati testati su Ubuntu 14.04, e la versione di Vim che abbiamo utilizzato è la 7.4.

Per comprendere correttamente le modalità Vim sopra menzionate, dovrai prima comprendere un aspetto importante del processo di inizializzazione dell’editor.

vimrc di sistema e locale

L’aspetto in questione è: quando Vim viene avviato, un file ‘vimrc’ a livello di sistema viene cercato dall’editor per eseguire le inizializzazioni predefinite a livello di sistema.

Questo file si trova di solito nel percorso $VIM/vimrc sul tuo sistema, ma se non è così, puoi trovare la posizione esatta eseguendo il comando :version all’interno di Vim. Ad esempio, nel mio caso, ecco il pertinente estratto dell’output prodotto dal comando:

...
...
...
file vimrc di sistema: "$VIM/vimrc"
file vimrc utente: "$HOME/.vimrc"
2° file vimrc utente: "~/.vim/vimrc"
file exrc utente: "$HOME/.exrc"
valore di fallback per $VIM: "/usr/share/vim"
...
...
...

Quindi il file ‘vimrc’ di sistema si trova effettivamente in $VIM/vimrc , ma ho verificato che la variabile d’ambiente $VIM non è impostata sulla mia macchina. Quindi in quel caso - come puoi vedere nell’output sopra - c’è un valore di fallback per $VIM, che nel mio caso è */usr/share/vim*. Quando ho provato a cercare ‘vimrc’ in questo percorso, ho osservato che il file è presente. Quindi questo è il mio vimrc di sistema, che - come ho menzionato in precedenza - viene letto quando Vim viene avviato.

Dopo che questo vimrc di sistema è stato analizzato, l’editor cerca un file ‘vimrc’ specifico per l’utente (o locale). L’ordine di ricerca per il vimrc locale è: variabile d’ambiente VIMINIT, $HOME/.vimrc, variabile d’ambiente EXINIT e un file chiamato ‘exrc’. Di solito, è il $HOME/.vimrc o ~/.vimrc che esiste ed è trattato come vimrc locale.

Di quale compatibilità stiamo parlando

Poiché stiamo discutendo delle modalità compatibili e non compatibili di Vim, vale la pena sapere che tipo di compatibilità queste modalità abilitano e disabilitano. Per questo, si dovrebbe prima essere consapevoli che Vim è una forma abbreviata di V i IM proved, e come suggerisce il nome completo, l’editor è una versione migliorata dell’editor Vi.

Per migliorato, si intende che il set di funzionalità che Vim offre è più ampio di quello di Vi. Per una migliore comprensione della differenza tra i due editor, vai qui.

Quindi, mentre discutiamo delle modalità compatibili e non compatibili di Vim, la compatibilità di cui stiamo parlando è la compatibilità di Vim con Vi. Quando viene eseguito in modalità compatibile, la maggior parte dei miglioramenti e delle migliorie di Vim vengono disabilitati. Tuttavia, tieni presente che in questa modalità, Vim non emula semplicemente Vi - la modalità imposta fondamentalmente alcune opzioni predefinite in base al modo in cui funziona l’editor Vi.

La modalità non compatibile - non c’è bisogno di dirlo - fa sì che Vim funzioni senza essere compatibile con Vi, rendendo disponibili all’utente tutti i suoi miglioramenti/caratteristiche.

Come abilitare/disabilitare queste modalità?

Prova a eseguire il comando :help compatible in Vim, e dovresti vedere la seguente sintassi:

'compatible' 'cp' boolean (predefinito attivo, disattivato quando viene trovato un |vimrc| o |gvimrc|
 file)

Quindi la descrizione dice che la modalità compatibile è ATTIVA per impostazione predefinita, ma viene disattivata quando viene trovato un file vimrc. Ma di quale vimrc stiamo parlando? La risposta è il vimrc locale. Approfondisci i dettagli che il comando :help compatible offre e troverai la seguente riga, che dovrebbe chiarire le cose:

Effettivamente, questo significa che quando esiste un file |vimrc| o |gvimrc|, Vim utilizzerà i valori predefiniti di Vim, altrimenti utilizzerà i valori predefiniti di Vi. (*Nota: Questo non accade per il vimrc o gvimrc a livello di sistema, né per un file fornito con l'argomento |-u|*)

Quindi, ciò che accade effettivamente è che, ogni volta che Vim viene avviato, prima analizza il file vimrc di sistema - in questo momento la modalità compatibile è ATTIVA per impostazione predefinita. Ora, ogni volta che viene trovato un vimrc utente (o locale), la modalità non compatibile viene attivata. Il comando :help compatible-default chiarisce molto:

Quando Vim si avvia, l'opzione 'compatible' è attiva. Questo verrà utilizzato quando Vim inizia le sue inizializzazioni. Ma non appena viene trovato un file vimrc utente, o un file vimrc nella directory corrente, o la variabile d'ambiente "VIMINIT" è impostata, verrà impostato su 'nocompatible'.

Nel caso tu voglia sovrascrivere il comportamento predefinito e attivare la modalità non compatibile quando l’editor inizia ad analizzare il file vimrc di sistema, questo può essere fatto aggiungendo il seguente comando a quel file all’inizio:

:set nocompatible

Altri dettagli utili

Ecco alcuni altri dettagli utili su queste modalità:

Ma c'è un effetto collaterale dell'impostazione o del ripristino di 'compatible' nel momento in cui viene trovato un file .vimrc: le mappature vengono interpretate nel momento in cui vengono incontrate. Questo fa la differenza quando si usano cose come "". Se le mappature dipendono da un certo valore di 'compatible', impostalo o ripristinalo prima di
fornire la mappatura.

Il comportamento sopra può essere sovrascritto in questi modi:
- Se viene fornito l'argomento della riga di comando "-N", verrà utilizzato 'nocompatible', anche quando non esiste alcun file vimrc.
- Se viene fornito l'argomento della riga di comando "-C", verrà utilizzato 'compatible', anche quando esiste un file vimrc.
- Se viene utilizzato l'argomento "-u {vimrc}", verrà utilizzato 'compatible'.
- Quando il nome dell'eseguibile termina con "ex", allora questo funziona come se fosse stato fornito l'argomento "-C": verrà utilizzato 'compatible', anche quando esiste un file vimrc. Questo è stato fatto per far comportare Vim come "ex", quando viene avviato come "ex".

D’accordo, è probabile che tu non ti trovi in una situazione in cui dovrai attivare la modalità compatibile con Vi di Vim, ma ciò non significa che dovresti ignorare il processo di inizializzazione dell’editor. Dopotutto, non si sa mai quando questa conoscenza potrebbe esserti utile.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.