如何让Vim填满终端窗口

21

在终端中运行 Vim 时,Vim 窗口没有填满整个屏幕空间,在终端背景颜色与 Vim 颜色截然不同的情况下,这非常令人烦恼。尽管可以将它们保持一定程度的同步,但鉴于我不想要这样做,我该如何使 Vim 跨越整个窗口?下面的截图说明了问题。

enter image description here

5个回答

5
你只有两个解决方法:
  • 使你的终端仿真器和Vim的背景颜色相同,
  • 或者去除Vim的背景颜色。
Vim、你的shell和每个命令行程序将屏幕划分为一个字符大小的网格。如果GUI窗口的像素大小不符合你的shell网格大小,你就会得到那种丑陋的填充。
例如:
  • 我的单元格大小是7x19,我的显示器是1680x1050,
  • 我可以安装240列和55行,但我总会在屏幕底部留下5个像素的填充。
此外,大多数终端仿真器会在可用屏幕周围添加默认填充以增加可读性,所以当在终端仿真器中运行时,你永远无法使Vim真正全屏。

有人会认为这是一个显而易见的问题,因此应该以某种方式得到解决。非常令人沮丧。 - oarfish
有人可能认为这是一个显而易见的问题,因此应该以某种方式得到解决。我认为这是使用终端和命令行的结果,不是问题,应该集中精力解决其他问题。尝试使用X窗口或vim的本地版本,或者更改字体大小。 - the Tin Man
3
几乎每个人都使用终端,所以我不认为这是一个无关紧要的问题。改变字体大小并不能解决这个问题。 - oarfish
这不是问题,因为调整终端仿真器窗口的背景颜色非常简单。每个面对这个“问题”的人都这样做,你也应该这样做。如果你觉得这太麻烦了,就去问iTerm的开发者移除它巨大的默认填充,并解释给他,他应该扭曲它的显示,只是为了避免你的麻烦。我相信“每个人”都会感谢你的。 - romainl
只是想知道,当vim打开时(或更好的是,在autocmd colorscheme *上),是否有可能自动更改终端仿真器的背景颜色?这似乎很令人沮丧。 - Yosh
@Yosh, 可能吧。但要被认为是解决方案的话,就得找到每个终端仿真器实现这一点的方法。在 Mac OS X 上,iTerm.app 和 Terminal.app 都通过 AppleScript 提供了它们的背景颜色设置,所以这听起来是非常可行的,但我不确定其他平台上的其他终端仿真器是否有此功能。我不打算去做,所以欢迎你尝试一下。 - romainl

4

看起来你的终端可以按小于一行/列的增量调整大小。

然而,Vim 只绘制完整的行或列。因此,在 Vim 显示其窗口时,终端中部分可见的行/列没有被绘制。


嗯,这很糟糕,因为我想在全屏模式下使用它。我想告诉vim每列应该有多少像素是不可能的,对吧? - oarfish
2
顺便说一句,调整大小与此无关。如果我调整窗口大小,边框保持不变,所以那不可能是原因。 - oarfish

2
我最近写了一篇Medium文章,可以在视觉上帮助解决这个问题。链接:Link.
解决此问题的一种方法是在运行Vim时触发更改终端背景颜色。这利用了转义序列和终端颜色,这些可能在您的终端仿真器中不可用。
change_terminal_background() {
 local COLOR="$1"

 if [ "$TERM" == "screen-256color" ]; then
# TMUX
  echo -ne "\\ePtmux;\\e\\033]11;$COLOR\\007\\e\\\\"
 else
#  NOT TMUX
  echo -ne "\\033]11;$COLOR\\007"
 fi
}

这样调用:

vim() {
# Change the terminal's color when Vim starts
  change_terminal_background "#924560"

  /usr/bin/vim "$@"

# Change it back when it exits
  change_terminal_background "#000000"
}

0

你可以使用我的插件vim-pedant,自动更新iterm2的调色板以匹配vim的颜色方案。


这似乎并没有回答问题。或者说,充其量这只是一个侵入式的解决方法。 - oarfish

-3

并不是VIM没有填满屏幕;它已经填满了。你看到的是帮助文本。帮助文本是居中的。一旦你进入插入模式或运行命令,它就会消失。


3
Oarfish谈论的是终端底部和右侧的不同颜色。 - jamessan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接