2011-08-11 13 views
16

que estaba buscando una forma rápida de Autoformat/agradable para la impresión de JSON en Vim el otro día y encontramos este pequeño gran dominio en la pila   desbordamiento: :%!python -m json.tool¿Una lista de comandos de Python útiles para Vim?

que me envió en una búsqueda para obtener una lista de otras herramientas de Python para imprimir bastante archivos web comunes, pero no pude encontrar mucho. ¿Existe un buen recurso/lista de herramientas de Python que encuentren particularmente útiles para limpiar material web mal formateado dentro de Vim (por ejemplo, HTML, XML, JavaScript, etc.)?

+0

muy bueno, y espero ver más de estos: excelente manera de descubrir las funciones. – sa125

+1

Esto solicita una discusión extensa, y de la forma "Yo uso esto, ¿qué usas?". [Consulte las preguntas frecuentes sobre por qué esta pregunta no está relacionada con el tema] (http://stackoverflow.com/faq#dontask). Podría estar bien con la bandera wiki de la comunidad marcada. –

+0

@Merlyn Entiendo lo que quieres decir, pero en realidad mi intención no era comenzar una lista de publicaciones con comandos individuales, sino simplemente encontrar un enlace a un recurso o wiki que ya tenía uno: por ejemplo, "http: //docs.python". .org/cool-pretty-print-goodness.html ". Soy nuevo en Vim, cambié de TextMate, y cuando encontré la herramienta JSON Python, estaba ansioso por más pero no pude encontrar un recurso adecuado con más. – johnmdonahue

Respuesta

5

Python

simplemente estás buscando un recurso para Python de una sola línea? Puede navegar por the Python standard library documentation para encontrar más inspiración.

O simplemente google "python one-liners json.tool" para encontrar recursos adicionales. Por ejemplo, este post Reddit: Suggestion for a Python blogger: figure out what what all the stdlib main functionality is, and document it

línea de comandos

Vim soporta más que Python (por ejemplo HTML Tidy como se sugiere Keith). Cualquier herramienta que pueda aceptar entrada de tubería/estándar se integrará bien con Vim.

El comando % simplemente selecciona un rango que contiene el archivo completo, y ! filtros que se extienden a través de un programa externo.

Ver :help :% y :help :!

+0

Perfecto. Gracias. Soy nuevo en Vim y no he jugado con Python, así que todavía estoy tratando de orientarme, pero parece que tengo que jugar con diferentes utilidades, Python u otras, y simplemente encontrar las que mejor se adaptan. en mi flujo de trabajo. Gracias por los enlaces, eso es exactamente lo que necesito, solo un comienzo de algunas herramientas útiles. – johnmdonahue

2

Vim tiene un comando para hacerlo, = (igual), como en ggvG= reiniciará todo el archivo. Pruebe :help = para obtener más información acerca de cómo usar funciones y programas externos con =. La configuración predeterminada usa reglas internas de sangrado que funcionan para la mayoría de los tipos de archivos.

+0

= G funcionó bien para HTML, pero para Python pude ver que se rompía la lógica al combinar si el bloque con el resto de la función, etc. Prefiero la ruta autopep8 para esto. – Nishant

5

Para archivos XHTML y XML puede usar ordenado.

:%!tidy -i -asxhtml -utf8 

:`<,`>!tidy -i -xml -utf8 

El último funciona en selecciones visuales.

+0

¡Esto parece prometedor! ¿Hay otras banderas disponibles para el comando ordenado? p.ej. -javascript, -php, -ruby, etc. – johnmdonahue

+0

@johnmdonahue: Se llama HTML tidy (ordenado para abreviar). Es para HTML y ahora documentos XML. http://tidy.sourceforge.net/#docs –

+0

@Keith Correcto! Gotcha. No estaba seguro de si había una impresión ordenada/bonita para otras lenguas también. Parece que tendré que armar un poco de un conjunto de herramientas para cualquier idioma con el que necesite trabajar. Todavía estoy obteniendo la disposición de la tierra Vim aquí. Gracias por la ayuda. – johnmdonahue

0

!autopep8 -i % parece funcionar bien en vim. El modificador -i debe sobrescribir el archivo existente en su lugar. Use more @ autopep8 --help.

Hay un complemento vim para esto si realmente está pensando en ser un usuario avanzado. Fuera de vim puede probarlo con autopep8 -diff {filename} or autopep8 {filename}.

0

hay un montón de buenas herramientas que están puede convertir el texto entre los dos formatos:

  1. par: para el ajuste de línea dura.
  2. Pandoc: para HTML, LaTeX, en primer lugar, y de rebajas
  3. autopep8: para analizar el código Python en un AST y escupirla como PEP8 compatible.

    ...

Vim está diseñado para hacer uso de tales servicios públicos por los poderosos formatprg configuración. Eso por defecto está mapeado al operador gq. Funciona bien con movimientos Vim, objetos de texto Vim, selecciones, etc.

Por ejemplo, puedo usar el ajuste por debajo de mis archivos en Python

au FileType python setlocal formatprg=autopep8\ --indent-size\ 0\ - 

John MacFarlne tiene a good article sobre la creación de un guión especializada utilizando Pandoc que podrías pegar en tu vimrc.

Cuestiones relacionadas