Як я можу змінити початковий або вступний екран Vim?


14

Коли я запускаю Vim без жодних файлів, я завжди бачу таке:

              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

Як я можу це змінити?

Зокрема, я хотів би поставити тут вихід команди shell ( fortune).

Я знаю про vim-startify ; але мені не потрібні всі ці функції. Я просто хочу показати простий текст ...

Відповіді:


5

Насправді відповідь наголошено. У startify.vim навколо рядка 15 ми можемо бачити

 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

Отже, відповідною справою є VimEnterавтоматична команда, яка називається " після того, як виконати всі запуски ".
Наступне ifперевіряє, чи це порожній сеанс (перевіряючи подібні аргументи filename). В основному, ви можете помістити свій код на місце другого if, що є специфічним кодом.


3
... Я хотів би знати, хто думав про назву функції insane_in_the_membrane, і як це віддалено має відношення до її фактичного коду. Тому що ця людина геніальна, і це найкраще ім’я функції, яке я бачив сьогодні! : P
Doorknob

1
Марко Хінц функцію @Doorknob перейменували з "старту" на "божевільної мембрани" . З огляду на оригінальну лірику Cypress Hill, я б здогадався, що він переживає, наскільки великий метод набуває. А може, просто слухав його в той час.
jalanb

Дякую за вашу відповідь! Але я не думаю, що цей фрагмент насправді є "відповіддю", як такою. Що я вкладаю у insane_in_the_membraneфункцію? Чи потрібні перші 3 рядки цього фрагмента? Або вони специфічні для Startify (що Session.vim?), І останній рядок видає помилку.
Мартін Турноїй

5

Ось код, який я витягнув vim-startify; Ключові частини створюють новий буфер на VimEnterautocmd, додаючи текст до цього, а потім відображаючи карту iдля запуску нового буфера, а потім переходять у режим вставки.

Я розміщую нижче в невеликому плагіні, який додає деякі налаштування і таке, але основна концепція точно така ж.

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

що це за доля -a ??
tomekfranek

@regedarek Він відображає випадковий жарт. Дивіться: en.wikipedia.org/wiki/Fortune_(Unix)
Martin Tournoij
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.