Come posso cambiare la schermata iniziale o introduttiva di Vim?


14

Quando avvio Vim senza alcun file, vedo sempre questo:

              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

Come posso cambiarlo?

In particolare, vorrei inserire qui l'output di un comando shell ( fortune).

So di vim-startify ; ma non ho bisogno di tutte quelle funzionalità. Voglio solo mostrare un po 'di testo semplice ...

Risposte:


5

In realtà la risposta è in startify. In startify.vim intorno alla linea 15 possiamo vedere

 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

Quindi la cosa rilevante è il VimEntercomando automatico che si chiama " dopo aver fatto tutto il materiale di avvio ".
Di seguito viene ifverificato se si tratta di una sessione vuota (controllando argomenti simili filename). Fondamentalmente puoi mettere il tuo codice al posto del secondo if, che è il codice specifico di startify.


3
... Mi piacerebbe sapere chi ha pensato al nome della funzione insane_in_the_membranee come ciò ha a che fare con il codice attuale. Perché quella persona è geniale e questo è il miglior nome di funzione che ho visto oggi! : P
Maniglia della porta

1
La funzione @Doorknob è stata ribattezzata da "start" a "insane in the membrane" da Marco Hinz. Dato il testo originale di Cypress Hill , immagino che fosse preoccupato per quanto fosse grande il metodo. O forse lo stavo ascoltando in quel momento.
jalanb,

Grazie per la tua risposta! Ma non penso che questo frammento sia davvero una "risposta", in quanto tale. Cosa inserisco nella insane_in_the_membranefunzione? Sono necessarie le prime 3 righe di questo frammento? Oppure sono specifici di Startify (che cos'è Session.vim?) E l'ultima riga fornisce un errore.
Martin Tournoij,

5

Ecco il codice da cui ho estratto vim-startify; le parti chiave stanno creando un nuovo buffer su VimEnterautocmd, inserendo un po 'di testo in questo, e quindi mappando iper avviare un nuovo buffer e quindi passare alla modalità di inserimento.

Ho messo il seguito in un piccolo plugin che aggiunge alcune impostazioni e simili, ma il concetto di base è esattamente lo stesso.

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()

che fortuna è -a ??
tomekfranek,

@regedarek Mostra uno scherzo casuale. Vedi: en.wikipedia.org/wiki/Fortune_(Unix)
Martin Tournoij,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.