Jak mogę zmienić ekran startowy lub intro Vima?

14

Kiedy uruchamiam Vima bez żadnych plików, zawsze widzę to:

              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

Jak mogę to zmienić?

W szczególności chciałbym umieścić tutaj wynik działania polecenia powłoki ( fortune).

Wiem o vim-startify ; ale nie potrzebuję tych wszystkich funkcji. Chcę tylko pokazać prosty tekst ...

Martin Tournoij
źródło

Odpowiedzi:

5

Właściwie odpowiedź jest w startify. W startify.vim wokół linii 15 możemy zobaczyć

 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

Tak więc istotną rzeczą jest VimEnterautomatyczne polecenie, które nazywa się „ po wykonaniu wszystkich czynności związanych z uruchamianiem ”.
Poniższe ifsprawdza, czy jest to pusta sesja (sprawdzając argumenty podobne filename). Zasadniczo możesz umieścić swój kod w miejscu drugiego if, który jest kodem specyficznym dla startify.

Johnnes
źródło
3
... Chciałbym wiedzieć, kto pomyślał o nazwie funkcji insane_in_the_membranei jak ma to zdalnie związek z jej faktycznym kodem. Ponieważ ta osoba jest genialna i jest to najlepsza nazwa funkcji, jaką widziałem dzisiaj! : P
Klamka
1
@Doorknob Function został przemianowany z „start” na „szalony w błonie” przez Marco Hinza. Biorąc pod uwagę oryginalne teksty Cypress Hill , domyślam się, że martwił się, jak duża będzie ta metoda. A może po prostu wtedy słuchałem.
jalanb
Dziękuję za odpowiedź! Ale nie sądzę, że ten fragment jest tak naprawdę „odpowiedzią” jako taką. Co mam wprowadzić do insane_in_the_membranefunkcji? Czy potrzebuję pierwszych 3 wierszy tego fragmentu? A może są one specyficzne dla Startify (co jest Session.vim?), A ostatni wiersz zawiera błąd.
Martin Tournoij,
5

Oto kod, z którego wyodrębniłem vim-startify; kluczowe części tworzą nowy bufor w VimEnterautocmd, umieszczają w nim trochę tekstu, a następnie odwzorowują, iaby uruchomić nowy bufor, a następnie przejść do trybu wstawiania.

Poniżej zamieszczam małą wtyczkę, która dodaje pewne ustawienia i tak dalej, ale podstawowa koncepcja jest dokładnie taka sama.

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
źródło
co to jest fortuna -a ??
tomekfranek
@regedarek Wyświetla losowy żart. Zobacz: en.wikipedia.org/wiki/Fortune_(Unix)
Martin Tournoij