我遵循了Vim的指南here,并尝试了网络上的其他内容,似乎没有任何工作......
我也试过这个:
autocmd InsertEnter * syn clear EOLWS | syn match EOLWS excludenl /\s\+\%#\@!$/
autocmd InsertLeave * syn clear EOLWS | syn match EOLWS excludenl /\s\+$/
highlight EOLWS ctermbg=red guibg=red
并且也无法正常工作(似乎只在空行上突出显示额外的空格)。
处理突出显示尾随空格的最佳方法是什么(但不是在输入时?)
答案 0 :(得分:1)
我认为你的第一个正则表达式略有偏差。这就是我使用的:
" highlight empty space at the end of a line
autocmd InsertEnter * syn clear EOLWS | syn match EOLWS excludenl /\s\+\%#\@<!$/
autocmd InsertLeave * syn clear EOLWS | syn match EOLWS excludenl /\s\+$/
highlight EOLWS ctermbg=red guibg=red
请注意\
之前的+
和<
之前的!
。{/ p>
我还有一个映射到+空格的函数(我已设置为逗号)来删除文件中的所有尾随空格:
function! <SID>StripTrailingWhitespace()
" Preparation: save last search, and cursor position.
let _s=@/
let l = line(".")
let c = col(".")
" Do the business:
%s/\s\+$//e
" Clean up: restore previous search history, and cursor position
let @/=_s
call cursor(l, c)
endfunction
nmap <silent> <leader><space> :call <SID>StripTrailingWhitespace()<CR>
答案 1 :(得分:0)
虽然这个想法确实很简单,但综合实施仍然需要考虑很多事情和极端情况。因为我对可用的插件不满意,所以我编写了ShowTrailingWhitespace plugin,它是高度可配置的,并允许每个文件类型的例外。 (插件页面包含指向其他插件的链接。)