Is there a difference between `syntax on` and `syntax enable` in vimscript?

Vim

Vim Problem Overview


In my .vimrc file I use:

syntax on

Today, I was perusing through some .vimrc files from other developers and i've notice a few using:

syntax enabled

Is there a difference? Are these both accomplishing the same goal just using different locution?

Vim Solutions


Solution 1 - Vim

What Vim Claims

For syntax on vs syntax enable, the help files claim:

The ":syntax enable" command will keep your current color settings.  This
allows using ":highlight" commands to set your preferred colors before or
after using this command.  If you want Vim to overrule your settings with the
defaults, use: >
    :syntax on

I Can't Verify These Claims

The behavior I see in Vim does not appear to match the above help statement.

After testing locally with some empty .vimrcs and experimenting with on, enable, and placement of highlight commands, I can't figure out what Vim is actually doing (I tested with highlight ColorColumn guibg=#331111 and set colorcolumn=80). Highlighting is sometimes overwritten and sometimes not.

Only Let Vim Set Syntax Once

I no longer trust Vim, so I only let syntax get set once, ever. Here's what I have in my .vimrc:

if !exists("g:syntax_on")
    syntax enable
endif

I use enable because of the above claim that it won't overwrite your settings, however it doesn't seem to make any difference when starting Vim.

More details

You can see that h g:syntax_on shows that on and enable source the same file:

Details:
The ":syntax" commands are implemented by sourcing a file.  To see exactly how
this works, look in the file:
    command		file ~
    :syntax enable	$VIMRUNTIME/syntax/syntax.vim
    :syntax on		$VIMRUNTIME/syntax/syntax.vim

If you're curious, g:syntax_on gets set in $VIMRUNTIME/syntax/synload.vim

Also running Vim with no plugins/settings vim -u NONE does NOT load any of the syntax files.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBrandon CrooksView Question on Stackoverflow
Solution 1 - VimAndy RayView Answer on Stackoverflow