我希望我的 Vim 将空行显示为一串 ###
字符,如下所示:
我希望它的工作方式与我用 set listchars=tab:>-
将 tabs char 替换为 >---
的方式类似。只是那样显示,而不是实际插入它们。
另外,如果它能适应我终端的大小就好了。
最佳答案
通过折叠可以达到预期的效果。如果我们创建一条线 折叠分别包含缓冲区的空行,它们都将是 标记为折叠。唯一剩下的就是自定义 相应地突出显示。
首先,我们需要自动创建折叠。为了这
目的,我们可以将折叠切换到 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
当然,这个技巧的缺点是它会干扰 折叠的通常应用,并且不能容易地使用,而不 如果用户广泛依赖其他折叠方式,则进行修改 目的。
关于vim - 空行可以在 Vim 中显示为其他内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12335329/