Vim-StartScreen

A minimal, dependency-free start screen for Vim / NeoVim. When you open Vim with no file arguments and an empty buffer, vim-startscreen fills the window with a centered ASCII-art header instead of the usual blank screen.

It is a rip-off of the very clever startscreen by haomingw, trimmed down to just the header/logo behavior.

Features

Preview

By default, the screen shows an ASCII-art mascot, followed by a figlet-style wordmark:

StartScreen screenshot

Both the mascot and the wordmark are just plain text baked into autoload/startscreen.vim, centered at runtime — no images, no external assets. They aren't rendered in a single flat color either: the startscreen filetype's syntax file highlights the mascot and the wordmark as two separate regions (startscreenHeader and startscreenFooter, see Highlighting), so they show up in different colors straight out of the box.

Installation

Use your favorite plugin manager.

vim-plug

Plug 'matteogiorgi/vim-startscreen'

Vundle

Plugin 'matteogiorgi/vim-startscreen'

packer.nvim

use 'matteogiorgi/vim-startscreen'

Native package (Vim 8+ / Neovim), no plugin manager

git clone https://github.com/matteogiorgi/vim-startscreen.git ~/.vim/pack/plugins/start/vim-startscreen

No further setup is needed: the plugin registers a VimEnter autocommand and shows the screen automatically the next time you open Vim with no arguments.

Usage

Just open Vim with no arguments:

vim

The start screen is shown automatically. You can also trigger it manually at any time on an empty, unmodified, unmodifiable-safe buffer with:

:Startscreen

The start screen will not appear when:

Configuration

Custom header

Override the default banner with g:startscreen_custom_header. It accepts either a Vim List of strings (one per line) or a String that evaluates to such a list:

" As a list of strings
let g:startscreen_custom_header = [
    \ 'Welcome back.',
    \ '',
    \ 'May your builds be green.',
    \ ]

" Or lazily, as an expression string
let g:startscreen_custom_header = 'my#header#lines()'

Each line is automatically centered according to the current 'columns' width. Set the variable to an empty list (or an expression returning one) to disable the header entirely.

Highlighting

The plugin exposes two highlight groups on the startscreen filetype, linked to sensible defaults out of the box:

Group Linked to Covers
startscreenHeader Comment The main body of the header art
startscreenFooter Function The last few lines of the header (e.g. the wordmark)

Override them in your colorscheme or vimrc as you would any other highlight group:

highlight startscreenHeader guifg=#5c6370
highlight startscreenFooter guifg=#61afef gui=bold

How it works

On VimEnter, if the current buffer is empty, unnamed, and safe to modify, the plugin:

  1. Turns the current buffer into a throwaway scratch buffer (buftype=nofile, bufhidden=wipe, no swapfile, unlisted, no number/sign/fold columns…).
  2. Computes the header lines (custom or default) and centers each one based on the terminal width.
  3. Appends the centered lines to the buffer, then marks it nomodifiable and sets filetype=startscreen so the syntax file can highlight it.

All of this lives in a single autoload function (startscreen#start()), so the plugin has no runtime cost until Vim actually needs to draw the start screen.

Requirements