Wet Feet
Wet Feet

Reputation: 4555

How do I get vim to highlight trailing whitespaces while using vim at the same time?

Following Vim highlighting with solarized color scheme, I tried this

" Default color scheme
syntax enable
 set background=dark
colorscheme solarized
autocmd ColorScheme * highlight RedundantSpaces ctermbg=red
match RedundantSpaces /\s\+$/

However I am still unable to get my whitespace to show up. Here's my .vimrc:

set nocompatible              " required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'

Plugin 'tmhedberg/SimpylFold'
Plugin 'Vimjas/vim-python-pep8-indent'
Plugin 'vim-syntastic/syntastic'
Plugin 'nvie/vim-flake8'
Plugin 'jeffkreeftmeijer/vim-numbertoggle'
Plugin 'altercation/vim-colors-solarized'

" add all your plugins here (note older versions of Vundle
" used Bundle instead of Plugin)

" ...

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

"split navigations
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>

" See docstrings for folded code
let g:SimpylFold_docstring_preview=1
" Enable folding
set foldmethod=indent
set foldlevel=99

" Enable folding with the spacebar
nnoremap <space> za

" UTF8 Support
set encoding=utf-8

" Syntastic recommended settings
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*

let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0

" Default color scheme
syntax enable
set background=dark
colorscheme solarized
autocmd ColorScheme * highlight RedundantSpaces ctermbg=red
match RedundantSpaces /\s\+$/

" Make my code look pretty
let python_highlight_all=1
syntax on

" line numbering
set number relativenumber

Also, if possible, how do I use https://github.com/vim-scripts/ShowTrailingWhitespace with Solarize?

Upvotes: 2

Views: 6481

Answers (3)

dsimic
dsimic

Reputation: 390

Here's an excerpt from my ~/.vimrc that highlights redundant trailing whitespace and spaces before tabs. It takes care of the specifics of the insert mode, and also handles automatically generated files, such as the git commit messages, in a special way that keeps their contents readable.

" Highlight trailing whitespace and spaces before tabs, but ignore
" harmless leading and trailing spaces found at the start of lines
" in certain types of automatically generated files
"
function! IgnoreWhitespace()
  if index(["diff", "gitcommit", "gitsendemail"], &filetype) >= 0
    2match IgnoredWhitespace /^ $\|^ \ze\t\|^#\zs $/
  endif
endfunction

highlight TrailingWhitespace ctermbg=13
highlight IgnoredWhitespace  ctermbg=53

augroup vimrc-trailing-whitespace
  autocmd!
  autocmd BufWinEnter * match TrailingWhitespace /\s\+$\| \+\ze\t/
  autocmd BufWinEnter * call  IgnoreWhitespace()
  autocmd InsertEnter * match TrailingWhitespace /\s\+\%#\@<!$\| \+\ze\t/
  autocmd InsertEnter * call  IgnoreWhitespace()
  autocmd InsertLeave * match TrailingWhitespace /\s\+$\| \+\ze\t/
  autocmd InsertLeave * call  IgnoreWhitespace()
  autocmd BufWinLeave * call  clearmatches()
augroup END

Of course, you can adjust the highlight colors in the vimscript code above to fit your taste. My goal was not to make the so-called harmless leading and trailing spaces completely invisible, but to have them kind of ignored by making them barely visible, so I can still see such spaces in an unobtrusive way.

Here's a screenshot that shows an example of a diff file type generated by git add -p and displayed in vim with this vimcode in effect. The test file also contains some artificially injected whitespace, which tests the vimscript code additionally and showcases its visual effects.

Redundant trailing whitespace highlighted

Upvotes: 0

sudavid4
sudavid4

Reputation: 1131

add this to the very bottom of your .vimrc

highlight RedundantSpaces ctermbg=red guibg=red 
match RedundantSpaces /\s\+$/

and you should be good to go, no need for ShowTrailingWhitespace plugin

Upvotes: 15

Valeyard
Valeyard

Reputation: 31

There's no need to use a plugin just to trail whitespaces, i have this in my .vimrc:

autocmd BufWinEnter <buffer> match Error /\s\+$/
autocmd InsertEnter <buffer> match Error /\s\+\%#\@<!$/
autocmd InsertLeave <buffer> match Error /\s\+$/
autocmd BufWinLeave <buffer> call clearmatches()

It trails the whitespaces while you are editing the code, so i think that it will do what you want.

Upvotes: 3

Related Questions