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

これを変更するにはどうすればよいですか?

具体的には、fortuneここにシェルコマンド()の出力を配置します。

vim-startifyについて知っています。しかし、私はそれらのすべての機能を必要としません。単純なテキストを表示したいだけです...

回答:


5

実際、答えはstartifyにあります。15行あたりのstartify.vimでは、次のことがわかります。

 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)。基本的に、2番目の場所(ifstartify固有のコード)にコードを配置できます。


3
...関数名を誰が考えたのinsane_in_the_membraneか、そしてそれが実際のコードと何の関係もないのかを知りたい。その人は素晴らしいですし、これは私が今日見た中で最高の関数名だからです!:P
ドアノブ

1
@Doorknob Functionは、Marco Hinzにより「start」から「 inane in the membrane」名前変更されましたサイプレスヒルによるオリジナルの歌詞を考えると彼はこの方法がどれほど大きくなっているのか心配していたと思います。または多分それをちょうど聞いていた。
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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.