我想在终端vim中很好地显示尾随空格。这将允许我在关闭文件之前将其删除。
我知道这个问题很受欢迎,因此我已经找到了很多答案。不幸的是我还没有找到令人满意的...
因此,我将尝试总结收集到的信息和找到的解决方案。
解决方案1:手动突出显示尾随空格
highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()
优点:
- 易于使用
- 快速
- 兼容于
cursorline
缺点:
- 选择的颜色与其他配色方案不兼容,因为颜色是手动设置为
red
- 大红色背景块不是很美观
解决方案2:使用列表功能
set list
set listchars+=trail:◦
优点:
- 易于使用
- 快速
缺点:
- 如果
:set cursorline
启用则发出 - 的专用颜色
list/trail
不可配置。必须与其他列表字符相同
解决方案3:使用隐藏功能
syn match WhiteSpace "\s\+$" containedin=ALL conceal cchar=◦
set conceallevel=2
set concealcursor=nv
highlight Conceal ctermfg=red
优点:
- 比第一个解决方案还漂亮
缺点:
- 背景与光标线背景不同
- 可能会干扰其他隐藏规则
- 选择的颜色并不总是与配色方案兼容
- 与旧版Vim不兼容
我的问题
在性能和兼容性方面,哪一种枚举的解决方案最合适?如何获得所有优点,而又没有缺点?
换句话说,我想在以下位置找到解决方案:
- 高光尾随颜色与所选颜色一致
- 这种颜色清晰可见,但对眼睛不太激进
- 与
cursorline
(背景和前景)兼容- 与可能使用隐蔽的其他插件兼容
- 尾随字符可以设置为任何Unicode字符
:hi link ExtraWhitespace CursorLine
。请参阅:help hi-link
。