Remove trailing spaces in vim.

Here's how to remove trailing spaces.

:%s/\s\+$//e

You can automatically remove trailing spaces every time you save a file by adding an autocmd to your vim config.

autocmd BufWritePre * :%s/\s\+$//e

This sets up an automatic command to run before writing any file (BufWritePre event triggers before a file is written, * matches filenames). You can also trigger it for selected files since many formats like markdown require you to have trailing spaces. (I generally don't work with markdown in vim, so I don't mind).

autocmd BufWritePre *.ts :%s/\s\+$//e

This runs only for typescript files.

Warning trailing spaces.

If you not using the automatic trailing space removal, you can create a function to detect trailing spaces in a file and issue warnings.

function! StatuslineTrailingSpaceWarning()
    if !exists('b:statusline_trailing_space_warning')
	    if !&modifiable
            let b:statusline_trailing_space_warning = ''
            return b:statusline_trailing_space_warning
        endif

        let l:line_num = search('\s\+$', 'nw')
        if l:line_num != 0
            let b:statusline_trailing_space_warning = ' [' . l:line_num . ']' . 'trailing space'
        else
            let b:statusline_trailing_space_warning = ''
        endif
    endif
    return b:statusline_trailing_space_warning
endfunction

set statusline+=%{StatuslineTrailingSpaceWarning()}