【发布时间】:2015-01-12 06:56:05
【问题描述】:
在终端中运行 Vim 时,vim 窗口不会填满整个屏幕空间,当终端背景颜色与 vim 完全不同时,这是非常令人讨厌的。诚然,人们可能想让它们保持同步,但鉴于我不希望这样,我怎样才能让 vim 在整个窗口中伸展? 下面的截图说明了这个问题。
【问题讨论】:
标签: vim terminal color-scheme iterm2
在终端中运行 Vim 时,vim 窗口不会填满整个屏幕空间,当终端背景颜色与 vim 完全不同时,这是非常令人讨厌的。诚然,人们可能想让它们保持同步,但鉴于我不希望这样,我怎样才能让 vim 在整个窗口中伸展? 下面的截图说明了这个问题。
【问题讨论】:
标签: vim terminal color-scheme iterm2
并不是说 VIM 没有填满屏幕;它是。您看到的是帮助文本。帮助文本居中。一旦您进入插入模式或运行命令,它就会消失。
【讨论】:
您的终端似乎允许以小于单行/列的增量调整大小。
另一方面,Vim 只绘制完整的行或列。因此,当 Vim 显示其窗口时,不会绘制终端中部分可见的行/列。
【讨论】:
你只有两个解决方案:
将终端模拟器的背景和 Vim 的背景设置为相同的颜色,
或移除 Vim 的背景色。
Vim、你的 shell 和每个命令行程序将屏幕划分为一个网格,其中每个单元格都是一个字符的大小。如果 GUI 窗口的像素大小与 shell 的网格大小不匹配,则会得到丑陋的填充。
例子:
此外,大多数终端仿真器会在可用屏幕周围添加默认填充以提高易读性,因此在终端仿真器中运行时您将永远无法使 Vim 真正全屏。
【讨论】:
autocmd colorscheme * 上)?这确实令人沮丧。
您可以使用我的插件vim-pedant 自动更新 iterm2 的调色板以匹配 vim 的颜色方案。
【讨论】:
我最近写了一篇 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"
}
【讨论】: