ฉันจะเปลี่ยนหน้าจอเริ่มต้นหรือหน้าจออินโทรของ Vim ได้อย่างไร?


14

เมื่อฉันเริ่มเป็นกลุ่มโดยไม่มีไฟล์ฉันจะเห็นสิ่งนี้เสมอ:

              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

ฉันจะเปลี่ยนสิ่งนี้ได้อย่างไร

โดยเฉพาะฉันต้องการวางผลลัพธ์ของคำสั่งเชลล์ ( fortune) ที่นี่

ฉันรู้เกี่ยวกับเสียงเรียกเข้า - เริ่มต้น ; แต่ฉันไม่ต้องการคุณสมบัติเหล่านั้นทั้งหมด ฉันแค่ต้องการแสดงข้อความง่ายๆ ...

คำตอบ:


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 ฟังก์ชั่นถูกเปลี่ยนชื่อจาก "เริ่มต้น" เป็น "บ้าในเมมเบรน"โดย Marco Hinz ให้เนื้อเพลงต้นฉบับโดย Cypress Hillฉันคิดว่าเขากังวลเกี่ยวกับวิธีการที่ใหญ่ได้ หรืออาจจะแค่ฟังตอนนั้นก็ได้
jalanb

ขอบคุณสำหรับคำตอบ! แต่ฉันไม่คิดว่าตัวอย่างนี้เป็น "คำตอบ" เช่นนี้ ฉันจะใส่อะไรในinsane_in_the_membraneฟังก์ชั่น? ฉันต้องการตัวอย่าง 3 บรรทัดแรกหรือไม่ หรือว่าเป็น Startify-specific (what Session.vim?) และบรรทัดสุดท้ายให้ข้อผิดพลาด
Martin Tournoij

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

ฟอร์จูน - อะไร ??
tomekfranek

@regedarek มันแสดงตลกแบบสุ่ม ดู: en.wikipedia.org/wiki/Fortune_(Unix)
Martin Tournoij
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.