index | OSiUX | blog | docs | charlas

Realizar un profile en vim y deshabilitar Foldexpr_markdown

Hace unos días que vengo notando que vim se cuelga o al menos tarda demasiado al pegar texto.

Al principio pensaba que tenía que ver con tmux, por estar copiando y pegando texto desde el buffer de tmux.

Pero luego comprobé que al pegar en mcedit esto no pasaba, e investigando cuál podría ser el problema descubrí dos cosas:

Cómo realizar un profile en vim para detectar dónde esta la lentitud

Para iniciar el profile:

    :profile start profile.log
    :profile func *
    :profile file *
    " At this point do slow actions
    :profile pause
    :noautocmd qall!

Para visualizar rápidamente que fue lo más lento:

    # awk '{print $2,$3}' profile.log  | grep -v total | grep -v SORTED | sort -nr | head
    27.629469 Foldexpr_markdown()
    27.629469 Foldexpr_markdown()
    1.671386 if
    1.395355 if
    1.186143 if
    1.162478 if
    1.044769 let
    0.997596 let
    0.834278 let
    0.661260 if

el plugin vim-markdown es lento

Encontré que el plugin vim-markdown tiene un bug y se puede deshabilitar la función Foldexpr_markdown() fácilmente agregando al .vimrc la siguiente línea:

    let g:vim_markdown_folding_disabled=1

Luego volví a repetir el mismo pegado y en el nuevo profile ya no apareció la función Foldexpr_markdown y fue muy rápido:

    # awk '{print $2,$3}' markdown.log  | grep -v SORTED | grep -v total | sort -nr | head
    0.035887 0.000680
    0.035887 0.000680
    0.035855 0.002342
    0.035855 0.002342
    0.035534 0.000327
    0.035207 <SNR>94_MarkdownHighlightSources()
    0.035207 <SNR>94_MarkdownHighlightSources()
    0.032944 0.000331
    0.031879 0.000077
    0.031723 0.000280

@ 00:29 hs