我希望我的Vim显示空行为###########
,如下所示:
就像我将标签字符>---
替换为set listchars=tab:>-
一样。只需以这种方式显示它,而不是实际插入它们。
此外,如果它能够适应我的终端尺寸,那就太棒了。
答案 0 :(得分:6)
通过使用折叠可以实现期望的效果。如果我们创建一个单行 折叠分别包含缓冲区的空行,它们都将被标记 折叠起来。唯一剩下的就是自定义突出显示 相应
首先,我们需要自动创建折叠。为此我们
可以将折叠切换为expr
方法并将foldexpr
选项设置为
仅对空行计算为非零:
:setl foldmethod=expr
:setl foldexpr=empty(getline(v:lnum))
我们接下来应该做些什么来解决这些问题 自动触发折叠高亮显示:
:setl foldminlines=0
:setl foldlevel=0
:set foldclose=all
最后,为了在折叠线上重复自定义角色,我们只是空着 为闭合折叠显示的文本,并更改填充字符:
:setl foldtext=''
:set fillchars+=fold:#
为方便起见,将上述命令合并到一个函数中,我们得到了 以下
function! FoldEmptyLine()
setl foldmethod=expr
setl foldexpr=empty(getline(v:lnum))
setl foldminlines=0
setl foldlevel=0
set foldclose=all
setl foldtext=''
set fillchars+=fold:#
endfunction
这个技巧的缺点是它干扰了通常的目的 折叠,如果用户不经修改就不能轻易使用 在编辑过程中广泛依赖折叠的其他应用。