Qual'è la differenza tra set e: set?


16

Stavo guardando il plugin vim-sensible di Tim Pope e l'ho notato nel README ...

Vedi la fonte per l'elenco autorevole di funzionalità. (Non preoccuparti, sono soprattutto le :setchiamate.)

Quando ho guardato la fonte, le :setchiamate sono così ...

set autoindent

Non c'è :prima del set.

Sono abbastanza sicuro di aver visto anche :setin esempi .vimrc.

Qual è la differenza?

Quale modulo dovrei usare nel mio .vimrc?

Risposte:


21

Uno "script" non fa altro che eseguire una sequenza di comandi ex. Un "ex comando" è ciò che digiti quando lo usi :in Vim. Per esempio :wq, :set wrap, :e file, ecc, sono tutti i comandi ex.

Il :non fa parte del comando; è semplicemente una sequenza di tasti per avviare la modalità riga di comando; non è sempre necessario includere il :, ad esempio quando |si eseguono più comandi in sequenza, non è necessario ripetere :più di una volta. Ad esempio, :write | quitfunzionerà bene.

Per comodità, tuttavia, :potrebbe essere incluso. Questo aiuta a copiare / incollare e simili, ma non è necessario. Non importa In effetti, tutti i principali :s vengono semplicemente ignorati. :write, writee :::::::::writesono tutti equivalenti in termini di funzionalità (anche se ovviamente non in termini di sanità mentale).

È spesso utile includere la :documentazione in per chiarire che si tratta di un comando ex. Ad esempio, è wpossibile fare riferimento al :wcomando o alla modalità normale wper passare alla parola successiva.

Nota che questo vale per tutto . Strutture di controllo come ife endifsono anche solo ex comandi; puoi digitare qualcosa del genere:

:if 1
:echo 'one'
:endif

dalla riga di comando di Vim bene; non c'è bisogno di uno "script". Gli script Vim sono molto "non magici" e "non speciali"; tutto ciò che puoi fare dall'ex riga di comando che puoi fare in uno script di Vim e viceversa.


6

Non c'è differenza. Se vim vede a :prima di un comando nel tuo vimrc (o in qualsiasi file vimscript) lo ignorerà. Inoltre, come menzionato sopra, questo non è specifico del setcomando.

Di solito :significa che il comando verrebbe eseguito da te invece di essere inserito nel tuo vimrc (o altro file vimscript) , ma ciò dipende solitamente dal contesto. Personalmente penso che sia molto meglio non mettere i due punti davanti ai comandi nei file vimscript, e questo sembra essere quello che fanno anche la maggior parte delle altre persone.

Per ulteriori informazioni su questo vedere :help script.


:h scripto :h vim-script-intro(equivalente)
VanLaser
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.