2011-10-21 17 views
6

Actualmente estoy usando MacVim y me gustaría imprimir todos los archivos en mi árbol de trabajo. ¿Hay alguna manera de hacer esto simplemente, quizás usando el comando hardcopy?Imprimir recursivamente todos los archivos de Vim

+0

': qa' cerrará todos los archivos abiertos ... Me pregunto si' a' puede modificar ? –

Respuesta

6

Una manera conveniente de ejecutar un comando para un grupo de archivos es recoger la lista de sus nombres , lo definen como la nueva lista de argumentos (vea :help arglist), y luego itere el comando sobre esos archivos en la lista de argumentos.

  1. Para llevar a cabo el primer paso, utilice el comando :args con un comodín archivos coincidentes deseada. Por ejemplo,

    :args ./**/* 
    

    establece la lista de argumentos a los nombres de todos los archivos del directorio actual y sus subdirectorios; Del mismo modo,

    :args /tmp/**/*.{c,h} 
    

    selecciona todos los archivos .c y .h en /tmp y sus subdirectorios. Para detalles sobre la sintaxis comodín, vea :help wildcard.

    Si ruta a la raíz de un subárbol que contiene los archivos de impresión sea desconocida de antemano y es construido por una secuencia de comandos, utilice el comando

    :exe 'args' join(map(split(glob(p . '/**/*'), '\n'), 'fnameescape(v:val)')) 
    

    donde se supone que la variable p a contener la ruta que directorio raíz.

  2. Para el envío de archivos en la lista de argumentos a la impresora, ejecute el comando :hardcopy para esos archivos utilizando el comando :argdo,

    :argdo hardcopy! 
    

    El especificador ! suprime el cuadro de diálogo modal para seleccionar la impresión parámetros.

    Se puede usar un comando más complicado para imprimir cada archivo en , un documento PostScript separado ubicado en el mismo directorio que el archivo .

    :argdo hardcopy! >%:p.ps 
    

    Aquí el nombre de un archivo impreso se concatena con el sufijo .ps para obtener el nombre de un archivo PostScript correspondiente (ver :help cmdline-special).

    Para acelerar el comando :argdo -argumento, Vim ignora el evento Syntax AutoCommand añadiéndolo a la lista eventignore. Esto implica que si Syntax autocommands no habían sido calculados para un archivo en la lista de argumentos antes del comando :hardcopy es :argdo ne, la documento impreso correspondiente no tendría un formato con colores (en caso de syntax:y set en printoptions). Para ejecutar Syntax autocomandos para todos los archivos en la lista de argumentos, primero use el siguiente comando .

    :argdo set ei-=Syntax | do Syntax 
    

    Para hacer esto en la misma corrida como la impresión, concatenar los comandos:

    :argdo set ei-=Syntax | do Syntax | hardcopy! >%:p.ps 
    
+0

Como de costumbre, mucho más completo – sehe

+0

Gracias por las respuestas chicos. Esto funciona. –

+0

@ib. Pregunta de seguimiento sobre este. Parece que no puedo hacer resaltar la sintaxis cuando uso este comando. Por lo que puedo decir, lo hace por el primero, pero ninguno de los siguientes lo imprime en PostScript. Preguntándose, ¿por qué es eso? He intentado 'establecer printoptions = sintaxis: y" 'en mi vimrc pero no parece hacer el truco. –

3

Editar Disculpa, he entendido mal antes.

Para imprimir todo, dicen PHP y C# archivos en el directorio de trabajo:

:args ./*.{cs,php} **/*.{cs,php} 
:argdo ha 
+0

Simplemente ': args **/*. {Cs, php}' lo haría, IIRC. – fachexot

Cuestiones relacionadas