let b:comment_leader = '# '
setlocal colorcolumn=80
set foldmethod=indent
set shiftwidth=4
set tabstop=4
set softtabstop=4
set expandtab
let w:m2=matchadd('ErrorMsg','\%81v.*',-1)
set errorformat=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
setlocal commentstring=#\ %s
По ходу list+listchars могут показывать только лишние пробелы в конце строк, но не те которые являются отступами. А вообще почему не устраивает: «если таб - то рисуется символ, если пробел - ничего не рисуется»? Ведь так ты точно знаешь где отступы из пробелов.