Quelle est la différence entre set et: set?

17

Je regardais le plugin vim-sensible de Tim Pope et je l'ai remarqué dans le README ...

Voir la source pour la liste des fonctionnalités faisant autorité. (Ne vous inquiétez pas, ce sont principalement des :setappels.)

Quand j'ai regardé la source, les :setappels sont comme ça ...

set autoindent

Il n'y a pas :avant le set.

Je suis à peu près sûr que j'ai également vu des :setexemples .vimrc.

Quelle est la différence?

Quel formulaire dois-je utiliser dans mon .vimrc?

Ethan
la source

Réponses:

22

Un "script" ne fait rien de plus que d'exécuter une séquence de commandes ex. Une "commande ex" est ce que vous tapez lorsque vous l'utilisez :dans Vim. Par exemple :wq, :set wrap, :e file, etc. sont toutes les commandes ex.

Le :ne fait pas partie de la commande; c'est simplement une frappe pour démarrer le mode ligne de commande; vous n'avez pas toujours besoin d'inclure le :, par exemple lorsque vous enchaînez plusieurs commandes avec |vous n'avez pas besoin de répéter :plus d'une fois. Par exemple, :write | quitcela fonctionnera bien.

Pour plus de commodité, le :peut être inclus cependant. Cela facilite le copier / coller et autres, mais ce n'est pas obligatoire. Ça n'a pas d'importance. En fait, tous les :s principaux sont simplement ignorés. :write,, writeet :::::::::writesont tous équivalents en termes de fonctionnalité (mais évidemment pas en termes de raison).

Il est souvent utile d'inclure la :documentation dans pour clarifier qu'il s'agit d'une commande ex. Par exemple, wvous pouvez vous référer à :wou à la commande de mode normal wpour passer au mot suivant.

Notez que cela s'applique à tout . Les structures de contrôle telles que ifet ne endifsont également que des commandes ex; vous pouvez taper quelque chose comme ceci:

:if 1
:echo 'one'
:endif

de la ligne de commande Vim très bien; pas besoin de "script". Les scripts Vim sont très "non magiques" et "non spéciaux"; tout ce que vous pouvez faire à partir de la ligne de commande ex, vous pouvez le faire dans un script Vim, et vice versa.

Martin Tournoij
la source
6

Il n'y a pas de différence. Si vim voit une :avant une commande dans votre vimrc (ou tout fichier vimscript), il l'ignorera. En outre, comme mentionné ci-dessus, ce n'est pas spécifique à la setcommande.

Habituellement :, cela signifie que la commande serait exécutée par vous au lieu d'être placée dans votre vimrc (ou autre fichier vimscript) , mais cela dépend généralement du contexte. Personnellement, je pense qu'il semble beaucoup mieux de ne pas mettre les deux-points avant les commandes dans les fichiers vimscript, et cela semble être ce que la plupart des autres font également.

Pour plus d'informations à ce sujet, voir :help script.

Arbre à feuilles persistantes
la source
:h scriptou :h vim-script-intro(équivalent)
VanLaser