Pasting a huge amount of text into vim is slow?

前端 未结 4 942
梦毁少年i
梦毁少年i 2021-01-31 03:12

Someone showed me how to do this before but I can\'t figure out what it was now.

I know about :set paste but this is not the problem.

4条回答
  •  独厮守ぢ
    2021-01-31 03:55

    For some filetypes :set syntax=off makes no difference because the slowdown is caused by foldexpr. Setting an empty foldexpr makes pasting fast again.

    Doing it manually is stupid (and slow!). Luckily vim supports bracketed paste in many terminals and enables paste automatically, so it's possible to hook into that and temporarily disable foldexpr:

    function! s:paste_toggled(new, old) abort
        if a:new && !a:old
            let b:saved_foldexpr = &foldexpr
            let &l:foldexpr = ''
        elseif !a:new && a:old && exists('b:saved_foldexpr')
            let &l:foldexpr = b:saved_foldexpr
            unlet b:saved_foldexpr
        endif
    endfunc
    
    augroup FastPaste
        autocmd OptionSet paste call s:paste_toggled(v:option_new, v:option_old)
    augroup END
    

    (source: https://github.com/liskin/dotfiles/blob/69ab04e64e001da90232eaf2c5856337d58c785f/.vim/plugin/fastpaste.vim)

提交回复
热议问题