¿Cuál es la diferencia entre set y: set?

16

Estaba mirando el plugin vim-sensible de Tim Pope y noté esto en el archivo README ...

Vea la fuente para la lista autorizada de características. (No te preocupes, en su mayoría son :setllamadas).

Cuando miré la fuente, las :setllamadas son así ...

set autoindent

No hay :antes del set.

Estoy bastante seguro de que he visto :seten el ejemplo .vimrcs también.

¿Cuál es la diferencia?

¿Qué formulario debo usar en mi .vimrc?

Ethan
fuente

Respuestas:

21

Un "script" no hace más que ejecutar una secuencia de comandos ex. Un "comando ex" es lo que escribe cuando lo usa :en Vim. Por ejemplo :wq, :set wrap, :e file, etc., son todos los comandos ex.

El :no es parte del comando; es simplemente una pulsación de tecla para iniciar el modo de línea de comandos; no siempre necesita incluir :, por ejemplo, cuando encadena múltiples comandos con |usted no necesita repetir :más de una vez. Por ejemplo, :write | quitfuncionará bien.

Sin :embargo , para mayor comodidad, se puede incluir. Esto ayuda con copiar / pegar y tal, pero no es necesario. No importa. De hecho, todos los :s principales simplemente se ignoran. :write, writey :::::::::writeson equivalentes en términos de funcionalidad (aunque obviamente no en términos de cordura).

A menudo es útil incluir la :documentación en para aclarar que este es un comando ex. Por ejemplo, wpodría referirse al :wcomando de modo normal o al siguiente wpara ir a la siguiente palabra.

Tenga en cuenta que esto se aplica a todo . Las estructuras de control como ify tambiénendif son solo comandos ex; puedes escribir algo como esto:

:if 1
:echo 'one'
:endif

desde la línea de comandos de Vim bien; No es necesario un "guión". Los scripts de Vim son muy "no mágicos" y "no especiales"; todo lo que puede hacer desde la línea de comandos ex puede hacerlo en un script de Vim, y viceversa.

Martin Tournoij
fuente
6

No hay diferencia. Si vim ve un :comando antes de un comando en su vimrc (o cualquier archivo vimscript) , lo ignorará. Además, como se mencionó anteriormente, esto no es específico del setcomando.

Por lo general, :significa que usted ejecutaría el comando en lugar de colocarlo en su vimrc (u otro archivo vimscript) , pero eso generalmente depende del contexto. Personalmente, creo que se ve mucho mejor no poner los dos puntos antes de los comandos en los archivos vimscript, y eso parece ser lo que la mayoría de las personas también hacen.

Para más información sobre esto ver :help script.

Árbol de hoja perenne
fuente
:h scripto :h vim-script-intro(equivalente)
VanLaser