When running Vim in a Terminal, the vim window does not fill the entire screen space, which is very irritating when the terminal background color radically differs from vim's. Admittedly, one might want to keep them somewhat in sync, but given that I don't want that, how can I make vim stretch across the entire window? The screenshot below illustrates the problem.
How make Vim fill Terminal window
9.8k views Asked by oarfish AtThere are 5 answers
You have only two solutions:
give your terminal emulator's background and Vim's background the same color,
or remove Vim's background color.
Vim, your shell and every command-line program divide the screen in a grid of which every cell is the size of a character. If the GUI window's size in pixels doesn't fit your shell's grid size you get that ugly padding.
Example:
- my cell size is 7x19 and my display is 1680x1050,
- I can fit 240 columns and 55 lines but I will always have a 5 pixels padding at the bottom of the screen.
Additionally, most terminal emulators add a default padding around the usable screen to increase legibility so you will never be able to make Vim really full screen when run in a terminal emulator.
I've recently written a Medium article which could help solving this issue visually. Link.
One way to go about this is by triggering a change in your terminal's background color when Vim is running. This makes use of escape sequences and terminal colors, which might not be available in your terminal emulator.
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
}
Call it like this:
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"
}
You can use my plugin vim-pedant to automatically update iterm2's palette to match vim's colorscheme.
It looks like your terminal allows resizing in increments less than a single row/column.
Vim, on the other hand, draws only complete rows or columns. The partially visible rows/columns in the terminal are therefore not being drawn when Vim displays its window.