Habilitación de resaltado de marcado en Vim

138

Estoy usando Vim en un terminal en mi MacBook Air con OS X Lion, y parece que no puedo encontrar un buen complemento para resaltar la sintaxis de Markdown.

Hasta ahora he probado el plugin plasticboy y el plugin de Tim Pope . El complemento plasticboy funcionaba bien, pero causaba que se resaltara el espacio en blanco al final de las líneas, y no he descubierto cómo desactivarlo. (Es realmente molesto, porque cada vez que golpeo spacecuando escribo, resalta el personaje).

El complemento de Tim no parecía hacer mucho en la forma de resaltar, aparte de los encabezados que tal vez usan ###. Los bloques de código y las viñetas se ignoran. Podría estar perdiendo algo allí. Yo sí uso la .mdextensión en mis archivos Markdown, por lo que debería elegir el tipo de archivo.

También he visto una referencia a Vim 7.3 con soporte de Markdown incorporado, pero sin uno de esos dos complementos no obtengo ningún resaltado en absoluto.

¿Alguno de estos requiere esquemas de color específicos para funcionar?

Josh Earl
fuente
24
*.mdno es la extensión correcta para rebajas. Ese es para archivos de modula. El complemento Tpope funciona bien (todos estos complementos funcionan bien) Debería usar la *.markdownextensión
lucapette
77
@lucapette la ftdetect para plug-in de Tim Pope no incluir también *.md, junto con: *.markdown,*.mdown,*.mkd,*.mkdn. El plugin plasticboy solo detecta automáticamente*.mkd,*.markdown,*.mdwn
pb2q
1
Desde la fuente del complemento plasticboy, parece que en realidad también detecta .md. Estoy bloqueado en esta extensión por ahora porque estoy usando Scriptogr.am para mi blog, y esa es la única extensión que reconocen en este momento.
Josh Earl
1
Acabo de encontrar esto y es bastante rockin para el descuento de github con sabor: github.com/jtratner/vim-flavored-markdown
Matthew Turner
Para problemas con plasticboy / vim-markdown , abra problemas en los proyectos para que los desarrolladores puedan resolverlo. Creo que resaltar los espacios en blanco al final es un buen comportamiento, ya que los espacios dobles generan <br>etiquetas, por lo que los escritores deben ser conscientes de ello.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Respuestas:

22

Esto debería funcionar para deshabilitar el resaltado de espacio al final de la línea cuando se usa el plugin plasticboy mkd:

:syn clear mkdLineBreak

Puede autocmdhacerlo para las extensiones de archivo necesarias para que no necesite hacerlo cada vez que cargue un archivo de descuento.

Nota que este resaltado específico existe porque Markdown trata las líneas que terminan con 2 o más caracteres de espacio especialmente insertando un <br>, por lo que es útil.

El complemento plasticboy utiliza TODOresaltado para esta regla, que es demasiado, ya que está diseñado para, de forma predeterminada, ser realmente llamativo, fondo amarillo, para que se destaque. Puede hacer que esto sea menos llamativo visualmente cambiando esa highlightregla. Una forma rápida de hacer esto sería algo como:

:hi link mkdLineBreak Underlined

Ahora esos espacios de fin de línea aparecerán subrayados. Intente vincularse a otros highlightgrupos para algo que pueda atraerlo más. En lugar de usar link, puede ser aún más específico acerca de esos espacios de fin de línea: por ejemplo, puede especificar que aparezcan como un poco más claros / oscuros que el fondo normal, usando su propio highlightcomando, especificando ctermfg , ctermbg , guifg personalizados , configuración de guibg .

Como arriba, podrías autocmd esto para aplicar su configuración específica.

Para obtener más información sobre los highlightgrupos de enlaces , escriba: :help group-namey verá una lista de grupos que se pueden vincular y que ellos mismos deberían mostrarse de manera útil utilizando sus highlightreglas actuales . También: :help highlight.

pb2q
fuente
2
Eso tiene mucho sentido. No me di cuenta de que dos espacios tenían importancia en Markdown. Creo que lo dejaré habilitado a menos que me siga molestando. ¡Gracias!
Josh Earl
Sí, es por eso que lo más destacado no se activa hasta que se hayan ingresado 2 espacios.
pb2q
@ josh-earl, vea mis ediciones para obtener más alternativas cuando use el complemento
plasticboy
308

Acerca del resaltado de sintaxis nativa para Markdown, creo que solo funciona para archivos con la extensión .markdownde forma predeterminada.
Estaba teniendo problemas con el resaltado de sintaxis de Markdown para mis .mdarchivos.
Lo intenté:

:set syntax=markdown

Y funcionó. Así que incluí la siguiente línea en mi .vimrc:

au BufNewFile,BufFilePre,BufRead *.md set filetype=markdown

Ahora mi vim tiene resaltado de sintaxis para mis .mdarchivos.

BufFilePre es necesario para: sav

PutzKipa
fuente
13
Para cualquiera que lea esto: sí, funciona y es una solución mucho más simple al problema que instalar un complemento. Forma rápida de hacer esto desde la línea de comandos: echo "au BufRead, BufNewFile * .md set filetype = markdown" >> .vimrc
RobinLovelace
11
Me parece que esta debería ser la respuesta aceptada.
Enrico Campidoglio
44
@SamStoelinga No es un error, .mdtambién lo usa Modula. Detectar cuál usar requeriría algunas heurísticas avanzadas.
nyuszika7h
8
A partir de Vim 7.4.480, los *.mdarchivos se reconocen como Markdown por defecto.
fwalch
1
Correcto, pero incompleto. Para que esto funcione igualmente con el Save As… :savcomando, uno necesita extender el autocomando para BufFilePre:autocmd BufNewFile,BufFilePre,BufRead *.md set filetype=markdown
Serge Stroobandt
19

Resaltado de sintaxis nativa

El resaltado de sintaxis nativa para Markdown solo funciona de manera predeterminada para .markdown extensión de archivo.

La siguiente línea .vimrcproporciona los mejores resultados para ambos vimy gvim:

autocmd BufNewFile,BufFilePre,BufRead *.md set filetype=markdown.pandoc

Explicación:

1. ¡Especifique su sabor Markdown!

Si trabaja principalmente con un sabor de Markdown (p. Ej. Pandoc ), ¡asegúrese de mencionar esto también! Al hacerlo, permite mezclar y combinar los complementos Vim específicos de Markdown y Pandoc. Por ejemplo: he encontrado el complemento vim-pandoc-syntax particularmente adecuado para mis necesidades de resaltado. Sin embargo, uso el plegado vim-markdown más general para el plegado Markdown.

Por cierto, solo se permite un sabor, separado por un punto, por ejemplo: filetype=markdown.pandoc

2. gvimrequiereBufFilePre

gvimrequiere un adicional BufFilePreen la línea de autocomando para el reconocimiento de tipo de archivo Markdown con el Save As… :savcomando.

Serge Stroobandt
fuente
15

En Tim Plugin la .md extensión sólo funciona para README.md porque filetype.vim especifica así.

" Markdown
au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,README.md  setf markdown
espartano
fuente
1
Falso; debe estar pensando en la instalación predeterminada de Vim, que se comporta de esta manera. El complemento de Tim lo anula para todos los archivos .md. Ver github.com/tpope/vim-markdown/blob/master/ftdetect/markdown.vim
corvec el
7

Si no le gusta poner toda su configuración ~/.vimrc, puede crear ~/.vim/ftdetect/markdown.md(o su equivalente en Windows) con los siguientes contenidos.

au BufNewFile,BufRead *.md setf markdown

ajmccluskey
fuente