Làm cách nào để thay đổi màn hình bắt đầu hoặc giới thiệu của Vim?


14

Khi tôi khởi động Vim mà không có bất kỳ tệp nào, tôi luôn thấy điều này:

              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

Làm thế nào tôi có thể thay đổi điều này?

Cụ thể, tôi muốn đặt đầu ra của lệnh shell ( fortune) tại đây.

Tôi biết về vim-startify ; nhưng tôi không cần tất cả các tính năng đó. Tôi chỉ muốn hiển thị một số văn bản đơn giản ...

Câu trả lời:


5

Trên thực tế, câu trả lời là trong khởi đầu. Trong startify.vim khoảng dòng 15 chúng ta có thể thấy

 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

Vì vậy, điều liên quan là VimEnterlệnh tự động được gọi là " sau khi thực hiện tất cả các công cụ khởi động ".
Sau đây ifkiểm tra xem đây có phải là một phiên trống không (bằng cách kiểm tra các đối số như filename). Về cơ bản, bạn có thể đặt mã của mình vào vị trí thứ hai if, đây là mã cụ thể bắt đầu.


3
... Tôi muốn biết ai đã nghĩ về tên hàm insane_in_the_membranevà làm thế nào điều đó có liên quan đến mã thực tế của nó. Bởi vì người đó thật xuất sắc và đây là tên chức năng tốt nhất mà tôi thấy ngày hôm nay! : P
Doorknob 8/2/2015

1
@Doorknob Chức năng đã được đổi tên từ "bắt đầu" thành "điên trong màng" bởi Marco Hinz. Với lời bài hát gốc của Cypress Hill, tôi đoán anh ấy đã lo lắng về việc phương pháp này sẽ lớn đến mức nào. Hoặc có thể chỉ là nghe nó vào thời điểm đó.
jalanb

Cảm ơn câu trả lời của bạn! Nhưng tôi không nghĩ rằng đoạn trích này thực sự là một "câu trả lời", như vậy. Tôi đặt insane_in_the_membranechức năng gì? Tôi có cần 3 dòng đầu tiên của đoạn trích này không? Hoặc chúng là cụ thể Startify (cái gì Session.vim?), Và dòng cuối cùng có lỗi.
Martin Tournoij

5

Đây là mã mà tôi trích xuất từ vim-startify; các phần chính đang tạo một bộ đệm mới trên VimEnterautocmd, đặt một số văn bản vào đó, sau đó ánh xạ iđể bắt đầu một bộ đệm mới và sau đó chuyển sang chế độ chèn.

Tôi đặt phần bên dưới trong một plugin nhỏ có thêm một số cài đặt và như vậy, nhưng khái niệm cơ bản là hoàn toàn giống nhau.

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

đó là tài sản -a ??
tomekfranek

@regedarek Nó hiển thị một trò đùa ngẫu nhiên. Xem: vi.wikipedia.org/wiki/Fortune_(Unix)
Martin Tournoij
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.