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
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
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?fouric– fouric2013-01-27 23:14:52 +00:00Commented Jan 27, 2013 at 23:14