42

How do I enable syntax highlighting in vim on Mac?

4 Answers 4

60

2022 Edit

As of right now, the previous info is slightly obsolete. Below is a rewrite of the above information that I know to work on macOS 10.15 (Catalina) and later.

Method 1

The easiest method is to place syntax on into your .vimrc. Though I've found that only having this in the vim resource file might overwrite a vast majority of the default configurations, so I'd recommend also including source $VIMRUNTIME/defaults.vim at the top of the file. You can execute the following command to easily set your .vimrc:

echo "\" Sets the default vim settings. 
source \$VIMRUNTIME/defaults.vim

\" Enable syntax highlighting.
syntax on
" > ~/.vimrc

Note that this will overwrite any current information in .vimrc. If you don't want that to happen, use >> instead of >. But keep in mind that the source should remain somewhere near the top of the file, as to not overwrite any custom configurations.

Method 2

Method 2 is more ideal if you want greater configurability and better default configurations.

First you'll need to install homebrew, which will take some time depending on your Mac's specs: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Once homebrew has successfully installed, I recommend ensuring that your system is ready to brew, using brew doctor. Before continuing, make sure that any warnings or errors displayed by the command are resolved.

Next, go ahead and install the newest version of vim using brew install vim. This version of vim should have syntax highlighting enabled by default, along with many other options.

Once vim has been installed, you'll most likely need to log out of your account and log back in. If you don't, the new version of vim won't be used, and therefor won't have syntax highlighting enabled by default. Not sure why this is, but that's just how it works.

Once you log back in, syntax highlighting, along with other previously disabled options, should now be enabled.


Pre 2022 Edit

There are two common methods:

Method 1: One of the easiest and most commonly recommended methods is by creating a file called .vimrc in your home directory. The one and only command you need to run is echo syntax on >> ~/.vimrc. The next time you access a non-txt file with vim, you will notice highlighted text.

echo "syntax on" >> ~/.vimrc

Method 2: Another method, one that I personally use/used, is by installing "vim --override-system-vim". First run vim --version in the terminal. Notice the +(s) and -(s) and keep it in mind, maybe even take a picture. Next we will install a package manager, if one is not already installed on your computer. We will use Homebrew for this tutorial. Run xcode-select --install in the terminal. It will take about 10-15 min to install the Xcode Command Line Tools. Once the installation is complete, run ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)". After brew has installed, run brew doctor to make sure that everything is in working order. If it recommends you run any commands to resolve an issue, run them first before continuing. After the previous step is complete, run brew install vim --override-system-vim. After vim is installed, run vim --version and notice the difference of the +(s) and -(s) in comparison to when you first ran the command. Not only has syntax highlighting been enabled, but there are other features that have been enabled as well.

Commands: (Note: The $ signs represent the start of a new line/command. Lines that starts with ## are comments)
$ cd
$ vim --version
$ xcode-select --install
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew doctor
#resolve any issues that are provided by brew doctor
$ brew install vim --override-system-vim
$ vim --version
2
  • Error: invalid option: --override-system-vim Jul 22 at 7:41
  • @SlavaSemushin At this point, I think that the information in method 2 this answer is somewhat obsolete. I think you just need to do brew install vim instead of including the --override-system-vim Aug 5 at 23:00
16

If you want to toggle this on/off (without creating a .vimrc file) simply type :syntax on while in vi/vim.

2

Merely adding syntax on in .vimrc configuration file is not good enough. Your configurations in this file will still be overridden by system initialisation. The easiest way without recompiling vim is to invoke it with your configuration file as command-line option as follows (all other unknown initialisations will be bypassed):

vim -u ~/.vimrc

You can set up an alias in .bashrc should you use bash shell as follows:

alias vim='vim -u ~/.vimrc'

1

syntax enable is better for this, read help for further info

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

" To toggle syntax 
" nnoremap <Leader>s Toggle Syntax
" with a little help from vi.stackexchange.com: https://vi.stackexchange.com/a/24418/7339
nnoremap <silent> <expr> <Leader>s exists('g:syntax_on') ? ':syntax off<cr>' : ':syntax enable<cr>'

Of course, you can define your oun key combination instead of <Leader>s

source: https://stackoverflow.com/a/33380495/2571881 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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .