4

nano has a useful bit of syntax highlighting that actually highlights whitespace (tabs and spaces), under two conditions: (1) the whitespace does not have a non-whitespace character between either the last character or the beginning of the line and it, and (2) that the file is source code and not plain, plain text (as in a shopping list). How can I emulate this kind of behavior in vim?

1 Answer 1

4

I use set list and set listchars in .vimrc to show tabs and trailing white spaces, you can use a condition for selective file type like this.

if !(&filetype == "txt") set list " show special characters set listchars=tab:→\ ,trail:·,nbsp:· endif 

So my files look like this when those charaters are present.

function someFunc() { // no trailing spaces here → var a = "hola"; // 3 trailing spaces.··· alert(a); // this line starts with spaces instead of tab // next a line with 4 white spaces and nothing else ···· // next a line with a couple tabs → → } 

Note: · is not .

Edit

So to answer to your comment, you can do that by adding this to your ~/.vimrc, make sure to add it after the colorscheme, or it will be hi clear'd.

if !(&filetype == "txt") highlight WhiteSpaces ctermbg=green guibg=#55aa55 match WhiteSpaces /\s\+$/ endif 

You can change the highlight colors and refine the regular expression as needed. /\s\+$/ will match trailing spaces or tabs and lines that contain nothing but either of those 2 characters. If you only want to highlight lines with just tabs and spaces use /^\s\+$/ instead.

1
  • 1
    nano, I just realized, doesn't replace the tabs and spaces, but changes them to the "black/white on green" coloring, which makes them appear as green bars. Is there a way that I can do this instead of inserting a separate character? Commented Jan 27, 2013 at 23:14

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.