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.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
Marco Hinz에 의해 @Doorknob 기능의 이름이 "시작"에서 "막 속으로 미장 " 으로 변경되었습니다 . Cypress Hill의 원래 가사를 감안할 때 방법이 얼마나 커지는 지 걱정 스러웠습니다. 아니면 당시에 그냥 듣고 있었을 수도 있습니다.
jalanb

답변 주셔서 감사합니다! 그러나 나는이 스 니펫이 실제로 "답변"이라고 생각하지 않습니다. 기능에 무엇을 넣 insane_in_the_membrane습니까? 이 스 니펫의 처음 3 줄이 필요합니까? 또는 Startify 특정 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()

그것이 무엇인가 -a ??
tomekfranek

@regedarek 임의의 농담을 표시합니다. 참조 : en.wikipedia.org/wiki/Fortune_(Unix)
Martin Tournoij
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.