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