我希望我的 Vim 将空行显示为字符串###
,如下所示:
我希望它的工作方式与我将制表符 char 替换>---
为set listchars=tab:>-
. 只是以这种方式显示,而不是实际插入它们。
此外,如果它能够适应我的终端大小,那就太好了。
我希望我的 Vim 将空行显示为字符串###
,如下所示:
我希望它的工作方式与我将制表符 char 替换>---
为set listchars=tab:>-
. 只是以这种方式显示,而不是实际插入它们。
此外,如果它能够适应我的终端大小,那就太好了。
通过折叠可以达到预期的效果。如果我们单独创建包含缓冲区空行的单行折叠,它们都将被标记为折叠。唯一剩下的就是相应地自定义突出显示。
首先,我们需要自动创建折叠。为此,我们可以将折叠切换到该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
当然,这个技巧的缺点是它会干扰折叠的通常应用,如果用户大量依赖折叠用于其他目的,则无法在不修改的情况下轻松使用。