当我启动没有任何文件的Vim时,总是会看到以下内容:在此处放置shell命令(fortune)的输出。

我知道vim-startify;但我不需要所有这些功能。我只想显示一些简单的文字...

#1 楼

其实答案就在开始。在第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的参数)。基本上,您可以将代码放在第二个if的位置,第二个q4312079q是startify特定的代码。

评论


...我想知道是谁想到了函数名insane_in_the_membrane,以及这与它的实际代码有何关系。因为那个人很聪明,这是我今天看到的最好的函数名称! :P

–门把手
2015年2月8日在23:43

Marco Hinz将@Doorknob Function从“开始”重命名为“膜中的疯狂”。鉴于赛普拉斯·希尔(Cypress Hill)的原始歌词,我想他担心这种方法的规模越来越大。也许当时只是在听。

–贾兰布
2015年2月9日在9:59

感谢您的回答!但是我不认为这个片段确实是一个“答案”。我应该在insane_in_the_membrane函数中放什么?我需要此代码片段的前3行吗?还是它们是特定于Startify的(Session.vim是什么?),最后一行给出了错误。

–马丁·图尔诺伊(Martin Tournoij)
2015年2月10日在16:01



#2 楼

这是我从vim-startify中提取的代码;关键部分是在VimEnter autocmd上创建一个新的缓冲区,在其中添加一些文本,然后映射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
15年7月25日在14:37

@regedarek显示一个随机的笑话。请参阅:en.wikipedia.org/wiki/Fortune_(Unix)

–马丁·图尔诺伊(Martin Tournoij)
15年7月25日在15:47