Comment puis-je changer l'écran de démarrage ou d'introduction de Vim?

14

Lorsque je démarre Vim sans aucun fichier, je vois toujours ceci:

              VIM - Vi IMproved

               version 7.4.580
           by Bram Moolenaar et al.
 Vim is open source and freely distributable

        Become a registered Vim user!
type  :help register<Enter>   for information

type  :q<Enter>               to exit
type  :help<Enter>  or  <F1>  for on-line help
type  :help version7<Enter>   for version info

Comment puis-je changer cela?

Plus précisément, je voudrais mettre la sortie d'une commande shell ( fortune) ici.

Je connais vim-startify ; mais je n'ai pas besoin de toutes ces fonctionnalités. Je veux juste montrer un texte simple ...

Martin Tournoij
la source

Réponses:

5

En fait, la réponse est dans startify. Dans startify.vim autour de la ligne 15, nous pouvons voir

 autocmd VimEnter * nested
\ if !argc() && (line2byte('$') == -1) && (v:progname =~? '^[-gmnq]\=vim\=x\=\%[\.exe]$')
\ | if get(g:, 'startify_session_autoload') && filereadable('Session.vim')
\ | source Session.vim
\ | else
\ | call startify#insane_in_the_membrane()
\ | endif
\ | endif
\ | autocmd! startify VimEnter

Donc, la chose pertinente est la VimEntercommande automatique qui est appelée " après avoir fait toutes les choses de démarrage ".
Ce qui suit ifvérifie s'il s'agit d'une session vide (en recherchant des arguments comme filename). Fondamentalement, vous pouvez mettre votre code à la place du second if, qui est le code spécifique à startify.

johannes
la source
3
... Je voudrais savoir qui a pensé au nom de la fonction insane_in_the_membrane, et comment cela a à distance quoi que ce soit à voir avec son code réel. Parce que cette personne est brillante et c'est le meilleur nom de fonction que j'ai vu aujourd'hui! : P
Poignée de porte
1
@Doorknob Function a été renommé de "start" à "insane in the membrane" par Marco Hinz. Compte tenu des paroles originales de Cypress Hill, je suppose qu'il était inquiet de l'ampleur de la méthode. Ou peut-être que je l'écoutais à l'époque.
jalanb
Merci pour votre réponse! Mais je ne pense pas que cet extrait soit vraiment une "réponse" en tant que telle. Que dois-je mettre dans la insane_in_the_membranefonction? Ai-je besoin des 3 premières lignes de cet extrait? Ou sont-ils spécifiques à Startify (qu'est-ce que c'est Session.vim?), Et la dernière ligne donne une erreur.
Martin Tournoij
5

Voici le code que j'ai extrait de vim-startify; les éléments clés créent un nouveau tampon sur l' VimEnterautocmd, y mettent du texte, puis mappent le ipour démarrer un nouveau tampon et ensuite passer en mode insertion.

J'ai mis le ci-dessous dans un petit plugin qui ajoute quelques paramètres et autres, mais le concept de base est exactement le même.

fun! Start()
    " Don't run if: we have commandline arguments, we don't have an empty
    " buffer, if we've not invoked as vim or gvim, or if we'e start in insert mode
    if argc() || line2byte('$') != -1 || v:progname !~? '^[-gmnq]\=vim\=x\=\%[\.exe]$' || &insertmode
        return
    endif

    " Start a new buffer ...
    enew

    " ... and set some options for it
    setlocal
        \ bufhidden=wipe
        \ buftype=nofile
        \ nobuflisted
        \ nocursorcolumn
        \ nocursorline
        \ nolist
        \ nonumber
        \ noswapfile
        \ norelativenumber

    " Now we can just write to the buffer, whatever you want.
    call append('$', "")
    for line in split(system('fortune -a'), '\n')
        call append('$', '        ' . l:line)
    endfor

    " No modifications to this buffer
    setlocal nomodifiable nomodified

    " When we go to insert mode start a new buffer, and start insert
    nnoremap <buffer><silent> e :enew<CR>
    nnoremap <buffer><silent> i :enew <bar> startinsert<CR>
    nnoremap <buffer><silent> o :enew <bar> startinsert<CR>
endfun

" Run after "doing all the startup stuff"
autocmd VimEnter * call Start()
Martin Tournoij
la source
qu'est-ce que la fortune -a ??
tomekfranek
@regedarek Il affiche une blague aléatoire. Voir: en.wikipedia.org/wiki/Fortune_(Unix)
Martin Tournoij