Bagaimana saya bisa mengubah layar mulai atau intro Vim?

14

Ketika saya memulai Vim tanpa file apa pun, saya selalu melihat ini:

              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

Bagaimana saya bisa mengubahnya?

Secara khusus, saya ingin meletakkan output dari perintah shell ( fortune) di sini.

Saya tahu tentang vim-startify ; tapi saya tidak butuh semua fitur itu. Saya hanya ingin menunjukkan beberapa teks sederhana ...

Martin Tournoij
sumber

Jawaban:

5

Sebenarnya jawabannya ada di startify. Di startify.vim di sekitar baris 15 kita bisa melihat

 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

Jadi yang relevan adalah VimEnterperintah otomatis yang disebut " setelah melakukan semua hal startup ".
Berikut ini ifmemeriksa apakah ini adalah sesi kosong (dengan memeriksa argumen seperti filename). Pada dasarnya Anda dapat menempatkan kode Anda di tempat yang kedua if, yang merupakan kode spesifik-awinkan.

johannes
sumber
3
... Saya ingin tahu siapa yang memikirkan nama fungsi insane_in_the_membrane, dan bagaimana hal itu ada hubungannya dengan kode sebenarnya. Karena orang itu brilian dan ini adalah nama fungsi terbaik yang pernah saya lihat hari ini! : P
Doorknob
1
@Doorknob Function diubah namanya dari "start" menjadi "insane in the membrane" oleh Marco Hinz. Mengingat lirik asli oleh Cypress Hill, kurasa dia khawatir tentang seberapa besar metodenya. Atau mungkin hanya mendengarkannya saat itu.
jalanb
Terima kasih atas jawaban anda! Tetapi saya tidak berpikir bahwa cuplikan ini benar-benar merupakan "jawaban". Apa yang saya masukkan ke dalam insane_in_the_membranefungsi? Apakah saya memerlukan 3 baris pertama dari cuplikan ini? Atau apakah itu khusus untuk Startify (apa Session.vim?), Dan baris terakhir memberikan kesalahan.
Martin Tournoij
5

Inilah kode yang saya ekstrak vim-startify; bagian-bagian kunci membuat buffer baru pada VimEnterautocmd, meletakkan beberapa teks di dalamnya, dan kemudian memetakan iuntuk memulai buffer baru dan kemudian pergi ke mode insert.

Saya meletakkan di bawah ini dalam sebuah plugin kecil yang menambahkan beberapa pengaturan dan semacamnya, tetapi konsep dasarnya persis 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
sumber
apa itu keberuntungan -a ??
tomekfranek
@regedarek Ini menampilkan lelucon acak. Lihat: en.wikipedia.org/wiki/Fortune_(Unix)
Martin Tournoij