在Vim中处理突出显示空白的最佳方法是什么?

时间:2014-01-15 13:02:18

标签: vim

我遵循了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  

并且也无法正常工作(似乎只在空行上突出显示额外的空格)。

处理突出显示尾随空格的最佳方法是什么(但不是在输入时?)

2 个答案:

答案 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> 

此处有更多信息:http://vim.wikia.com/wiki/Highlight_unwanted_spaces

答案 1 :(得分:0)

虽然这个想法确实很简单,但综合实施仍然需要考虑很多事情和极端情况。因为我对可用的插件不满意,所以我编写了ShowTrailingWhitespace plugin,它是高度可配置的,并允许每个文件类型的例外。 (插件页面包含指向其他插件的链接。)