在Vim/Neovim中是否可以不为空行显示~?

68de4m5k  于 2023-05-07  发布在  其他
关注(0)|答案(7)|浏览(198)

在Vim中是否可以不为空行显示~?
这混淆了MacVim的滚动条,我非常不喜欢这些波浪线。

a9wyjsp7

a9wyjsp71#

:hi NonText guifg=bg
该命令应该将非文本字符的颜色设置为与背景颜色相同。

bvn4nwqk

bvn4nwqk2#

Vim 8.x:
现在你可以改变缓冲区~的颜色:
highlight EndOfBuffer ctermfg=black ctermbg=black
请参阅Vim 8.x的更改日志。

qv7cva1a

qv7cva1a3#

就像jamessan说的,你不能让它们失效。滚动行为也不是MacVim特有的-它在终端和gvim中的工作方式相同:

你不应该把这看作是一个问题,而应该学会把这看作是Vim灵活性的一部分。例如,可以使用zt命令将当前行滚动到屏幕顶部,而不管它在文件中的位置。这样可以更容易地编写宏来完成一些工作,然后滚动回您所在的位置。因此,命令和变得更简单,'scrolloffset'选项也是如此。
如果你必须这样做,重新训练你的大脑,把Vim的滚动条看作是Map到哪一行在最上面,而不是哪个屏幕是可见的。

s1ag04yj

s1ag04yj4#

对于NeoVim,您可以将eobfillchars值设置为空格字符,这将有效地隐藏它。* (这可能不适用于普通的Vim)*。

在Lua(Nvim 0.5+)中:

vim.wo.fillchars='eob: '

VimScript中:

set fillchars=eob:\

**注意:**调用上面的命令会覆盖你的fillchars值,其他的项目也会覆盖(如果设置了),所以可以参考上面的命令一起设置多个值:

set fillchars=eob:\ ,fold:\ ,vert:\│

或者使用set fillchars+=...将其附加到现有值。

thigvfpy

thigvfpy5#

波浪号~字符旨在提醒用户这些行不是缓冲区内容的一部分。
上面的高亮显示技巧将 * 隐藏 *~字符,但它仍然存在。对于某些终端,这甚至可能不起作用。如果你碰巧是Neovim用户,你可以使用fillchars选项来更改缓冲区结束符号,如下所示:

set fillchars=fold:\ ,vert:\│,eob:\ ,msgsep:‾

这将使用空间而不是~作为缓冲区的结尾,有效地隐藏了恼人的~
您可能也对here感兴趣。

dgsult0t

dgsult0t6#

您不能禁用它们,但可以更改配色方案,使“非文本”高亮显示组的颜色与“正常”高亮显示组的颜色相同。但是,这影响的不仅仅是文档波浪号的结尾。
我怀疑它实际上是“混淆”MacVim的滚动条,如果是这样,那么这是MacVim所做的修补程序中的一个错误。

pokxtpni

pokxtpni7#

对于Lua,而不是:

vim.wo.fillchars='eob: '

使用以下内容:

vim.opt.fillchars = { eob = ' ' }

前者对于新的缓冲区不持续,而后者持续。

相关问题