How make Vim fill Terminal window

9.8k views Asked by At

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.

enter image description here

5

There are 5 answers

2
jamessan On BEST ANSWER

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.

6
romainl On

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.

1
leo60228 On

It's not that VIM isn't filling the screen; it is. What you're seeing is the help text. The help text is centered. Once you go into insert mode or run a command it goes away.

0
resolritter On

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"
}
1
drzel On

You can use my plugin vim-pedant to automatically update iterm2's palette to match vim's colorscheme.