GNU/Linux >> Linux Esercitazione >  >> Linux

Come apportare modifiche alle impostazioni specifiche del file in Vim usando Modeline

Sebbene i plug-in siano senza dubbio uno dei maggiori punti di forza di Vim, ci sono molte altre funzionalità che lo rendono uno degli editor di testo/IDE più potenti e ricchi di funzionalità disponibili oggi per gli utenti Linux. Una di queste funzionalità è la possibilità di apportare modifiche alle impostazioni specifiche del file. È possibile accedere a questa capacità utilizzando la funzione Modeline dell'editor.

In questo articolo, discuteremo di come utilizzare la funzionalità Modeline di Vim utilizzando esempi di facile comprensione.

But before we start doing that, it's worth mentioning that all the examples, commands, and instructions mentioned in this tutorial have been tested on Ubuntu 16.04, and the Vim version we've used is 7.4.

Modello VIM

Utilizzo

Come abbiamo già detto, la funzione Modeline di Vim ti consente di apportare modifiche specifiche ai file. Si supponga, ad esempio, di voler sostituire tutte le schede utilizzate in un particolare file del progetto con spazi e assicurarsi che tutti gli altri file non siano interessati da questa modifica. Questo è un caso d'uso ideale in cui Modeline ti aiuta in quello che vuoi fare.

Quindi, quello 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 eseguire l'esercizio di cui sopra per testare il caso d'uso sulla tua macchina Linux, le cose non funzionino come previsto. In tal caso, non preoccuparti, poiché in alcuni casi è necessario attivare prima la funzione Modeline (è disabilitata per impostazione predefinita su sistemi come Debian, Ubuntu, Gentoo e OSX per motivi di sicurezza).

Per abilitare la funzione, apri il file .vimrc (che si trova nella tua home directory), quindi aggiungi la seguente riga:

set modeline

Ora, ogni volta che accedi a una scheda e salvi il file (dove expandtab è stato immesso il comando modeline), la scheda 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 file particolare, vuoi 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 scheda e vedrai che il numero di spazi coperti sarà 8. 

Potresti aver notato che ho detto che questi comandi di modeline devono essere inseriti da qualche parte vicino alla parte superiore o inferiore del file. Se ti stai chiedendo perché è così, il motivo è che la funzione è progettata in questo modo. Le righe seguenti (prese dalla documentazione ufficiale di Vim) dovrebbero chiarirlo:

"La modeline non può trovarsi in un punto qualsiasi del file:deve trovarsi nelle prime o nelle ultime righe. La posizione esatta in cui vim controlla la modeline è controllata dalle modelines variabile; vedi :linee di modello della guida . Per impostazione predefinita, è impostato su 5 righe ."

Ed ecco quali sono le :help modeline comando (a cui si fa riferimento nelle righe precedenti) dice:

If 'modeline' is on 'modelines' gives the number of lines that is checked for set commands. If 'modeline' is off or 'modelines' is zero no lines are checked.

Prova a mettere il comando modeline oltre l'intervallo predefinito di 5 righe (dal basso o dall'alto) e noterai che gli spazi delle tabulazioni torneranno all'impostazione predefinita di Vim, nel mio caso sono 4 spazi.

Tuttavia, puoi modificare 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=10

Ciò significa che ora posso inserire il comando modeline ovunque tra le prime o le ultime 10 righe del file.

Procedendo, in qualsiasi momento, durante la modifica di un file, puoi accedere al seguito (con l'editor Vim in modalità comando) per vedere le impostazioni correnti relative alla modeline e dove sono state impostate l'ultima volta.

:verbose set modeline? modelines?

Ad esempio, nel mio caso, il comando precedente ha prodotto il seguente output:

 modeline
Last set from ~/.vimrc
modelines=10
Last set from ~/.vimrc

Ecco alcuni dei punti importanti che devi sapere sulla funzione Modeline di Vim:

  • Questa funzione è abilitata per impostazione predefinita per Vim in esecuzione in modalità non compatibile (non compatibile con Vi), ma alcune importanti distribuzioni di Vim disabilitano questa opzione nel sistema vimrc per motivi di sicurezza.
  • La funzione è disabilitata per impostazione predefinita durante la modifica come root (se hai aperto il file utilizzando "sudo", non ci sono problemi:la funzione funziona).
  • Con 'set' , la modeline termina ai primi due punti non dopo una barra rovesciata. E senza 'set' , nessun testo può seguire le opzioni. Ad esempio, /* vim:noai:ts=4:sw=4 */ è una linea di modello non valida.

Preoccupazioni per la sicurezza

Purtroppo, la funzione Modeline di Vim può essere utilizzata per compromettere la sicurezza. In effetti, in passato sono stati segnalati numerosi problemi relativi alla sicurezza di Modeline, tra cui l'iniezione di comandi della shell, l'esecuzione di comandi arbitrari, l'accesso non autorizzato e altro ancora. D'accordo, la maggior parte di questi sono vecchi e sarebbero stati corretti ormai, ma dà l'idea che la funzione Modeline potrebbe essere utilizzata in modo improprio dagli hacker.

Conclusione

Modeline potrebbe essere una funzionalità avanzata dell'editor Vim, ma non è molto difficile da capire. Non c'è dubbio che un po' di curva di apprendimento coinvolga, ma non c'è molto da chiedere data l'utilità della funzione. Naturalmente, ci sono problemi di sicurezza, il che significa che dovresti valutare le tue opzioni prima di abilitare e utilizzare la funzione.

Hai mai usato la funzione Modeline? Com'è stata la tua esperienza? Condividi con noi (e l'intera comunità HowtoForge) nei commenti qui sotto.


Linux
  1. Come far funzionare Ldapsearch su Sles su Tls usando il certificato?

  2. Rendi Vim come il tuo IDE Perl usando il plugin perl-support.vim

  3. Rendi Vim come il tuo Bash-IDE usando il plugin bash-support

  4. Tutorial:crea Vim come IDE C/C++ usando il plugin c.vim

  5. Come aprire un file in vim usando pipe

Come proteggere con password i file di testo usando Vim Editor in Linux

Come proteggere con password un file usando Vim su Linux

Come salvare un file in Vi / Vim e uscire dall'editor

Come commentare più righe contemporaneamente nell'editor di vim usando 3 metodi

Come annullare o ripristinare le modifiche in Vim

Come proteggere con password i file usando l'editor Vim in Ubuntu