vim - 空行可以在 Vim 中显示为其他内容吗?

标签 vim

我希望我的 Vim 将空行显示为一串 ### 字符,如下所示:

Desired display of empty lines

我希望它的工作方式与我用 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/

相关文章:

vim - 为什么 ci"和 ci(, ci{.... 行为不同?

vim - 改进 vimdiff 语法高亮

Vim:向左/向右移动窗口?

html - 粘贴到电子邮件时突出显示语法

vim - 如何固定窗口大小?

vim - 如何在 Vim 中重复任何命令,例如 emacs 中的 "C-x z"?

vim - 如何从 vim 中删除默认的空缓冲区?

linux - 在 Vim 中打开最后一个命令的输出

python - 在 vim 和 python 中使用 ycm,如何在例如使用时保留文档字符串预览详细参数?

vim cmap lhs 仅在开头