22

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 Answers 5

5

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.

6
  • One would think this is an obvious problem and therefore would have been addressed somehow. Very depressing.
    – oarfish
    Commented Nov 14, 2014 at 21:56
  • "One would think this is an obvious problem and therefore would have been addressed somehow." I would think it's the result of using terminals and command-lines and that it's a non-problem and would concentrate on something else. Try using X-Windows or a native version of vim or change your font-size. Commented Nov 14, 2014 at 23:16
  • 3
    Almost everybody uses a terminal, so I don't see how it's a non-problem. Changing the font size does not help.
    – oarfish
    Commented Nov 15, 2014 at 7:43
  • It's a non-problem because adjusting the background color of your terminal emulator window is trivial. That's what "everybody" who faces that "problem" does and that's what you should do too. If you think it's too much of a hassle, go ask iTerm's developer to remove its huge default padding and explain him that he should distort its display just to avoid that hassle of yours. I'm sure "everybody" will thank you for that.
    – romainl
    Commented Nov 15, 2014 at 8:41
  • Just wondering, would it be possible to change the background color of the terminal emulator automatically when vim opens (or better, on autocmd colorscheme *)? This does seem frustrating.
    – Yosh
    Commented Nov 15, 2014 at 9:20
4

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.

2
  • Hm, that is bad since I want to use it in fullscreen. I suppose it's not possible to tell vim how many pixels a column should have, is it?
    – oarfish
    Commented Nov 14, 2014 at 20:20
  • 2
    Btw. the resizing has nothing to do with it. If I resize the window, the borders stay the same, so that can't be it.
    – oarfish
    Commented Nov 15, 2014 at 10:23
2

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"
}
0

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

1
  • This does not seem to answer the question. Or rather, it is an intrusive workaround at best.
    – oarfish
    Commented Apr 24, 2017 at 15:31
-3

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.

1
  • 3
    oarfish is talking about the different colors on the bottom and right sides of the terminal.
    – jamessan
    Commented Nov 14, 2014 at 19:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.