Syntax Highlighting Issues in Neovim


I have been trying to figure out why my syntax highlighting won’t work in Neovim for two days now.

I have included “syntax on” in my sysinit.vim as well as “filetype plugin indent on” and I get no errors when I run nvim.

When I do an “echo $VIMRUNTIME” I get the proper directory (I think. I used homebrew to install. The path is usr/local/Cellar/neovim/0.1.7/share/nvim/runtime). I have verified that the syntax folder is indeed present in that folder.

However, when I am in neovim I get no highlighting other than a red block for trailing white space. If I run “:syntax” it identifies the proper syntax (testing with python). Another strange occurrence I’ve identified is when I run “:syntax on” from within the editor, the colors get darker. If I turn it back off, nothing changes. As syntax is enabled in the init.vim file, I have no idea why that would change the appearance of the editor.

I’m banging my head against the wall on this. Please help! My init.vim is below. It’s a work in progress!

" Disables Vi compatibility. Vi compatibility mode disables some modern Vim Features.
set nocompatible

" Enables filetype detection, filetype-specific scripts (ftplugins),
" and filetype-specific indent scripts.
filetype plugin indent on

syntax on                    " Turns on syntax highlighting
set ruler                    " Show row and column ruler information
set number                   " Show line numbers
set spelllang=en             " Enable spell-checking
set softtabstop=4            " Number of spaces per tab
set title                    " Set the terminal title to the current file
set visualbell               " Turn on the visual bell
set cursorline               " Highlight the line under the cursor
set hidden                   " Hide inactive buffers
set ttimeoutlen=0            " Eliminate delay when switching modes
set expandtab                " Converts tabs into spaces

" Lazyredraw attempts to solve Vim lag by reducing processing required. When
" enabled, any action that is not typed will not cause the screen to redraw.
set lazyredraw

" Faster redrawing
set ttyfast

" Don't display the current mode in the status line.
" This info is already displayed in the Airline status bar.
set noshowmode

inoremap jj <esc>            " Remaps the esc key to 'jj'
inoremap jk <esc>            " Remaps the esc key to 'jk'

" Disabling all of the cursor keys
nnoremap <up> <nop>
nnoremap <down> <nop>
nnoremap <left> <nop>
nnoremap <right> <nop>
inoremap <up> <nop>
inoremap <down> <nop>
inoremap <left> <nop>
inoremap <right> <nop>

" Changes the cursor shape. (Flashing pipe in insert mode, block in normal node.)

" Colors and Theme Options
set termguicolors                     " Enables "True Color" support
silent! colorscheme gruvbox           " Sets the color scheme, if present
set background=dark                   " Sets the default background to dark mode
let g:gruvbox_contrast_dark="hard"    " Changes dark mode contrasts. Possible values are soft, medium, and hard. Default is medium
let g:gruvbox_contrast_light="hard"   " Changes light mode contrasts. Possible values are soft, medium, and hard. Default is medium
let g:gruvbox_italicize_comments=1    " Enables italics for comments
let g:gruvbox_italicize_strings=1     " Enables italics for strings


The solution to this is was ridiculously dumb. Apparently when the contrast slider is turned all the way up in iTerm2.. It causes issues with themes. All is working now. Hopefully this post will save someone a lot of headache in the future.

Answered By – Brandon Force

Answer Checked By – David Marino (AngularFixing Volunteer)

Leave a Reply

Your email address will not be published.