¿Cómo obtener una vista previa del resultado del archivo de descuento editado en vim?

8

Utilizo vim para editar latex, pero el látex es demasiado pesado para tomar notas casualmente a diario, así que decidí usar Markdown en su lugar.

Por lo tanto, quiero configurar vim para poder ver el archivo con formato de reducción utilizando el \lvcomando

Estoy usando Mac OS X 10.11. ¿Cómo debo modificar el archivo .vimrc?

Tom
fuente
3
¿Has buscado algunos complementos como este ?
statox
3
No es necesario obtener una vista previa del descuento.
romainl 01 de
1
@romainl Sería bueno si pudiera.
Tom
2
@romainl Sí, y no necesito resaltar la sintaxis. No descarta el hecho de que sea útil.
Tommy A
2
@romainl Estaba dibujando un paralelo de "necesidad vs. deseo".
Tommy A

Respuestas:

10

Si bien estoy de acuerdo con el comentario de @romainl (la rebaja se hizo para ser lo suficientemente explícita como para no necesitar una vista previa), puede hacer esto de diferentes maneras:

[OSX / Unix] El complemento de reducción instantánea es una solución. Necesita tener node.js instalado y usar el siguiente comando:

[sudo] npm -g install instant-markdown-d

También necesita tener los paquetes xdg-utils, curly nodejs-legacyse instala.

Con eso, cuando abra un búfer de reducción, se abrirá una página html en su navegador web y verá los cambios en tiempo real.


[Unix] Esta respuesta sugiere utilizar el programa de reducción de daring fireball .

Una vez que lo haya descargado, puede usar el siguiente comando para ver el archivo en Lynx :

./Markdown.pl ~/testfile.markdown | lynx -stdin

Puede usarlo en un comando Vim con algo así:

:!./Markdown.pl % | lynx -stdin

[Unix] Otro complemento que podría ser útil es vim-preview , parece tener algunas dependencias, pero debería funcionar en los archivos markdown, rdoc, textile, ronn y rts.


[Windows / OSX] Finalmente, el usuario de github natesilva hizo una muy buena idea que solo requiere el markdowncomando en su camino. Una vez que obtenga el script, ,pdebe abrir su markdown en el navegador predeterminado.

"
" While editing a Markdown document in Vim, preview it in the
" default browser.
"
" Author: Nate Silva
"
" To install: Place markdown.vim in ~/.vim/ftplugin or
" %USERPROFILE%\vimfiles\ftplugin.
"
" To use: While editing a Markdown file, press ',p' (comma p)
"
" Tested on Windows and Mac OS X. Should work on Linux if you set
" BROWSER_COMMAND properly.
"
" Requires the `markdown` command to be on the system path. If you
" do not have the `markdown` command, install one of the following:
"
" http://www.pell.portland.or.us/~orc/Code/discount/
" http://www.freewisdom.org/projects/python-markdown/
"
function!PreviewMarkdown()
    " **************************************************************
    " Configurable settings

    let MARKDOWN_COMMAND = 'markdown'

    if has('win32')
        " note important extra pair of double-quotes
        let BROWSER_COMMAND = 'cmd.exe /c start ""'
    else
        let BROWSER_COMMAND = 'open'
    endif

    " End of configurable settings
    " **************************************************************

    silent update
    let output_name = tempname() . '.html'

    " Some Markdown implementations, especially the Python one,
    " work best with UTF-8. If our buffer is not in UTF-8, convert
    " it before running Markdown, then convert it back.
    let original_encoding = &fileencoding
    let original_bomb = &bomb
    if original_encoding != 'utf-8' || original_bomb == 1
        set nobomb
        set fileencoding=utf-8
        silent update
    endif

    " Write the HTML header. Do a CSS reset, followed by setting up
    " some basic styles from YUI, so the output looks nice.
    let file_header = ['<html>', '<head>',
        \ '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">',
        \ '<title>Markdown Preview</title>',
        \ '<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.3.0/build/cssreset/reset-min.css">',
        \ '<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.3.0/build/cssbase/base-min.css">',
        \ '<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.3.0/build/cssfonts/fonts-min.css">',
        \ '<style>body{padding:20px;}div#container{background-color:#F2F2F2;padding:0 20px;margin:0px;border:solid #D0D0D0 1px;}</style>',
        \ '</head>', '<body>', '<div id="container">']
    call writefile(file_header, output_name)

    let md_command = '!' . MARKDOWN_COMMAND . ' "' . expand('%:p') . '" >> "' .
        \ output_name . '"'
    silent exec md_command

    if has('win32')
        let footer_name = tempname()
        call writefile(['</div></body></html>'], footer_name)
        silent exec '!type "' . footer_name . '" >> "' . output_name . '"'
        exec delete(footer_name)
    else
        silent exec '!echo "</div></body></html>" >> "' .
            \ output_name . '"'
    endif

    " If we changed the encoding, change it back.
    if original_encoding != 'utf-8' || original_bomb == 1
        if original_bomb == 1
            set bomb
        endif
        silent exec 'set fileencoding=' . original_encoding
        silent update
    endif

    silent exec '!' . BROWSER_COMMAND . ' "' . output_name . '"'

    exec input('Press ENTER to continue...')
    echo
    exec delete(output_name)
endfunction

" Map this feature to the key sequence ',p' (comma lowercase-p)
map ,p :call PreviewMarkdown()<CR>

Edit @TommyA también sugirió agarre, este no es un complemento vim pero se puede instalar con pip install grip. La principal ventaja de este programa es que utiliza la API de rebajas de GitHub, por lo que el renderizado debe ser bastante parecido al aspecto de su rebaja en las páginas de Github.

Este programa servirá sus archivos de descuento localhost:6419por defecto. Debería poder invocarlo desde Vim con:!grip

statox
fuente
También hay un agarre que hace que GitHub tenga un descuento con sabor.
Tommy A
@TommyA la rebaja instantánea también genera una rebaja con sabor a GitHub, pero otra alternativa también es buena. El agarre parece agradable porque no tiene muchas dependencias (una vez que lo ha usado pip, parece que está listo para comenzar). ¡Gracias por tu comentario!
statox
Ah eché de menos eso. Sin embargo, grip utiliza la API de rebajas de GitHub. Por lo tanto, siempre se debe representar casi exactamente como aparecerá en GitHub, incluido el resaltado de idioma y los emoji. También hay una solicitud de extracción para que renderice WikiLinks.
Tommy A
@statox ¿Hay alguna manera de configurar vim tal que instant-markdown pluginse active para .mdextensiones?
Tom
@TommyA: Oh, eso es bueno saberlo. ¿Quieres que lo agregue a mi respuesta o quieres dar tu propia respuesta
Statox