是否有可能在Vim中不显示〜空行?

Ecc*_*cco 28 vim macvim

是否有可能在Vim中不显示〜空行?

这混淆了Mac Vim的滚动条,我完全不喜欢这些代字号.

小智 48

:hi NonText guifg=bg

该命令应将非文本字符的颜色设置为与背景颜色相同.

  • `:highlight EndOfBuffer ctermfg=gb` 为我做了 (3认同)

Liv*_*oso 28

Vim 8.x:

您现在可以仅为缓冲区的末尾更改颜色~:

highlight EndOfBuffer ctermfg=black ctermbg=black

请参阅Vim 8.x的changelog.

  • 也适用于 neovim 0.5(刚刚测试了我当前的版本),干杯! (2认同)

She*_*yar 11

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

\n

在 Lua 中(Nvim 0.5+):

\n
vim.wo.fillchars=\'eob: \'\n
Run Code Online (Sandbox Code Playgroud)\n

在 Vim 脚本中:

\n
set fillchars=eob:\\ \n
Run Code Online (Sandbox Code Playgroud)\n
\n

注意:调用上面的方法将会覆盖你的fillchars其他项目的值(如果设置),因此请将此作为参考来一起设置多个值:

\n
set fillchars=eob:\\ ,fold:\\ ,vert:\\\xe2\x94\x82\n
Run Code Online (Sandbox Code Playgroud)\n

或者使用set fillchars+=...它来附加您现有的值。

\n

  • `set fillchars=eob:\ ` 在 Vim 中为我工作。我实际上决定喜欢看到这个,但不喜欢波浪号,所以我将其设置为“set fillchars=eob:-”。 (2认同)

Jos*_*Lee 10

正如jamessan所说,你无法禁用它们.滚动行为也不是特定于MacVim的 - 它在终端和gvim中的工作方式相同:

在终端中的屏幕截图

你应该做的就是学会将这看作是Vim灵活性的一部分,而不是将其视为一个问题.例如,您可以使用该zt命令将当前行滚动到屏幕顶部,而不管文件在何处.这样可以更容易地编写执行某些工作的宏,然后回滚到原来的位置.这些命令因此<C-E><C-Y>变得更简单,'scrolloffset'选项也是如此.

如果必须的话,重新训练你的大脑,将Vim的滚动条视为映射到哪条线在顶部,而不是哪个屏幕是可见的.

  • *“与其将其视为问题,您应该做的是学会将其视为 Vim 灵活性的一部分......”* - 另一种看待它的方式是,这些工具应该适合您;反之亦然。 (3认同)
  • 有没有办法让 zz 将光标置于中心,即使当前行位于文件开头?用“~”填充 SOF 上方的行? (2认同)

jdh*_*hao 8

波形~符旨在提醒用户这些行不是缓冲区内容的一部分。

\n

上面的突出显示技巧将隐藏~ 字符,但它仍然存在。对于某些终端,这甚至可能不起作用。如果您碰巧是 Neovim 用户,您可以使用fillchars选项来更改缓冲区符号的结尾,如下所示:

\n
set fillchars=fold:\\ ,vert:\\\xe2\x94\x82,eob:\\ ,msgsep:\xe2\x80\xbe\n
Run Code Online (Sandbox Code Playgroud)\n

这将使用空间而不是~缓冲区末尾,有效隐藏恼人的~.

\n

您可能还对这里的讨论感兴趣。

\n


jam*_*san 5

您无法禁用它们,但可以更改颜色方案,使非文本突出显示组的颜色与普通突出显示组的颜色相同。然而,这不仅仅影响文档波浪线的结尾。

我怀疑它实际上是在“混淆”MacVim 的滚动条,如果是的话,那么这就是 MacVim 所做的修补中的一个错误。


小智 5

对于 Lua,而不是:

vim.wo.fillchars='eob: '
Run Code Online (Sandbox Code Playgroud)

使用以下内容:

vim.opt.fillchars = { eob = ' ' }
Run Code Online (Sandbox Code Playgroud)

前者不会持续存在新缓冲区,而后者则会持续存在。